diff --git a/src/plugins/autotest/testrunconfiguration.h b/src/plugins/autotest/testrunconfiguration.h index c066032b138..81fdb65d56b 100644 --- a/src/plugins/autotest/testrunconfiguration.h +++ b/src/plugins/autotest/testrunconfiguration.h @@ -50,7 +50,6 @@ public: : ProjectExplorer::RunConfiguration(parent, "AutoTest.TestRunConfig") { setDefaultDisplayName(tr("AutoTest Debug")); - addExtraAspects(); // disable QmlDebugger that is enabled by default // might change if debugging QuickTest gets enabled diff --git a/src/plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp b/src/plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp index 2fce20cc67a..cc687a0af02 100644 --- a/src/plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp +++ b/src/plugins/clangstaticanalyzer/clangstaticanalyzertool.cpp @@ -69,7 +69,6 @@ public: : RunConfiguration(parent, "ClangStaticAnalyzer.DummyRunConfig") { setDefaultDisplayName(tr("Clang Static Analyzer")); - addExtraAspects(); } private: diff --git a/src/plugins/projectexplorer/runconfiguration.cpp b/src/plugins/projectexplorer/runconfiguration.cpp index 3839b42cfb2..3470df8f74e 100644 --- a/src/plugins/projectexplorer/runconfiguration.cpp +++ b/src/plugins/projectexplorer/runconfiguration.cpp @@ -33,6 +33,7 @@ #include "kitinformation.h" #include +#include #include #include @@ -204,16 +205,16 @@ void IRunConfigurationAspect::resetProjectToGlobalSettings() */ RunConfiguration::RunConfiguration(Target *target, Core::Id id) : - ProjectConfiguration(target, id), - m_aspectsInitialized(false) + ProjectConfiguration(target, id) { Q_ASSERT(target); ctor(); + + addExtraAspects(); } RunConfiguration::RunConfiguration(Target *target, RunConfiguration *source) : - ProjectConfiguration(target, source), - m_aspectsInitialized(true) + ProjectConfiguration(target, source) { Q_ASSERT(target); ctor(); @@ -231,12 +232,8 @@ RunConfiguration::~RunConfiguration() void RunConfiguration::addExtraAspects() { - if (m_aspectsInitialized) - return; - foreach (IRunControlFactory *factory, ExtensionSystem::PluginManager::getObjects()) addExtraAspect(factory->createRunConfigurationAspect(this)); - m_aspectsInitialized = true; } void RunConfiguration::addExtraAspect(IRunConfigurationAspect *aspect) @@ -326,8 +323,6 @@ Abi RunConfiguration::abi() const bool RunConfiguration::fromMap(const QVariantMap &map) { - addExtraAspects(); - foreach (IRunConfigurationAspect *aspect, m_aspects) aspect->fromMap(map); @@ -354,16 +349,12 @@ bool RunConfiguration::fromMap(const QVariantMap &map) QList RunConfiguration::extraAspects() const { - QTC_ASSERT(m_aspectsInitialized, return QList()); return m_aspects; } + IRunConfigurationAspect *RunConfiguration::extraAspect(Core::Id id) const { - QTC_ASSERT(m_aspectsInitialized, return nullptr); - foreach (IRunConfigurationAspect *aspect, m_aspects) - if (aspect->id() == id) - return aspect; - return nullptr; + return Utils::findOrDefault(m_aspects, Utils::equal(&IRunConfigurationAspect::id, id)); } /*! @@ -443,7 +434,6 @@ RunConfiguration *IRunConfigurationFactory::create(Target *parent, Core::Id id) RunConfiguration *rc = doCreate(parent, id); if (!rc) return nullptr; - rc->addExtraAspects(); return rc; } diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h index 782a0c6cb36..7a138a87cf3 100644 --- a/src/plugins/projectexplorer/runconfiguration.h +++ b/src/plugins/projectexplorer/runconfiguration.h @@ -276,7 +276,6 @@ public: template T *extraAspect() const { - QTC_ASSERT(m_aspectsInitialized, return nullptr); foreach (IRunConfigurationAspect *aspect, m_aspects) if (T *result = qobject_cast(aspect)) return result; @@ -286,7 +285,6 @@ public: virtual Runnable runnable() const; virtual Abi abi() const; - void addExtraAspects(); void addExtraAspect(IRunConfigurationAspect *aspect); signals: @@ -304,8 +302,9 @@ protected: private: void ctor(); + void addExtraAspects(); + QList m_aspects; - bool m_aspectsInitialized; }; class PROJECTEXPLORER_EXPORT IRunConfigurationFactory : public QObject diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp index 1a45c8db4b1..b52b8aa6415 100644 --- a/src/plugins/projectexplorer/target.cpp +++ b/src/plugins/projectexplorer/target.cpp @@ -398,7 +398,6 @@ void Target::addRunConfiguration(RunConfiguration *rc) { QTC_ASSERT(rc && !d->m_runConfigurations.contains(rc), return); Q_ASSERT(rc->target() == this); - rc->addExtraAspects(); // Check that we don't have a configuration with the same displayName QString configurationDisplayName = rc->displayName();