diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index b0e12679bfc..24babea35ef 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -366,6 +366,28 @@ void GenericProject::refreshCppCodeModel() m_codeModelFuture = modelManager->updateProjectInfo(pInfo); } +void GenericProject::activeTargetWasChanged() +{ + if (m_activeTarget) { + disconnect(m_activeTarget, &Target::activeBuildConfigurationChanged, + this, &GenericProject::activeBuildConfigurationWasChanged); + } + + m_activeTarget = activeTarget(); + + if (!m_activeTarget) + return; + + connect(m_activeTarget, &Target::activeBuildConfigurationChanged, + this, &GenericProject::activeBuildConfigurationWasChanged); + refresh(Everything); +} + +void GenericProject::activeBuildConfigurationWasChanged() +{ + refresh(Everything); +} + QStringList GenericProject::projectIncludePaths() const { return m_projectIncludePaths; @@ -422,6 +444,14 @@ Project::RestoreResult GenericProject::fromMap(const QVariantMap &map, QString * t->addRunConfiguration(new CustomExecutableRunConfiguration(t)); } + m_activeTarget = activeTarget(); + if (m_activeTarget) { + connect(m_activeTarget, &Target::activeBuildConfigurationChanged, + this, &GenericProject::activeBuildConfigurationWasChanged); + } + + connect(this, &Project::activeTargetChanged, + this, &GenericProject::activeTargetWasChanged); refresh(Everything); return RestoreResult::Ok; } diff --git a/src/plugins/genericprojectmanager/genericproject.h b/src/plugins/genericprojectmanager/genericproject.h index f692ab395b7..59655c39cdf 100644 --- a/src/plugins/genericprojectmanager/genericproject.h +++ b/src/plugins/genericprojectmanager/genericproject.h @@ -88,6 +88,8 @@ private: QHash *map = nullptr) const; void refreshCppCodeModel(); + void activeTargetWasChanged(); + void activeBuildConfigurationWasChanged(); QString m_filesFileName; QString m_includesFileName; @@ -103,6 +105,8 @@ private: QStringList m_projectIncludePaths; QFuture m_codeModelFuture; + + ProjectExplorer::Target *m_activeTarget = nullptr; }; class GenericProjectFile : public Core::IDocument