From 738bbf1a873fbb5c5debbb871a58631e99ba20e8 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 20 Nov 2019 15:21:54 +0100 Subject: [PATCH] ProjectExplorer: Introduce per-buildsystem setRootProjectNode Currently diverting to the original Project::setRootProjectNode. Idea is to focus on the BuildSystem <-> generated tree relation. Change-Id: I8b20173e364713f0919cf4f8b76a2f79ef8770bb Reviewed-by: Christian Kandeler --- src/plugins/autotoolsprojectmanager/autotoolsbuildsystem.cpp | 2 +- src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp | 2 +- .../compilationdatabaseproject.cpp | 2 +- src/plugins/genericprojectmanager/genericproject.cpp | 2 +- src/plugins/nim/project/nimbuildsystem.cpp | 2 +- src/plugins/projectexplorer/buildsystem.cpp | 5 +++++ src/plugins/projectexplorer/buildsystem.h | 2 ++ src/plugins/python/pythonproject.cpp | 2 +- src/plugins/qbsprojectmanager/qbsproject.cpp | 2 +- src/plugins/qmakeprojectmanager/qmakeproject.cpp | 2 +- src/plugins/qmlprojectmanager/qmlproject.cpp | 2 +- 11 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/plugins/autotoolsprojectmanager/autotoolsbuildsystem.cpp b/src/plugins/autotoolsprojectmanager/autotoolsbuildsystem.cpp index e97da7a1d0b..4e0e10352a4 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsbuildsystem.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsbuildsystem.cpp @@ -146,7 +146,7 @@ void AutotoolsBuildSystem::makefileParsingFinished() newRoot->addNestedNode(std::make_unique(path, FileNode::fileTypeForFileName(path))); } - project()->setRootProjectNode(std::move(newRoot)); + setRootProjectNode(std::move(newRoot)); project()->setExtraProjectFiles(filesToWatch); updateCppCodeModel(); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index 1c86e500484..186e9aac663 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -420,7 +420,7 @@ void CMakeBuildSystem::updateProjectData() { auto newRoot = generateProjectTree(m_allFiles); if (newRoot) { - p->setRootProjectNode(std::move(newRoot)); + setRootProjectNode(std::move(newRoot)); if (p->rootProjectNode()) p->setDisplayName(p->rootProjectNode()->displayName()); diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp index fcf87ab6037..b636ce67378 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp @@ -427,7 +427,7 @@ void CompilationDatabaseBuildSystem::buildTreeAndProjectParts() root->addNode(std::make_unique(Utils::FilePath::fromString(dbContents.extraFileName), FileType::Project)); - project()->setRootProjectNode(std::move(root)); + setRootProjectNode(std::move(root)); m_cppCodeModelUpdater->update({project(), kitInfo, activeParseEnvironment(), rpps}); updateDeploymentData(); diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 6aacd7e805e..c71da8dccb5 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -492,7 +492,7 @@ void GenericBuildSystem::refresh(RefreshOptions options) FileType::Project)); newRoot->compress(); - project()->setRootProjectNode(std::move(newRoot)); + setRootProjectNode(std::move(newRoot)); } refreshCppCodeModel(); diff --git a/src/plugins/nim/project/nimbuildsystem.cpp b/src/plugins/nim/project/nimbuildsystem.cpp index f342a742c8c..3203cd92873 100644 --- a/src/plugins/nim/project/nimbuildsystem.cpp +++ b/src/plugins/nim/project/nimbuildsystem.cpp @@ -154,7 +154,7 @@ void NimBuildSystem::updateProject() auto projectNode = std::make_unique(project()->projectDirectory()); projectNode->setDisplayName(project()->displayName()); projectNode->addNestedNodes(std::move(nodes)); - project()->setRootProjectNode(std::move(projectNode)); + setRootProjectNode(std::move(projectNode)); } // Complete scan diff --git a/src/plugins/projectexplorer/buildsystem.cpp b/src/plugins/projectexplorer/buildsystem.cpp index ffeaf9627f3..18f6bb9f98f 100644 --- a/src/plugins/projectexplorer/buildsystem.cpp +++ b/src/plugins/projectexplorer/buildsystem.cpp @@ -304,6 +304,11 @@ BuildTargetInfo BuildSystem::buildTarget(const QString &buildKey) const }); } +void BuildSystem::setRootProjectNode(std::unique_ptr &&root) +{ + d->m_target->project()->setRootProjectNode(std::move(root)); +} + QString BuildSystem::disabledReason(const QString &buildKey) const { if (hasParsingData()) { diff --git a/src/plugins/projectexplorer/buildsystem.h b/src/plugins/projectexplorer/buildsystem.h index 4007b46c70e..ca9d7acca35 100644 --- a/src/plugins/projectexplorer/buildsystem.h +++ b/src/plugins/projectexplorer/buildsystem.h @@ -87,6 +87,8 @@ public: const QList applicationTargets() const; BuildTargetInfo buildTarget(const QString &buildKey) const; + void setRootProjectNode(std::unique_ptr &&root); + class PROJECTEXPLORER_EXPORT ParseGuard { friend class BuildSystem; diff --git a/src/plugins/python/pythonproject.cpp b/src/plugins/python/pythonproject.cpp index 357438dbb83..afdd1469283 100644 --- a/src/plugins/python/pythonproject.cpp +++ b/src/plugins/python/pythonproject.cpp @@ -222,7 +222,7 @@ void PythonBuildSystem::triggerParsing() appTargets.append(bti); } } - project()->setRootProjectNode(std::move(newRoot)); + setRootProjectNode(std::move(newRoot)); setApplicationTargets(appTargets); diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index b6998fa819e..a0d888bbccc 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -694,7 +694,7 @@ void QbsBuildSystem::rebuildProjectTree() { std::unique_ptr newRoot = Internal::QbsNodeTreeBuilder::buildTree(this); project()->setDisplayName(newRoot ? newRoot->displayName() : projectFilePath().toFileInfo().completeBaseName()); - project()->setRootProjectNode(std::move(newRoot)); + setRootProjectNode(std::move(newRoot)); } void QbsBuildSystem::handleRuleExecutionDone() diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index 0df7b07fcd4..1f9d80f9500 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -490,7 +490,7 @@ void QmakeBuildSystem::decrementPendingEvaluateFutures() m_asyncUpdateFutureInterface.setProgressValue(m_asyncUpdateFutureInterface.progressValue() + 1); if (m_pendingEvaluateFuturesCount == 0) { // We are done! - project()->setRootProjectNode(QmakeNodeTreeBuilder::buildTree(this)); + setRootProjectNode(QmakeNodeTreeBuilder::buildTree(this)); if (!m_rootProFile->validParse()) m_asyncUpdateFutureInterface.reportCanceled(); diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp index afe577487af..1bf927d42fb 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.cpp +++ b/src/plugins/qmlprojectmanager/qmlproject.cpp @@ -363,7 +363,7 @@ void QmlBuildSystem::generateProjectTree() } newRoot->addNestedNode(std::make_unique(projectFilePath(), FileType::Project)); - project()->setRootProjectNode(std::move(newRoot)); + setRootProjectNode(std::move(newRoot)); refreshTargetDirectory(); }