diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp index 5e502f1eeb0..014d52995c4 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp @@ -451,15 +451,11 @@ CMakeBuildStepConfigWidget::CMakeBuildStepConfigWidget(CMakeBuildStep *buildStep connect(m_buildStep->buildConfiguration(), &BuildConfiguration::environmentChanged, this, &CMakeBuildStepConfigWidget::updateDetails); - connect(m_buildStep->project(), &Project::activeProjectConfigurationChanged, - this, [this](ProjectConfiguration *pc) { - if (pc && pc->isActive()) - updateDetails(); - }); - connect(m_buildStep->project(), &Project::activeTargetChanged, this, [this](Target *target) { - if (target && target->isActive()) - updateDetails(); - }); + connect(m_buildStep->project(), &Project::activeBuildConfigurationChanged, + this, &CMakeBuildStepConfigWidget::updateDetails); + + connect(m_buildStep->project(), &Project::activeTargetChanged, + this, &CMakeBuildStepConfigWidget::updateDetails); } void CMakeBuildStepConfigWidget::toolArgumentsEdited() diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 0406c197491..ce4172abeda 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -219,6 +219,10 @@ GenericProject::GenericProject(const Utils::FilePath &fileName) : connect(m_deployFileWatcher, &FileSystemWatcher::fileChanged, this, &GenericProject::updateDeploymentData); + + connect(this, &Project::activeTargetChanged, this, [this] { refresh(Everything); }); + + connect(this, &Project::activeBuildConfigurationChanged, this, [this] { refresh(Everything); }); } GenericProject::~GenericProject() @@ -533,28 +537,6 @@ void GenericProject::updateDeploymentData() } } -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); -} - Project::RestoreResult GenericProject::fromMap(const QVariantMap &map, QString *errorMessage) { const RestoreResult result = Project::fromMap(map, errorMessage); @@ -578,14 +560,6 @@ 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 18d1e238d2c..5725e7eab3e 100644 --- a/src/plugins/genericprojectmanager/genericproject.h +++ b/src/plugins/genericprojectmanager/genericproject.h @@ -72,8 +72,6 @@ private: Utils::FilePath findCommonSourceRoot(); void refreshCppCodeModel(); void updateDeploymentData(); - void activeTargetWasChanged(); - void activeBuildConfigurationWasChanged(); QString m_filesFileName; QString m_includesFileName; @@ -95,7 +93,6 @@ private: CppTools::CppProjectUpdater *m_cppCodeModelUpdater = nullptr; - ProjectExplorer::Target *m_activeTarget = nullptr; Utils::FileSystemWatcher * const m_deployFileWatcher = nullptr; }; diff --git a/src/plugins/ios/iosbuildstep.cpp b/src/plugins/ios/iosbuildstep.cpp index 1f178dc0646..d031db624fd 100644 --- a/src/plugins/ios/iosbuildstep.cpp +++ b/src/plugins/ios/iosbuildstep.cpp @@ -123,11 +123,9 @@ public: this, &IosBuildStepConfigWidget::updateDetails); Project *pro = m_buildStep->target()->project(); - connect(pro, &Project::activeProjectConfigurationChanged, - this, [this](ProjectConfiguration *pc) { - if (pc && pc->isActive()) - updateDetails(); - }); + connect(pro, &Project::activeBuildConfigurationChanged, + this, &IosBuildStepConfigWidget::updateDetails); + connect(pro, &Project::activeTargetChanged, this, [this](Target *target) { if (target && target->isActive()) updateDetails(); diff --git a/src/plugins/ios/iosdsymbuildstep.cpp b/src/plugins/ios/iosdsymbuildstep.cpp index 50c530a4151..6bfb1533970 100644 --- a/src/plugins/ios/iosdsymbuildstep.cpp +++ b/src/plugins/ios/iosdsymbuildstep.cpp @@ -249,11 +249,9 @@ IosDsymBuildStepConfigWidget::IosDsymBuildStepConfigWidget(IosDsymBuildStep *bui connect(m_buildStep->buildConfiguration(), &BuildConfiguration::enabledChanged, this, &IosDsymBuildStepConfigWidget::updateDetails); - connect(pro, &Project::activeProjectConfigurationChanged, - this, [this](ProjectConfiguration *pc) { - if (pc && pc->isActive()) - updateDetails(); - }); + connect(pro, &Project::activeBuildConfigurationChanged, + this, &IosDsymBuildStepConfigWidget::updateDetails); + connect(pro, &Project::activeTargetChanged, this, [this](Target *target) { if (target && target->isActive()) updateDetails(); diff --git a/src/plugins/projectexplorer/makestep.cpp b/src/plugins/projectexplorer/makestep.cpp index c1a97a5f04b..5122dfdc208 100644 --- a/src/plugins/projectexplorer/makestep.cpp +++ b/src/plugins/projectexplorer/makestep.cpp @@ -422,13 +422,10 @@ MakeStepConfigWidget::MakeStepConfigWidget(MakeStep *makeStep) connect(m_makeStep->buildConfiguration(), &BuildConfiguration::buildDirectoryChanged, this, &MakeStepConfigWidget::updateDetails); - const auto pro = m_makeStep->target()->project(); - connect(pro, &Project::activeProjectConfigurationChanged, - this, [this](ProjectConfiguration *pc) { - if (pc && pc->isActive()) { - updateDetails(); - } - }); + const auto pro = m_makeStep->project(); + connect(pro, &Project::activeBuildConfigurationChanged, + this, &MakeStepConfigWidget::updateDetails); + connect(pro, &Project::activeTargetChanged, this, [this](Target *target) { if (target && target->isActive()) updateDetails(); diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h index 57dcb7cd6f9..4c962b3a16a 100644 --- a/src/plugins/projectexplorer/project.h +++ b/src/plugins/projectexplorer/project.h @@ -215,10 +215,10 @@ signals: void removedProjectConfiguration(ProjectExplorer::ProjectConfiguration *pc); void addedProjectConfiguration(ProjectExplorer::ProjectConfiguration *pc); - // *ANY* active project configuration changed somewhere in the tree. This might not be + // *ANY* active build configuration changed somewhere in the tree. This might not be // the one that would get started right now, since some part of the tree in between might // not be active. - void activeProjectConfigurationChanged(ProjectExplorer::ProjectConfiguration *pc); + void activeBuildConfigurationChanged(ProjectExplorer::ProjectConfiguration *bc); void aboutToRemoveTarget(ProjectExplorer::Target *target); void removedTarget(ProjectExplorer::Target *target); diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp index 01a5362d30d..b226a81ed50 100644 --- a/src/plugins/projectexplorer/target.cpp +++ b/src/plugins/projectexplorer/target.cpp @@ -279,7 +279,7 @@ void Target::setActiveBuildConfiguration(BuildConfiguration *bc) (bc && d->m_buildConfigurations.contains(bc) && bc != d->m_activeBuildConfiguration)) { d->m_activeBuildConfiguration = bc; - project()->activeProjectConfigurationChanged(d->m_activeBuildConfiguration); + project()->activeBuildConfigurationChanged(d->m_activeBuildConfiguration); emit activeBuildConfigurationChanged(d->m_activeBuildConfiguration); } } @@ -351,7 +351,6 @@ void Target::setActiveDeployConfiguration(DeployConfiguration *dc) (dc && d->m_deployConfigurations.contains(dc) && dc != d->m_activeDeployConfiguration)) { d->m_activeDeployConfiguration = dc; - project()->activeProjectConfigurationChanged(d->m_activeDeployConfiguration); emit activeDeployConfigurationChanged(d->m_activeDeployConfiguration); } updateDeviceState(); @@ -457,7 +456,6 @@ void Target::setActiveRunConfiguration(RunConfiguration *rc) (rc && d->m_runConfigurations.contains(rc) && rc != d->m_activeRunConfiguration)) { d->m_activeRunConfiguration = rc; - project()->activeProjectConfigurationChanged(d->m_activeRunConfiguration); emit activeRunConfigurationChanged(d->m_activeRunConfiguration); } updateDeviceState(); diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index 1418147d80b..f9607429e73 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -146,11 +146,9 @@ QbsProject::QbsProject(const FilePath &fileName) : } m_qbsProjects.erase(it); }); - auto delayedParsing = [this]() { - if (static_cast(sender())->isActive()) - delayParsing(); - }; - subscribeSignal(&Target::activeBuildConfigurationChanged, this, delayedParsing); + + connect(this, &Project::activeBuildConfigurationChanged, + this, &QbsProject::delayParsing); connect(&m_parsingDelay, &QTimer::timeout, this, &QbsProject::startParsing); } diff --git a/src/plugins/qmakeprojectmanager/qmakeprojectconfigwidget.cpp b/src/plugins/qmakeprojectmanager/qmakeprojectconfigwidget.cpp index e0aeaf832e3..28d63fb8a2c 100644 --- a/src/plugins/qmakeprojectmanager/qmakeprojectconfigwidget.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeprojectconfigwidget.cpp @@ -149,11 +149,9 @@ QmakeProjectConfigWidget::QmakeProjectConfigWidget(QmakeBuildConfiguration *bc) connect(bc, &BuildConfiguration::enabledChanged, this, &QmakeProjectConfigWidget::environmentChanged); - connect(project, &Project::activeProjectConfigurationChanged, - this, [this](ProjectConfiguration *pc) { - if (pc && pc->isActive()) - environmentChanged(); - }); + connect(project, &Project::activeBuildConfigurationChanged, + this, &QmakeProjectConfigWidget::environmentChanged); + connect(project, &Project::activeTargetChanged, this, [this](Target *target) { if (target && target->isActive()) environmentChanged();