From 43b8e64bac0c16a03aa5d73ffb8c6625bb095380 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Mon, 12 Oct 2015 12:00:09 +0200 Subject: [PATCH] MiniProjectTargetSelector: Update mutable KitInformation Make sure the widgets get updated. This used to work implicitly for QComboBoxes, but not for other widgets. Task-number: QTCREATORBUG-14774 Change-Id: I84440090e459b60fee268693ba0857ea1c0fe5c2 Reviewed-by: Daniel Teske --- src/plugins/projectexplorer/kitconfigwidget.h | 2 ++ .../miniprojecttargetselector.cpp | 18 +++++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) 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(); + } } /////////