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 <christian.kandeler@qt.io>
This commit is contained in:
hjk
2019-11-20 15:21:54 +01:00
parent 7dec498323
commit 738bbf1a87
11 changed files with 16 additions and 9 deletions

View File

@@ -146,7 +146,7 @@ void AutotoolsBuildSystem::makefileParsingFinished()
newRoot->addNestedNode(std::make_unique<FileNode>(path,
FileNode::fileTypeForFileName(path)));
}
project()->setRootProjectNode(std::move(newRoot));
setRootProjectNode(std::move(newRoot));
project()->setExtraProjectFiles(filesToWatch);
updateCppCodeModel();

View File

@@ -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());

View File

@@ -427,7 +427,7 @@ void CompilationDatabaseBuildSystem::buildTreeAndProjectParts()
root->addNode(std::make_unique<FileNode>(Utils::FilePath::fromString(dbContents.extraFileName),
FileType::Project));
project()->setRootProjectNode(std::move(root));
setRootProjectNode(std::move(root));
m_cppCodeModelUpdater->update({project(), kitInfo, activeParseEnvironment(), rpps});
updateDeploymentData();

View File

@@ -492,7 +492,7 @@ void GenericBuildSystem::refresh(RefreshOptions options)
FileType::Project));
newRoot->compress();
project()->setRootProjectNode(std::move(newRoot));
setRootProjectNode(std::move(newRoot));
}
refreshCppCodeModel();

View File

@@ -154,7 +154,7 @@ void NimBuildSystem::updateProject()
auto projectNode = std::make_unique<ProjectNode>(project()->projectDirectory());
projectNode->setDisplayName(project()->displayName());
projectNode->addNestedNodes(std::move(nodes));
project()->setRootProjectNode(std::move(projectNode));
setRootProjectNode(std::move(projectNode));
}
// Complete scan

View File

@@ -304,6 +304,11 @@ BuildTargetInfo BuildSystem::buildTarget(const QString &buildKey) const
});
}
void BuildSystem::setRootProjectNode(std::unique_ptr<ProjectNode> &&root)
{
d->m_target->project()->setRootProjectNode(std::move(root));
}
QString BuildSystem::disabledReason(const QString &buildKey) const
{
if (hasParsingData()) {

View File

@@ -87,6 +87,8 @@ public:
const QList<BuildTargetInfo> applicationTargets() const;
BuildTargetInfo buildTarget(const QString &buildKey) const;
void setRootProjectNode(std::unique_ptr<ProjectNode> &&root);
class PROJECTEXPLORER_EXPORT ParseGuard
{
friend class BuildSystem;

View File

@@ -222,7 +222,7 @@ void PythonBuildSystem::triggerParsing()
appTargets.append(bti);
}
}
project()->setRootProjectNode(std::move(newRoot));
setRootProjectNode(std::move(newRoot));
setApplicationTargets(appTargets);

View File

@@ -694,7 +694,7 @@ void QbsBuildSystem::rebuildProjectTree()
{
std::unique_ptr<QbsRootProjectNode> 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()

View File

@@ -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();

View File

@@ -363,7 +363,7 @@ void QmlBuildSystem::generateProjectTree()
}
newRoot->addNestedNode(std::make_unique<FileNode>(projectFilePath(), FileType::Project));
project()->setRootProjectNode(std::move(newRoot));
setRootProjectNode(std::move(newRoot));
refreshTargetDirectory();
}