diff options
author | Tobias Hunger <tobias.hunger@qt.io> | 2017-03-10 10:20:53 +0100 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@qt.io> | 2017-03-10 16:44:07 +0000 |
commit | c63805668fa92db4062b5d5f92c033151c3699e3 (patch) | |
tree | 3c2006c7a7f8f9a5cc5bccd3d09dc6e96b16dff3 /src/plugins/projectexplorer/projecttree.cpp | |
parent | 393cb16a207533c9fb5492bf22a30932cd850cfa (diff) |
ProjectTree: Add a way to register managers for subtrees
Change-Id: I4694bb7dbe75b67946cdb5d8ca8b5a3ff1e40659
Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'src/plugins/projectexplorer/projecttree.cpp')
-rw-r--r-- | src/plugins/projectexplorer/projecttree.cpp | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/src/plugins/projectexplorer/projecttree.cpp b/src/plugins/projectexplorer/projecttree.cpp index 62301525ebf..86d8ef1d269 100644 --- a/src/plugins/projectexplorer/projecttree.cpp +++ b/src/plugins/projectexplorer/projecttree.cpp @@ -261,8 +261,9 @@ void ProjectTree::updateContext() void ProjectTree::emitSubtreeChanged(FolderNode *node) { - if (!s_instance->isInNodeHierarchy(node)) + if (!SessionManager::sessionNode()->isAncesterOf(node)) return; + emit s_instance->subtreeChanged(node); } @@ -358,7 +359,6 @@ void ProjectTree::showContextMenu(ProjectTreeWidget *focus, const QPoint &global void ProjectTree::highlightProject(Project *project, const QString &message) { - Core::ModeManager::activateMode(Core::Constants::MODE_EDIT); // Shows and focusses a project tree @@ -368,20 +368,24 @@ void ProjectTree::highlightProject(Project *project, const QString &message) projectTreeWidget->showMessage(project->rootProjectNode(), message); } -void ProjectTree::hideContextMenu() +void ProjectTree::registerTreeManager(const TreeManagerFunction &treeChange) { - m_focusForContextMenu = nullptr; + if (treeChange) + s_instance->m_treeManagers.append(treeChange); } -bool ProjectTree::isInNodeHierarchy(Node *n) +void ProjectTree::applyTreeManager(FolderNode *folder) { - Node *sessionNode = SessionManager::sessionNode(); - do { - if (n == sessionNode) - return true; - n = n->parentFolderNode(); - } while (n); - return false; + if (!folder) + return; + + for (TreeManagerFunction &f : s_instance->m_treeManagers) + f(folder); +} + +void ProjectTree::hideContextMenu() +{ + m_focusForContextMenu = nullptr; } } // namespace ProjectExplorer |