Skip to content

Commit

Permalink
Qbs: Fix reparsing triggered by RunConfiguration changes
Browse files Browse the repository at this point in the history
Task-number: QTCREATORBUG-18999
Change-Id: Ib44735d378029a30163ff2a5833d893bc0eb88c6
Reviewed-by: Christian Kandeler <[email protected]>
  • Loading branch information
hunger committed Oct 4, 2017
1 parent 3eb8c88 commit 2966b73
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 26 deletions.
33 changes: 9 additions & 24 deletions src/plugins/qbsprojectmanager/qbsproject.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -138,17 +138,17 @@ QbsProject::QbsProject(const FileName &fileName) :
rebuildProjectTree();

connect(this, &Project::activeTargetChanged, this, &QbsProject::changeActiveTarget);
connect(this, &Project::addedTarget, this, &QbsProject::targetWasAdded);
connect(this, &Project::removedTarget, this, &QbsProject::targetWasRemoved);
subscribeSignal(&BuildConfiguration::environmentChanged, this, [this]() {
connect(this, &Project::addedTarget,
this, [this](Target *t) { m_qbsProjects.insert(t, qbs::Project()); });
connect(this, &Project::removedTarget,
this, [this](Target *t) {m_qbsProjects.remove(t); });
auto delayedParsing = [this]() {
if (static_cast<BuildConfiguration *>(sender())->isActive())
delayParsing();
});
connect(this, &Project::activeProjectConfigurationChanged,
this, [this](ProjectConfiguration *pc) {
if (pc && pc->isActive())
delayParsing();
});
};
subscribeSignal(&BuildConfiguration::environmentChanged, this, delayedParsing);
subscribeSignal(&BuildConfiguration::buildDirectoryChanged, this, delayedParsing);
subscribeSignal(&Target::activeBuildConfigurationChanged, this, delayedParsing);

connect(&m_parsingDelay, &QTimer::timeout, this, &QbsProject::startParsing);

Expand Down Expand Up @@ -540,21 +540,6 @@ void QbsProject::handleRuleExecutionDone()
updateAfterParse();
}

void QbsProject::targetWasAdded(Target *t)
{
m_qbsProjects.insert(t, qbs::Project());
connect(t, &Target::activeBuildConfigurationChanged, this, &QbsProject::delayParsing);
t->subscribeSignal(&BuildConfiguration::buildDirectoryChanged, this, [this]() {
if (static_cast<BuildConfiguration *>(sender())->isActive())
delayParsing();
});
}

void QbsProject::targetWasRemoved(Target *t)
{
m_qbsProjects.remove(t);
}

void QbsProject::changeActiveTarget(Target *t)
{
BuildConfiguration *bc = 0;
Expand Down
2 changes: 0 additions & 2 deletions src/plugins/qbsprojectmanager/qbsproject.h
Original file line number Diff line number Diff line change
Expand Up @@ -118,8 +118,6 @@ class QbsProject : public ProjectExplorer::Project

void rebuildProjectTree();

void targetWasAdded(ProjectExplorer::Target *t);
void targetWasRemoved(ProjectExplorer::Target *t);
void changeActiveTarget(ProjectExplorer::Target *t);
void buildConfigurationChanged(ProjectExplorer::BuildConfiguration *bc);
void startParsing();
Expand Down

0 comments on commit 2966b73

Please sign in to comment.