diff --git a/src/plugins/projectexplorer/targetsetuppage.cpp b/src/plugins/projectexplorer/targetsetuppage.cpp index 5b752071fd5..979fb6772bc 100644 --- a/src/plugins/projectexplorer/targetsetuppage.cpp +++ b/src/plugins/projectexplorer/targetsetuppage.cpp @@ -460,7 +460,7 @@ void TargetSetupPagePrivate::selectAtLeastOneEnabledKit() auto isPreferred = [this](const TargetSetupWidget *w) { const Tasks tasks = m_tasksGenerator(w->kit()); - return w->isEnabled() && tasks.isEmpty(); + return w->isValid() && tasks.isEmpty(); }; // Use default kit if that is preferred: @@ -476,14 +476,14 @@ void TargetSetupPagePrivate::selectAtLeastOneEnabledKit() if (!toCheckWidget) { // Use default kit if it is enabled: toCheckWidget = findOrDefault(m_widgets, [defaultKit](const TargetSetupWidget *w) { - return w->isEnabled() && w->kit() == defaultKit; + return w->isValid() && w->kit() == defaultKit; }); } if (!toCheckWidget) { // Use the first enabled widget: toCheckWidget = findOrDefault(m_widgets, - [](const TargetSetupWidget *w) { return w->isEnabled(); }); + [](const TargetSetupWidget *w) { return w->isValid(); }); } if (toCheckWidget) { diff --git a/src/plugins/projectexplorer/targetsetupwidget.cpp b/src/plugins/projectexplorer/targetsetupwidget.cpp index 315c4d1f9db..6a26a6a3df3 100644 --- a/src/plugins/projectexplorer/targetsetupwidget.cpp +++ b/src/plugins/projectexplorer/targetsetupwidget.cpp @@ -217,12 +217,12 @@ void TargetSetupWidget::update(const TasksGenerator &generator) // Kits that where the taskGenarator reports an error are not selectable, because we cannot // guarantee that we can handle the project sensibly (e.g. qmake project without Qt). if (!errorTask.isNull()) { - toggleEnabled(false); + setValid(false); m_infoStore.clear(); return; } - toggleEnabled(true); + setValid(true); updateDefaultBuildDirectories(); } @@ -241,12 +241,13 @@ bool TargetSetupWidget::hasSelectableBuildConfigurations() const return !m_infoStore.empty(); } -void TargetSetupWidget::toggleEnabled(bool enabled) +void TargetSetupWidget::setValid(bool valid) { - m_detailsWidget->widget()->setEnabled(enabled); - m_detailsWidget->setCheckable(enabled); - m_detailsWidget->setExpandable(enabled && hasSelectableBuildConfigurations()); - if (!enabled) { + m_isValid = valid; + m_detailsWidget->widget()->setEnabled(valid); + m_detailsWidget->setCheckable(valid); + m_detailsWidget->setExpandable(valid && hasSelectableBuildConfigurations()); + if (!valid) { m_detailsWidget->setState(DetailsWidget::Collapsed); m_detailsWidget->setChecked(false); } diff --git a/src/plugins/projectexplorer/targetsetupwidget.h b/src/plugins/projectexplorer/targetsetupwidget.h index 4768e35fd5c..2aca36550c5 100644 --- a/src/plugins/projectexplorer/targetsetupwidget.h +++ b/src/plugins/projectexplorer/targetsetupwidget.h @@ -43,6 +43,7 @@ public: bool isKitSelected() const; void setKitSelected(bool b); + bool isValid() const { return m_isValid; } void addBuildInfo(const BuildInfo &info, bool isImport); @@ -59,7 +60,7 @@ private: bool hasSelectableBuildConfigurations() const; - void toggleEnabled(bool enabled); + void setValid(bool valid); void checkBoxToggled(QCheckBox *checkBox, bool b); void pathChanged(Utils::PathChooser *pathChooser); void targetCheckBoxToggled(bool b); @@ -70,6 +71,7 @@ private: void clear(); void updateDefaultBuildDirectories(); + bool m_isValid = false; Kit *m_kit; Utils::FilePath m_projectPath; bool m_haveImported = false;