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 <christian.kandeler@qt.io>
This commit is contained in:
Tobias Hunger
2017-04-27 11:46:56 +02:00
parent 72f769c9ba
commit 7c8125b480
2 changed files with 13 additions and 4 deletions

View File

@@ -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";

View File

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