forked from qt-creator/qt-creator
ProjectTree: Fix crash working with resources
Fix the notification of subtree changes to keep the project in the loop, so that it can adjust its list of known files. Ignoring that will cause crashes, e.g. when the ResourceEditor updates its subtree of the project. Task-number: QTCREATORBUG-19613 Change-Id: Ib7bb9afe48eb248cdf675ba2093b266fd728d7b2 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -628,7 +628,7 @@ bool FolderNode::replaceSubtree(Node *oldNode, Node *newNode)
|
||||
}
|
||||
QTimer::singleShot(0, [oldNode]() { delete oldNode; });
|
||||
}
|
||||
ProjectTree::emitSubtreeChanged(this);
|
||||
handleSubTreeChanged(this);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -879,6 +879,12 @@ bool FolderNode::isEmpty() const
|
||||
return m_nodes.isEmpty();
|
||||
}
|
||||
|
||||
void FolderNode::handleSubTreeChanged(FolderNode *node)
|
||||
{
|
||||
if (FolderNode *parent = parentFolderNode())
|
||||
parent->handleSubTreeChanged(node);
|
||||
}
|
||||
|
||||
ContainerNode::ContainerNode(Project *project)
|
||||
: FolderNode(project->projectDirectory(), NodeType::Project), m_project(project)
|
||||
{}
|
||||
@@ -915,4 +921,9 @@ void ContainerNode::removeAllChildren()
|
||||
m_nodes.clear();
|
||||
}
|
||||
|
||||
void ContainerNode::handleSubTreeChanged(FolderNode *node)
|
||||
{
|
||||
m_project->handleSubTreeChanged(node);
|
||||
}
|
||||
|
||||
} // namespace ProjectExplorer
|
||||
|
||||
Reference in New Issue
Block a user