diff options
author | Bradley T. Hughes <bradley.hughes@nokia.com> | 2009-06-22 08:38:59 (GMT) |
---|---|---|
committer | Bradley T. Hughes <bradley.hughes@nokia.com> | 2009-06-22 08:38:59 (GMT) |
commit | 252ea664604c85a5e993d28ee32d2aa0da7eca85 (patch) | |
tree | 0819bdd6e3614048faa8f2739299fb4be4301795 /src/gui/itemviews/qitemeditorfactory.cpp | |
parent | 31ac8ea4a7a5360a01c2fc1f8f930ae8b236c94b (diff) | |
parent | fe48ca11f7da7200c052a7825ad4d46319b13cc5 (diff) | |
download | Qt-252ea664604c85a5e993d28ee32d2aa0da7eca85.zip Qt-252ea664604c85a5e993d28ee32d2aa0da7eca85.tar.gz Qt-252ea664604c85a5e993d28ee32d2aa0da7eca85.tar.bz2 |
Merge branch 'master' of git@scm.dev.nokia.troll.no:qt/qt
Conflicts:
doc/src/qnamespace.qdoc
src/corelib/global/qnamespace.h
src/gui/graphicsview/qgraphicsscene.cpp
Diffstat (limited to 'src/gui/itemviews/qitemeditorfactory.cpp')
-rw-r--r-- | src/gui/itemviews/qitemeditorfactory.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/gui/itemviews/qitemeditorfactory.cpp b/src/gui/itemviews/qitemeditorfactory.cpp index c576e40..480a472 100644 --- a/src/gui/itemviews/qitemeditorfactory.cpp +++ b/src/gui/itemviews/qitemeditorfactory.cpp @@ -158,6 +158,10 @@ QByteArray QItemEditorFactory::valuePropertyName(QVariant::Type type) const */ QItemEditorFactory::~QItemEditorFactory() { + //we make sure we delete all the QItemEditorCreatorBase + //this has to be done only once, hence the QSet + QSet<QItemEditorCreatorBase*> set = creatorMap.values().toSet(); + qDeleteAll(set); } /*! @@ -170,8 +174,16 @@ QItemEditorFactory::~QItemEditorFactory() */ void QItemEditorFactory::registerEditor(QVariant::Type type, QItemEditorCreatorBase *creator) { - delete creatorMap.value(type, 0); - creatorMap[type] = creator; + QHash<QVariant::Type, QItemEditorCreatorBase *>::iterator it = creatorMap.find(type); + if (it != creatorMap.end()) { + QItemEditorCreatorBase *oldCreator = it.value(); + Q_ASSERT(oldCreator); + creatorMap.erase(it); + if (!creatorMap.values().contains(oldCreator)) + delete oldCreator; // if it is no more in use we can delete it + } + + creatorMap[type] = creator; } class QDefaultItemEditorFactory : public QItemEditorFactory |