From 7c8125b48085ca9ca1a0cbc5afdd08b416e6a727 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Thu, 27 Apr 2017 11:46:56 +0200 Subject: [PATCH] Qbs: Set displayName from rootProjectNode Set the displayName of QbsProjects from the rootProjectNode if that exists. This fixes the project name not updating based on the name set inside the qbs files. Extract that into a new method so that it can be used consistently. Task-number: QTCREATORBUG-18100 Change-Id: I417264ee8843a9e0665bbc190f1dbc7869eed0e9 Reviewed-by: Christian Kandeler --- src/plugins/qbsprojectmanager/qbsproject.cpp | 15 +++++++++++---- src/plugins/qbsprojectmanager/qbsproject.h | 2 ++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index ad243feb9d3..170965ad18f 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -132,7 +132,7 @@ QbsProject::QbsProject(const FileName &fileName) : setProjectContext(Context(Constants::PROJECT_ID)); setProjectLanguages(Context(ProjectExplorer::Constants::CXX_LANGUAGE_ID)); - setDisplayName(fileName.toFileInfo().completeBaseName()); + rebuildProjectTree(); connect(this, &Project::activeTargetChanged, this, &QbsProject::changeActiveTarget); connect(this, &Project::addedTarget, this, &QbsProject::targetWasAdded); @@ -254,7 +254,7 @@ bool QbsProject::addFilesToProduct(const QStringList &filePaths, } if (notAdded->count() != filePaths.count()) { m_projectData = m_qbsProject.projectData(); - setRootProjectNode(Internal::QbsNodeTreeBuilder::buildTree(this)); + rebuildProjectTree(); } return notAdded->isEmpty(); } @@ -281,7 +281,7 @@ bool QbsProject::removeFilesFromProduct(const QStringList &filePaths, } if (notRemoved->count() != filePaths.count()) { m_projectData = m_qbsProject.projectData(); - setRootProjectNode(Internal::QbsNodeTreeBuilder::buildTree(this)); + rebuildProjectTree(); emit fileListChanged(); } return notRemoved->isEmpty(); @@ -431,7 +431,7 @@ void QbsProject::updateAfterParse() void QbsProject::updateProjectNodes() { OpTimer opTimer("updateProjectNodes"); - setRootProjectNode(Internal::QbsNodeTreeBuilder::buildTree(this)); + rebuildProjectTree(); } void QbsProject::handleQbsParsingDone(bool success) @@ -472,6 +472,13 @@ void QbsProject::handleQbsParsingDone(bool success) emit parsingFinished(); } +void QbsProject::rebuildProjectTree() +{ + QbsProjectNode *newRoot = Internal::QbsNodeTreeBuilder::buildTree(this); + setDisplayName(newRoot ? newRoot->displayName() : projectFilePath().toFileInfo().completeBaseName()); + setRootProjectNode(newRoot); +} + void QbsProject::handleRuleExecutionDone() { qCDebug(qbsPmLog) << "Rule execution done"; diff --git a/src/plugins/qbsprojectmanager/qbsproject.h b/src/plugins/qbsprojectmanager/qbsproject.h index 1214968f041..a13fdf698ae 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.h +++ b/src/plugins/qbsprojectmanager/qbsproject.h @@ -113,6 +113,8 @@ signals: private: void handleQbsParsingDone(bool success); + void rebuildProjectTree(); + void targetWasAdded(ProjectExplorer::Target *t); void targetWasRemoved(ProjectExplorer::Target *t); void changeActiveTarget(ProjectExplorer::Target *t);