From 1de548d1cbb43667b0e30f3eec92af1bc2a396df Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 3 May 2019 16:58:17 +0200 Subject: [PATCH] Revert "ProjectExplorer: Upstream CMake's handling of outdated builds" This reverts commit 8536504caa216e599a6332261cd9fcafcbba296c. Break CustomRunConfigurations. Change-Id: I43020bd34780cb5fd02bbe640a817370d73cca18 Reviewed-by: Alessandro Portale --- .../cmakerunconfiguration.cpp | 22 +++++++++++++++++++ .../cmakerunconfiguration.h | 5 +++++ .../projectexplorer/runconfiguration.cpp | 13 +++-------- src/plugins/projectexplorer/target.cpp | 7 ------ src/plugins/projectexplorer/target.h | 1 - 5 files changed, 30 insertions(+), 18 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp index c2f111bb3c4..f3406f36088 100644 --- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp @@ -76,6 +76,28 @@ void CMakeRunConfiguration::doAdditionalSetup(const RunConfigurationCreationInfo updateTargetInformation(); } +bool CMakeRunConfiguration::isBuildTargetValid() const +{ + return Utils::anyOf(target()->applicationTargets().list, [this](const BuildTargetInfo &bti) { + return bti.buildKey == buildKey(); + }); +} + +void CMakeRunConfiguration::updateEnabledState() +{ + if (!isBuildTargetValid()) + setEnabled(false); + else + RunConfiguration::updateEnabledState(); +} + +QString CMakeRunConfiguration::disabledReason() const +{ + if (!isBuildTargetValid()) + return tr("The project no longer builds the target associated with this run configuration."); + return RunConfiguration::disabledReason(); +} + void CMakeRunConfiguration::updateTargetInformation() { BuildTargetInfo bti = buildTargetInfo(); diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h index f7f5491bcd5..e9d0e18827c 100644 --- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h +++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h @@ -38,8 +38,13 @@ public: CMakeRunConfiguration(ProjectExplorer::Target *target, Core::Id id); private: + QString disabledReason() const override; + void doAdditionalSetup(const ProjectExplorer::RunConfigurationCreationInfo &) override; + bool isBuildTargetValid() const; void updateTargetInformation(); + + void updateEnabledState() final; }; class CMakeRunConfigurationFactory : public ProjectExplorer::RunConfigurationFactory diff --git a/src/plugins/projectexplorer/runconfiguration.cpp b/src/plugins/projectexplorer/runconfiguration.cpp index e74e8e78fa7..1251e21153f 100644 --- a/src/plugins/projectexplorer/runconfiguration.cpp +++ b/src/plugins/projectexplorer/runconfiguration.cpp @@ -211,8 +211,6 @@ void RunConfiguration::setEnabled(bool enabled) QString RunConfiguration::disabledReason() const { - if (!target()->hasBuildTarget(m_buildKey)) - return tr("The project no longer builds the target associated with this run configuration."); if (target()->project()->isParsing()) return tr("The Project is currently being parsed."); if (!target()->project()->hasParsingData()) { @@ -247,14 +245,9 @@ QWidget *RunConfiguration::createConfigurationWidget() void RunConfiguration::updateEnabledState() { - if (!target()->hasBuildTarget(m_buildKey)) { - // This apparently may happen for cmake builds where also outdated - // RunConfigurations are kept when builds change. - setEnabled(false); // Might happen for CMake. - } else { - Project *p = target()->project(); - setEnabled(!p->isParsing() && p->hasParsingData()); - } + Project *p = target()->project(); + + setEnabled(!p->isParsing() && p->hasParsingData()); } void RunConfiguration::addAspectFactory(const AspectFactory &aspectFactory) diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp index 6c05bb100ff..3ad0d87c5fd 100644 --- a/src/plugins/projectexplorer/target.cpp +++ b/src/plugins/projectexplorer/target.cpp @@ -365,13 +365,6 @@ BuildTargetInfo Target::buildTarget(const QString &buildKey) const }); } -bool Target::hasBuildTarget(const QString &buildKey) const -{ - return Utils::anyOf(d->m_appTargets.list, [buildKey](const BuildTargetInfo &bti) { - return bti.buildKey == buildKey; - }); -} - QList Target::projectConfigurations() const { QList result; diff --git a/src/plugins/projectexplorer/target.h b/src/plugins/projectexplorer/target.h index 3ac437787c2..ee5557f6250 100644 --- a/src/plugins/projectexplorer/target.h +++ b/src/plugins/projectexplorer/target.h @@ -85,7 +85,6 @@ public: void setApplicationTargets(const BuildTargetInfoList &appTargets); BuildTargetInfoList applicationTargets() const; BuildTargetInfo buildTarget(const QString &buildKey) const; - bool hasBuildTarget(const QString &buildKey) const; QList projectConfigurations() const;