ProjectExplorer: Do not reset kit selection in target setup widget

... on kit update. We don't know why the kit was originally selected,
and keeping track of this information would add unreasonable book-
keeping effort. Plus, the user probably does not expect the selection to
change anyway.

Change-Id: I341e1727a3f1fdd481c3a1670f821aee0e6b9cdd
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Christian Kandeler
2019-08-23 15:33:53 +02:00
parent dca7edbeef
commit 2cad0733c2
2 changed files with 9 additions and 2 deletions

View File

@@ -267,6 +267,7 @@ void TargetSetupPage::setupWidgets(const QString &filterText)
if (!filterText.isEmpty() && !k->displayName().contains(filterText, Qt::CaseInsensitive)) if (!filterText.isEmpty() && !k->displayName().contains(filterText, Qt::CaseInsensitive))
continue; continue;
const auto widget = new TargetSetupWidget(k, m_projectPath); const auto widget = new TargetSetupWidget(k, m_projectPath);
setInitialCheckState(widget);
connect(widget, &TargetSetupWidget::selectedToggled, connect(widget, &TargetSetupWidget::selectedToggled,
this, &TargetSetupPage::kitSelectionChanged); this, &TargetSetupPage::kitSelectionChanged);
connect(widget, &TargetSetupWidget::selectedToggled, this, &QWizardPage::completeChanged); connect(widget, &TargetSetupWidget::selectedToggled, this, &QWizardPage::completeChanged);
@@ -298,6 +299,12 @@ void TargetSetupPage::reset()
m_ui->allKitsCheckBox->setChecked(false); m_ui->allKitsCheckBox->setChecked(false);
} }
void TargetSetupPage::setInitialCheckState(TargetSetupWidget *widget)
{
widget->setKitSelected(widget->isEnabled() && m_preferredPredicate
&& m_preferredPredicate(widget->kit()));
}
TargetSetupWidget *TargetSetupPage::widget(const Core::Id kitId, TargetSetupWidget *TargetSetupPage::widget(const Core::Id kitId,
TargetSetupWidget *fallback) const TargetSetupWidget *fallback) const
{ {
@@ -559,6 +566,7 @@ void TargetSetupPage::removeWidget(TargetSetupWidget *w)
TargetSetupWidget *TargetSetupPage::addWidget(Kit *k) TargetSetupWidget *TargetSetupPage::addWidget(Kit *k)
{ {
const auto widget = new TargetSetupWidget(k, m_projectPath); const auto widget = new TargetSetupWidget(k, m_projectPath);
setInitialCheckState(widget);
updateWidget(widget); updateWidget(widget);
connect(widget, &TargetSetupWidget::selectedToggled, connect(widget, &TargetSetupWidget::selectedToggled,
this, &TargetSetupPage::kitSelectionChanged); this, &TargetSetupPage::kitSelectionChanged);
@@ -601,8 +609,6 @@ void TargetSetupPage::removeAdditionalWidgets(QLayout *layout)
void TargetSetupPage::updateWidget(TargetSetupWidget *widget) void TargetSetupPage::updateWidget(TargetSetupWidget *widget)
{ {
QTC_ASSERT(widget, return ); QTC_ASSERT(widget, return );
widget->setKitSelected(widget->isEnabled() && m_preferredPredicate
&& m_preferredPredicate(widget->kit()));
widget->update(m_requiredPredicate); widget->update(m_requiredPredicate);
} }

View File

@@ -118,6 +118,7 @@ private:
void setupWidgets(const QString &filterText = QString()); void setupWidgets(const QString &filterText = QString());
void reset(); void reset();
void setInitialCheckState(Internal::TargetSetupWidget *widget);
Internal::TargetSetupWidget *widget(Kit *k, Internal::TargetSetupWidget *fallback = nullptr) const Internal::TargetSetupWidget *widget(Kit *k, Internal::TargetSetupWidget *fallback = nullptr) const
{ return widget(k->id(), fallback); } { return widget(k->id(), fallback); }