diff options
author | Tobias Hunger <tobias.hunger@nokia.com> | 2011-02-25 18:01:51 +0100 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@nokia.com> | 2011-02-25 18:05:48 +0100 |
commit | 784088618917177c0e70ed08c2cc67e13ac984e3 (patch) | |
tree | 364dcec1bc17dd43aab32dcfb14e7417dc6e2549 /src/plugins/projectexplorer/toolchainoptionspage.cpp | |
parent | 5200731514e86ddf72c3fc3dc8e090a95358d987 (diff) | |
download | qt-creator-784088618917177c0e70ed08c2cc67e13ac984e3.tar.gz |
ToolChainOPtionsPage: Make sure parents are cleared
Make sure parent pointers are cleared when removing nodes.
Diffstat (limited to 'src/plugins/projectexplorer/toolchainoptionspage.cpp')
-rw-r--r-- | src/plugins/projectexplorer/toolchainoptionspage.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/plugins/projectexplorer/toolchainoptionspage.cpp b/src/plugins/projectexplorer/toolchainoptionspage.cpp index 2b160fef1a..4ac0fb8604 100644 --- a/src/plugins/projectexplorer/toolchainoptionspage.cpp +++ b/src/plugins/projectexplorer/toolchainoptionspage.cpp @@ -70,9 +70,14 @@ public: ~ToolChainNode() { + if (parent) + parent->childNodes.removeOne(this); + qDeleteAll(childNodes); // Do not delete toolchain, we do not own it. - delete widget; + + Q_ASSERT(childNodes.isEmpty()); + widget->deleteLater(); } ToolChainNode *parent; @@ -283,6 +288,7 @@ void ToolChainModel::apply() // Remove unused ToolChains: QList<ToolChainNode *> nodes = m_toRemoveList; foreach (ToolChainNode *n, nodes) { + Q_ASSERT(!n->parent); ToolChainManager::instance()->deregisterToolChain(n->toolChain); } Q_ASSERT(m_toRemoveList.isEmpty()); @@ -328,11 +334,13 @@ void ToolChainModel::markForRemoval(ToolChain *tc) if (node) { emit beginRemoveRows(index(m_manualRoot), m_manualRoot->childNodes.indexOf(node), m_manualRoot->childNodes.indexOf(node)); m_manualRoot->childNodes.removeOne(node); + node->parent = 0; if (m_toAddList.contains(node)) { delete node->toolChain; node->toolChain = 0; m_toAddList.removeOne(node); } else { + node->parent = 0; m_toRemoveList.append(node); } emit endRemoveRows(); |