diff --git a/src/plugins/projectexplorer/runcontrol.cpp b/src/plugins/projectexplorer/runcontrol.cpp index e677b611ae0..5ce17b53fc6 100644 --- a/src/plugins/projectexplorer/runcontrol.cpp +++ b/src/plugins/projectexplorer/runcontrol.cpp @@ -87,6 +87,11 @@ bool RunWorkerFactory::canRun(RunConfiguration *runConfiguration, Core::Id runMo if (!m_supportedRunModes.contains(runMode)) return false; + if (!m_supportedRunConfigurations.isEmpty()) { + if (!m_supportedRunConfigurations.contains(runConfiguration->id())) + return false; + } + for (const Constraint &constraint : m_constraints) { if (!constraint(runConfiguration)) return false; @@ -115,6 +120,16 @@ void RunWorkerFactory::addSupportedRunMode(Core::Id runMode) m_supportedRunModes.append(runMode); } +void RunWorkerFactory::setSupportedRunConfigurations(const QList &ids) +{ + m_supportedRunConfigurations = ids; +} + +void RunWorkerFactory::addSupportedRunConfiguration(Core::Id id) +{ + m_supportedRunConfigurations.append(id); +} + void RunWorkerFactory::destroyRemainingRunWorkerFactories() { qDeleteAll(g_runWorkerFactories); diff --git a/src/plugins/projectexplorer/runcontrol.h b/src/plugins/projectexplorer/runcontrol.h index 927bc1dfab2..8d24fabcf07 100644 --- a/src/plugins/projectexplorer/runcontrol.h +++ b/src/plugins/projectexplorer/runcontrol.h @@ -157,6 +157,9 @@ public: void addConstraint(const Constraint &constraint); void addSupportedRunMode(Core::Id runMode); + void setSupportedRunConfigurations(const QList &ids); + void addSupportedRunConfiguration(Core::Id id); + WorkerCreator producer() const { return m_producer; } private: @@ -166,6 +169,7 @@ private: static void destroyRemainingRunWorkerFactories(); QList m_supportedRunModes; + QList m_supportedRunConfigurations; QList m_constraints; WorkerCreator m_producer; };