diff --git a/src/plugins/projectexplorer/runconfiguration.cpp b/src/plugins/projectexplorer/runconfiguration.cpp index 39bd694656d..127ea45cefb 100644 --- a/src/plugins/projectexplorer/runconfiguration.cpp +++ b/src/plugins/projectexplorer/runconfiguration.cpp @@ -620,12 +620,9 @@ IRunConfigurationFactory *IRunConfigurationFactory::find(Target *parent, RunConf }); } -QList IRunConfigurationFactory::find(Target *parent) +const QList IRunConfigurationFactory::allFactories() { - return Utils::filtered(g_runConfigurationFactories, - [&parent](IRunConfigurationFactory *factory) { - return factory->canHandle(parent) && !factory->availableCreators(parent).isEmpty(); - }); + return g_runConfigurationFactories; } FixedRunConfigurationFactory::FixedRunConfigurationFactory(const QString &displayName, diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h index 27bf547035f..5e0267933fd 100644 --- a/src/plugins/projectexplorer/runconfiguration.h +++ b/src/plugins/projectexplorer/runconfiguration.h @@ -320,7 +320,7 @@ public: static IRunConfigurationFactory *find(Target *parent, const QVariantMap &map); static IRunConfigurationFactory *find(Target *parent, RunConfiguration *rc); - static QList find(Target *parent); + static const QList allFactories(); Core::Id runConfigurationBaseId() const { return m_runConfigBaseId; } diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp index 3b690577803..915110b61b7 100644 --- a/src/plugins/projectexplorer/target.cpp +++ b/src/plugins/projectexplorer/target.cpp @@ -536,8 +536,22 @@ void Target::updateDefaultDeployConfigurations() void Target::updateDefaultRunConfigurations() { - const QList rcFactories = IRunConfigurationFactory::find(this); - if (rcFactories.isEmpty()) { + // find all RC ids that can get created: + QList allAvailableFactories; + QList autoCreateFactories; + + for (IRunConfigurationFactory *rcFactory : IRunConfigurationFactory::allFactories()) { + if (rcFactory->canHandle(this)) { + const QList creators = rcFactory->availableCreators(this); + for (const RunConfigurationCreationInfo &creator : creators) { + allAvailableFactories.append(creator); // Manual and Auto + if (creator.creationMode == RunConfigurationCreationInfo::AlwaysCreate) + autoCreateFactories.append(creator); // Auto only. + } + } + } + + if (allAvailableFactories.isEmpty()) { qWarning("No run configuration factory found for target id '%s'.", qPrintable(id().toString())); return; } @@ -553,21 +567,6 @@ void Target::updateDefaultRunConfigurations() [](const RunConfiguration *rc) { return rc->isConfigured(); }); int configuredCount = existingConfigured.count(); - // find all RC ids that can get created: - QList allAvailableFactories; - QList autoCreateFactories; - - for (IRunConfigurationFactory *rcFactory : rcFactories) { - if (rcFactory->canHandle(this)) { - const QList creators = rcFactory->availableCreators(this); - for (const RunConfigurationCreationInfo &creator : creators) { - allAvailableFactories.append(creator); // Manual and Auto - if (creator.creationMode == RunConfigurationCreationInfo::AlwaysCreate) - autoCreateFactories.append(creator); // Auto only. - } - } - } - // Put outdated RCs into toRemove, do not bother with factories // that produce already existing RCs QList toRemove;