diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp index 5efcd81532b..a2081531d44 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp @@ -88,6 +88,13 @@ QbsBuildConfiguration::QbsBuildConfiguration(Target *target, Core::Id id) connect(project(), &Project::parsingStarted, this, &BuildConfiguration::enabledChanged); connect(project(), &Project::parsingFinished, this, &BuildConfiguration::enabledChanged); + + connect(this, &BuildConfiguration::environmentChanged, + this, &QbsBuildConfiguration::triggerReparseIfActive); + connect(this, &BuildConfiguration::buildDirectoryChanged, + this, &QbsBuildConfiguration::triggerReparseIfActive); + connect(this, &QbsBuildConfiguration::qbsConfigurationChanged, + this, &QbsBuildConfiguration::triggerReparseIfActive); } void QbsBuildConfiguration::initialize(const BuildInfo &info) @@ -129,6 +136,12 @@ void QbsBuildConfiguration::initialize(const BuildInfo &info) emit qbsConfigurationChanged(); } +void QbsBuildConfiguration::triggerReparseIfActive() +{ + if (isActive()) + qbsProject()->delayParsing(); +} + bool QbsBuildConfiguration::fromMap(const QVariantMap &map) { if (!BuildConfiguration::fromMap(map)) diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h index 702e03ce4e9..6e74540a399 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h @@ -78,6 +78,7 @@ signals: private: bool fromMap(const QVariantMap &map) override; + void triggerReparseIfActive(); QStringList m_changedFiles; QStringList m_activeFileTags; diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index 8aa7480cf96..1418147d80b 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -150,9 +150,6 @@ QbsProject::QbsProject(const FilePath &fileName) : if (static_cast(sender())->isActive()) delayParsing(); }; - subscribeSignal(&BuildConfiguration::environmentChanged, this, delayedParsing); - subscribeSignal(&BuildConfiguration::buildDirectoryChanged, this, delayedParsing); - subscribeSignal(&QbsBuildConfiguration::qbsConfigurationChanged, this, delayedParsing); subscribeSignal(&Target::activeBuildConfigurationChanged, this, delayedParsing); connect(&m_parsingDelay, &QTimer::timeout, this, &QbsProject::startParsing);