forked from qt-creator/qt-creator
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:
@@ -70,6 +70,8 @@ public:
|
||||
|
||||
static QString msgManage();
|
||||
|
||||
Kit *kit() const { return m_kit; }
|
||||
|
||||
signals:
|
||||
void dirty();
|
||||
|
||||
|
@@ -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<Core::Id> knownIdList;
|
||||
foreach (KitConfigWidget *w, m_widgets)
|
||||
knownIdList << w->kitInformationId();
|
||||
bool addedMutables = false;
|
||||
QList<Core::Id> 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();
|
||||
}
|
||||
}
|
||||
|
||||
/////////
|
||||
|
Reference in New Issue
Block a user