diff options
author | hjk <hjk@qt.io> | 2018-02-08 15:07:10 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2018-02-15 14:23:02 +0000 |
commit | 9f2bb5d0c5ec33a03759d038fb58c3dcddb6f7c5 (patch) | |
tree | 6a18b06eb2aa7d0f484e8c9ff6d7ef41190b03f7 /src/plugins/projectexplorer/target.cpp | |
parent | 3da9c8998139308270eec27eb9b5dddd74090bf5 (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.cpp | 21 |
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; |