diff --git a/src/plugins/projectexplorer/kitconfigwidget.h b/src/plugins/projectexplorer/kitconfigwidget.h index 469f0da86f1..0ccc36dd91a 100644 --- a/src/plugins/projectexplorer/kitconfigwidget.h +++ b/src/plugins/projectexplorer/kitconfigwidget.h @@ -70,6 +70,8 @@ public: static QString msgManage(); + Kit *kit() const { return m_kit; } + signals: void dirty(); diff --git a/src/plugins/projectexplorer/miniprojecttargetselector.cpp b/src/plugins/projectexplorer/miniprojecttargetselector.cpp index 789e0f3c770..6e5b078d9dc 100644 --- a/src/plugins/projectexplorer/miniprojecttargetselector.cpp +++ b/src/plugins/projectexplorer/miniprojecttargetselector.cpp @@ -605,22 +605,26 @@ void KitAreaWidget::updateKit(Kit *k) if (!m_kit || m_kit != k) return; - // Check whether our widgets changed - bool mustRegenerate = false; - QList knownIdList; - foreach (KitConfigWidget *w, m_widgets) - knownIdList << w->kitInformationId(); + bool addedMutables = false; + QList knownIdList = Utils::transform(m_widgets, &KitConfigWidget::kitInformationId); foreach (KitInformation *ki, KitManager::kitInformation()) { Core::Id currentId = ki->id(); if (m_kit->isMutable(currentId) && !knownIdList.removeOne(currentId)) { - mustRegenerate = true; + addedMutables = true; break; } } + const bool removedMutables = !knownIdList.isEmpty(); - if (mustRegenerate || !knownIdList.isEmpty()) + if (addedMutables || removedMutables) { + // Redo whole setup if the number of mutable settings did change setKit(m_kit); + } else { + // Refresh all widgets if the number of mutable settings did not change + foreach (KitConfigWidget *w, m_widgets) + w->refresh(); + } } /////////