From 8911fa47051b3c2e59a47ca8b67494f25358daae 2012-09-21 07:38:38 From: Jani Honkonen Date: 2012-09-21 07:38:38 Subject: [PATCH] bugfix: pie does not disconnect signals when a slice is taken (not deleted) --- diff --git a/src/piechart/piechartitem.cpp b/src/piechart/piechartitem.cpp index f980a9a..5d1ccfe 100644 --- a/src/piechart/piechartitem.cpp +++ b/src/piechart/piechartitem.cpp @@ -197,6 +197,8 @@ void PieChartItem::handleSlicesRemoved(QList slices) continue; m_sliceItems.remove(slice); + slice->disconnect(this); + QPieSlicePrivate::fromSlice(slice)->disconnect(this); if (m_animation) presenter()->startAnimation(m_animation->removeSlice(sliceItem)); // animator deletes the PieSliceItem diff --git a/src/piechart/qpieseries.cpp b/src/piechart/qpieseries.cpp index a425c22..f25c77a 100644 --- a/src/piechart/qpieseries.cpp +++ b/src/piechart/qpieseries.cpp @@ -532,6 +532,7 @@ bool QPieSeries::take(QPieSlice* slice) return false; QPieSlicePrivate::fromSlice(slice)->m_series = 0; + slice->disconnect(d); d->updateDerivativeData(); @@ -551,15 +552,16 @@ void QPieSeries::clear() return; QList slices = d->m_slices; - foreach (QPieSlice* s, d->m_slices) { + foreach (QPieSlice* s, d->m_slices) d->m_slices.removeOne(s); - delete s; - } d->updateDerivativeData(); emit removed(slices); emit countChanged(); + + foreach (QPieSlice* s, slices) + delete s; } /*!