diff --git a/qtpropertybrowser/src/qtpropertybrowser.cpp b/qtpropertybrowser/src/qtpropertybrowser.cpp index 738bfbf..7e2ee72 100644 --- a/qtpropertybrowser/src/qtpropertybrowser.cpp +++ b/qtpropertybrowser/src/qtpropertybrowser.cpp @@ -1732,6 +1732,27 @@ QtAbstractPropertyBrowser::QtAbstractPropertyBrowser(QWidget *parent) */ QtAbstractPropertyBrowser::~QtAbstractPropertyBrowser() { + //perform clean ups + Map1::iterator mf = (*m_viewToManagerToFactory()).find(this); + if (mf != (*m_viewToManagerToFactory()).end()) + { + for (Map1::mapped_type::iterator f = mf->begin(); f != mf->end(); ++f) + { + Map2::iterator fv = (*m_managerToFactoryToViews).find(f.key()); + if (fv != (*m_managerToFactoryToViews).end()) + { + Map2::mapped_type::iterator v = fv->find(*f); + v->removeAll(this); + if (v->empty()) + fv->erase(v); + + if (fv->empty()) + (*m_managerToFactoryToViews).erase(fv); + } + } + (*m_viewToManagerToFactory()).erase(mf); + } + QList indexes = topLevelItems(); QListIterator itItem(indexes); while (itItem.hasNext())