ProjectExplorer: Don't rebuild all projects' tree when one is closed

Removes some quadratic-in-number-of-projects behavior on session
close/switch.

Change-Id: If93bb9a67b0bebddda5319a7594a99ae66f50f5a
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
hjk
2017-04-04 14:36:03 +02:00
parent 8cdeed8633
commit 8d1f4834b6
4 changed files with 78 additions and 43 deletions

View File

@@ -477,10 +477,13 @@ void Project::setRootProjectNode(ProjectNode *root)
ProjectNode *oldNode = d->m_rootProjectNode;
d->m_rootProjectNode = root;
if (root)
if (root) {
root->setParentFolderNode(d->m_containerNode);
ProjectTree::emitSubtreeChanged(root);
emit fileListChanged();
// Only announce non-null root, null is only used when project is destroyed.
// In that case SessionManager::projectRemoved() triggers the update.
ProjectTree::emitSubtreeChanged(root);
emit fileListChanged();
}
delete oldNode;
}