summaryrefslogtreecommitdiff
path: root/src/plugins/projectexplorer/toolchainoptionspage.cpp
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@nokia.com>2011-02-25 18:01:51 +0100
committerTobias Hunger <tobias.hunger@nokia.com>2011-02-25 18:05:48 +0100
commit784088618917177c0e70ed08c2cc67e13ac984e3 (patch)
tree364dcec1bc17dd43aab32dcfb14e7417dc6e2549 /src/plugins/projectexplorer/toolchainoptionspage.cpp
parent5200731514e86ddf72c3fc3dc8e090a95358d987 (diff)
downloadqt-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.cpp10
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();