aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/projecttree.cpp
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@qt.io>2017-03-10 10:20:53 +0100
committerTobias Hunger <tobias.hunger@qt.io>2017-03-10 16:44:07 +0000
commitc63805668fa92db4062b5d5f92c033151c3699e3 (patch)
tree3c2006c7a7f8f9a5cc5bccd3d09dc6e96b16dff3 /src/plugins/projectexplorer/projecttree.cpp
parent393cb16a207533c9fb5492bf22a30932cd850cfa (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.cpp28
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