From 33d1a91c4f8f04670a4e3cff88531f08413ea357 Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Fri, 4 Sep 2015 14:26:34 +0200 Subject: [PATCH] KitManager: Consider sdk kits for initial default kit Change-Id: I86874f3d138f49d9962e11323364ba856b03bffd Task-number: QTCREATORBUG-15002 Reviewed-by: Tobias Hunger --- src/libs/utils/algorithm.h | 13 +++++++++++++ src/plugins/projectexplorer/kitmanager.cpp | 11 +++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/libs/utils/algorithm.h b/src/libs/utils/algorithm.h index 6fc76f7d95b..0f67b1c929c 100644 --- a/src/libs/utils/algorithm.h +++ b/src/libs/utils/algorithm.h @@ -109,6 +109,13 @@ typename T::value_type findOr(const T &container, typename T::value_type other, return *it; } +template +typename T::value_type findOr(const T &container, typename T::value_type other, R (S::*function)() const) +{ + return findOr(container, other, std::mem_fn(function)); +} + + template int indexOf(const T &container, F function) { @@ -127,6 +134,12 @@ typename T::value_type findOrDefault(const T &container, F function) return findOr(container, typename T::value_type(), function); } +template +typename T::value_type findOrDefault(const T &container, R (S::*function)() const) +{ + return findOr(container, typename T::value_type(), function); +} + ////////////////// // find helpers ////////////////// diff --git a/src/plugins/projectexplorer/kitmanager.cpp b/src/plugins/projectexplorer/kitmanager.cpp index dd73605d4b7..d7766a00e00 100644 --- a/src/plugins/projectexplorer/kitmanager.cpp +++ b/src/plugins/projectexplorer/kitmanager.cpp @@ -137,6 +137,7 @@ void KitManager::restoreKits() QList kitsToRegister; QList kitsToValidate; QList kitsToCheck; + QList sdkKits; // read all kits from SDK QFileInfo systemSettingsFile(ICore::settings(QSettings::SystemScope)->fileName()); @@ -193,6 +194,7 @@ void KitManager::restoreKits() if (toStore == current) toStore->setup(); addKit(toStore); + sdkKits << toStore; } // Delete all loaded autodetected kits that were not rediscovered: @@ -221,9 +223,14 @@ void KitManager::restoreKits() if (k) { setDefaultKit(k); } else if (!defaultKit()) { - k = Utils::findOr(kitsToRegister, 0, [](Kit *k) { return k->isValid(); }); - if (k) + k = Utils::findOrDefault(kitsToRegister, &Kit::isValid); + if (k) { setDefaultKit(k); + } else { + k = Utils::findOrDefault(sdkKits, &Kit::isValid); + if (k) + setDefaultKit(k); + } } d->m_writer = new PersistentSettingsWriter(settingsFileName(), QLatin1String("QtCreatorProfiles"));