aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/target.cpp
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2018-02-08 15:07:10 +0100
committerhjk <hjk@qt.io>2018-02-15 14:23:02 +0000
commit9f2bb5d0c5ec33a03759d038fb58c3dcddb6f7c5 (patch)
tree6a18b06eb2aa7d0f484e8c9ff6d7ef41190b03f7 /src/plugins/projectexplorer/target.cpp
parent3da9c8998139308270eec27eb9b5dddd74090bf5 (diff)
ProjectExplorer: Simplify collection of RunConfigurationCreationInfos
Instead of calling twice for AutoCreated and UserCreated, call once and record to which case it belongs. Only the 'both' and 'user only' combination are ever used. Change-Id: I9c15085bcbb4bf6584a6156135f2084dbfc51c1c Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins/projectexplorer/target.cpp')
-rw-r--r--src/plugins/projectexplorer/target.cpp21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp
index 2d80aa77aa..3b69057780 100644
--- a/src/plugins/projectexplorer/target.cpp
+++ b/src/plugins/projectexplorer/target.cpp
@@ -554,14 +554,19 @@ void Target::updateDefaultRunConfigurations()
int configuredCount = existingConfigured.count();
// find all RC ids that can get created:
- QList<RunConfigurationCreationInfo> availableFactories;
- for (IRunConfigurationFactory *rcFactory : rcFactories)
- availableFactories.append(rcFactory->availableCreators(this));
-
+ QList<RunConfigurationCreationInfo> allAvailableFactories;
QList<RunConfigurationCreationInfo> autoCreateFactories;
- for (IRunConfigurationFactory *rcFactory : rcFactories)
- autoCreateFactories.append(rcFactory->availableCreators(this,
- IRunConfigurationFactory::AutoCreate));
+
+ for (IRunConfigurationFactory *rcFactory : rcFactories) {
+ if (rcFactory->canHandle(this)) {
+ const QList<RunConfigurationCreationInfo> 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
@@ -569,7 +574,7 @@ void Target::updateDefaultRunConfigurations()
QList<RunConfigurationCreationInfo> existing;
foreach (RunConfiguration *rc, existingConfigured) {
bool present = false;
- for (const RunConfigurationCreationInfo &item : availableFactories) {
+ for (const RunConfigurationCreationInfo &item : allAvailableFactories) {
if (item.id == rc->id() && item.extra == rc->extraId()) {
existing.append(item);
present = true;