diff --git a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp index a91ef860dd8..1d96dad7f91 100644 --- a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp +++ b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp @@ -33,6 +33,8 @@ #include #include +#include + #include using namespace ProjectExplorer; @@ -708,6 +710,7 @@ FileApiQtcData extractData(FileApiData &input, result.projectParts = generateRawProjectParts(data, sourceDirectory); auto pair = generateRootProjectNode(data, sourceDirectory, buildDirectory); + ProjectTree::applyTreeManager(pair.first.get()); // QRC nodes result.rootProjectNode = std::move(pair.first); result.knownHeaders = std::move(pair.second); diff --git a/src/plugins/projectexplorer/projecttree.cpp b/src/plugins/projectexplorer/projecttree.cpp index 4fc9b99f5d3..30b9af0e9f1 100644 --- a/src/plugins/projectexplorer/projecttree.cpp +++ b/src/plugins/projectexplorer/projecttree.cpp @@ -391,6 +391,11 @@ void ProjectTree::highlightProject(Project *project, const QString &message) projectTreeWidget->showMessage(project->rootProjectNode(), message); } +/*! + Registers the function \a treeChange to be run on a (sub tree of the) + project tree when it is created. The function must be thread-safe, and + applying the function on the same tree a second time must be a no-op. +*/ void ProjectTree::registerTreeManager(const TreeManagerFunction &treeChange) { if (treeChange) diff --git a/src/plugins/projectexplorer/treescanner.cpp b/src/plugins/projectexplorer/treescanner.cpp index 4f2eb958681..10617776016 100644 --- a/src/plugins/projectexplorer/treescanner.cpp +++ b/src/plugins/projectexplorer/treescanner.cpp @@ -27,6 +27,7 @@ #include "projectexplorerconstants.h" #include "projectnodeshelper.h" +#include "projecttree.h" #include #include @@ -158,6 +159,7 @@ static std::unique_ptr createFolderNode(const Utils::FilePath &direc std::unique_ptr node(fn->clone()); fileSystemNode->addNestedNode(std::move(node)); } + ProjectTree::applyTreeManager(fileSystemNode.get()); // QRC nodes return fileSystemNode; } diff --git a/src/plugins/qbsprojectmanager/qbsnodetreebuilder.cpp b/src/plugins/qbsprojectmanager/qbsnodetreebuilder.cpp index 3f2bc66d40e..c481975753f 100644 --- a/src/plugins/qbsprojectmanager/qbsnodetreebuilder.cpp +++ b/src/plugins/qbsprojectmanager/qbsnodetreebuilder.cpp @@ -36,6 +36,8 @@ #include #include +#include + using namespace ProjectExplorer; using namespace Utils; @@ -230,6 +232,7 @@ QbsProjectNode *QbsNodeTreeBuilder::buildTree(const QString &projectName, } buildSystemFiles->compress(); root->addNode(std::move(buildSystemFiles)); + ProjectTree::applyTreeManager(root.get()); // QRC nodes return root.release(); }