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 <daniel.teske@theqtcompany.com>
This commit is contained in:
Tobias Hunger
2015-10-12 12:00:09 +02:00
parent 629c24abdc
commit 43b8e64bac
2 changed files with 13 additions and 7 deletions

View File

@@ -70,6 +70,8 @@ public:
static QString msgManage(); static QString msgManage();
Kit *kit() const { return m_kit; }
signals: signals:
void dirty(); void dirty();

View File

@@ -605,22 +605,26 @@ void KitAreaWidget::updateKit(Kit *k)
if (!m_kit || m_kit != k) if (!m_kit || m_kit != k)
return; return;
// Check whether our widgets changed bool addedMutables = false;
bool mustRegenerate = false; QList<Core::Id> knownIdList = Utils::transform(m_widgets, &KitConfigWidget::kitInformationId);
QList<Core::Id> knownIdList;
foreach (KitConfigWidget *w, m_widgets)
knownIdList << w->kitInformationId();
foreach (KitInformation *ki, KitManager::kitInformation()) { foreach (KitInformation *ki, KitManager::kitInformation()) {
Core::Id currentId = ki->id(); Core::Id currentId = ki->id();
if (m_kit->isMutable(currentId) && !knownIdList.removeOne(currentId)) { if (m_kit->isMutable(currentId) && !knownIdList.removeOne(currentId)) {
mustRegenerate = true; addedMutables = true;
break; 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); setKit(m_kit);
} else {
// Refresh all widgets if the number of mutable settings did not change
foreach (KitConfigWidget *w, m_widgets)
w->refresh();
}
} }
///////// /////////