From 2cad0733c2ae50b3b7ae3e6326f4434639699c1f Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 23 Aug 2019 15:33:53 +0200 Subject: [PATCH] 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 --- src/plugins/projectexplorer/targetsetuppage.cpp | 10 ++++++++-- src/plugins/projectexplorer/targetsetuppage.h | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/plugins/projectexplorer/targetsetuppage.cpp b/src/plugins/projectexplorer/targetsetuppage.cpp index 78c8f442730..0f3d9944fa7 100644 --- a/src/plugins/projectexplorer/targetsetuppage.cpp +++ b/src/plugins/projectexplorer/targetsetuppage.cpp @@ -267,6 +267,7 @@ void TargetSetupPage::setupWidgets(const QString &filterText) if (!filterText.isEmpty() && !k->displayName().contains(filterText, Qt::CaseInsensitive)) continue; const auto widget = new TargetSetupWidget(k, m_projectPath); + setInitialCheckState(widget); connect(widget, &TargetSetupWidget::selectedToggled, this, &TargetSetupPage::kitSelectionChanged); connect(widget, &TargetSetupWidget::selectedToggled, this, &QWizardPage::completeChanged); @@ -298,6 +299,12 @@ void TargetSetupPage::reset() 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 *fallback) const { @@ -559,6 +566,7 @@ void TargetSetupPage::removeWidget(TargetSetupWidget *w) TargetSetupWidget *TargetSetupPage::addWidget(Kit *k) { const auto widget = new TargetSetupWidget(k, m_projectPath); + setInitialCheckState(widget); updateWidget(widget); connect(widget, &TargetSetupWidget::selectedToggled, this, &TargetSetupPage::kitSelectionChanged); @@ -601,8 +609,6 @@ void TargetSetupPage::removeAdditionalWidgets(QLayout *layout) void TargetSetupPage::updateWidget(TargetSetupWidget *widget) { QTC_ASSERT(widget, return ); - widget->setKitSelected(widget->isEnabled() && m_preferredPredicate - && m_preferredPredicate(widget->kit())); widget->update(m_requiredPredicate); } diff --git a/src/plugins/projectexplorer/targetsetuppage.h b/src/plugins/projectexplorer/targetsetuppage.h index 7c59e490990..7ac07015c69 100644 --- a/src/plugins/projectexplorer/targetsetuppage.h +++ b/src/plugins/projectexplorer/targetsetuppage.h @@ -118,6 +118,7 @@ private: void setupWidgets(const QString &filterText = QString()); void reset(); + void setInitialCheckState(Internal::TargetSetupWidget *widget); Internal::TargetSetupWidget *widget(Kit *k, Internal::TargetSetupWidget *fallback = nullptr) const { return widget(k->id(), fallback); }