diff --git a/src/plugins/nim/project/nimbletaskstep.cpp b/src/plugins/nim/project/nimbletaskstep.cpp index 1cb0505089a..f41d53da909 100644 --- a/src/plugins/nim/project/nimbletaskstep.cpp +++ b/src/plugins/nim/project/nimbletaskstep.cpp @@ -124,9 +124,6 @@ QWidget *NimbleTaskStep::createConfigWidget() connect(buildSystem, &NimbleBuildSystem::tasksChanged, this, &NimbleTaskStep::updateTaskList); - connect(m_taskName, &StringAspect::changed, this, &BuildStep::recreateSummary); - connect(m_taskArgs, &StringAspect::changed, this, &BuildStep::recreateSummary); - setSummaryUpdater([this] { return QString("%1: nimble %2 %3") .arg(displayName(), m_taskName->value(), m_taskArgs->value()); diff --git a/src/plugins/projectexplorer/buildstep.cpp b/src/plugins/projectexplorer/buildstep.cpp index d5aaf6ea783..6e20887d701 100644 --- a/src/plugins/projectexplorer/buildstep.cpp +++ b/src/plugins/projectexplorer/buildstep.cpp @@ -157,6 +157,26 @@ void BuildStep::cancel() doCancel(); } +QWidget *BuildStep::doCreateConfigWidget() +{ + QWidget *widget = createConfigWidget(); + + const auto recreateSummary = [this] { + if (m_summaryUpdater) + setSummaryText(m_summaryUpdater()); + }; + + for (BaseAspect *aspect : qAsConst(m_aspects)) + connect(aspect, &BaseAspect::changed, widget, recreateSummary); + + connect(buildConfiguration(), &BuildConfiguration::buildDirectoryChanged, + widget, recreateSummary); + + recreateSummary(); + + return widget; +} + QWidget *BuildStep::createConfigWidget() { auto widget = new QWidget; @@ -165,12 +185,8 @@ QWidget *BuildStep::createConfigWidget() for (BaseAspect *aspect : qAsConst(m_aspects)) { if (aspect->isVisible()) aspect->addToLayout(builder.finishRow()); - connect(aspect, &BaseAspect::changed, this, &BuildStep::recreateSummary); } - connect(buildConfiguration(), &BuildConfiguration::buildDirectoryChanged, - this, &BuildStep::recreateSummary); - if (m_addMacroExpander) VariableChooser::addSupportForChildWidgets(widget, macroExpander()); @@ -500,13 +516,6 @@ void BuildStep::setSummaryText(const QString &summaryText) void BuildStep::setSummaryUpdater(const std::function &summaryUpdater) { m_summaryUpdater = summaryUpdater; - recreateSummary(); -} - -void BuildStep::recreateSummary() -{ - if (m_summaryUpdater) - setSummaryText(m_summaryUpdater()); } } // ProjectExplorer diff --git a/src/plugins/projectexplorer/buildstep.h b/src/plugins/projectexplorer/buildstep.h index 6fda3e7b035..78d5331034c 100644 --- a/src/plugins/projectexplorer/buildstep.h +++ b/src/plugins/projectexplorer/buildstep.h @@ -70,7 +70,6 @@ public: virtual bool init() = 0; void run(); void cancel(); - virtual QWidget *createConfigWidget(); bool fromMap(const QVariantMap &map) override; QVariantMap toMap() const override; @@ -120,7 +119,7 @@ public: QString summaryText() const; void setSummaryText(const QString &summaryText); - void recreateSummary(); + QWidget *doCreateConfigWidget(); signals: void updateSummary(); @@ -141,6 +140,8 @@ signals: void finished(bool result); protected: + virtual QWidget *createConfigWidget(); + void runInThread(const std::function &syncImpl); std::function cancelChecker() const; diff --git a/src/plugins/projectexplorer/buildstepspage.cpp b/src/plugins/projectexplorer/buildstepspage.cpp index cc642d0d934..f23434d6acf 100644 --- a/src/plugins/projectexplorer/buildstepspage.cpp +++ b/src/plugins/projectexplorer/buildstepspage.cpp @@ -170,7 +170,7 @@ void ToolWidget::setDownVisible(bool b) BuildStepsWidgetData::BuildStepsWidgetData(BuildStep *s) : step(s), widget(nullptr), detailsWidget(nullptr) { - widget = s->createConfigWidget(); + widget = s->doCreateConfigWidget(); Q_ASSERT(widget); detailsWidget = new DetailsWidget; diff --git a/src/plugins/projectexplorer/makestep.cpp b/src/plugins/projectexplorer/makestep.cpp index 86c1fe74a82..c411ac34c9b 100644 --- a/src/plugins/projectexplorer/makestep.cpp +++ b/src/plugins/projectexplorer/makestep.cpp @@ -416,8 +416,6 @@ QWidget *MakeStep::createConfigWidget() m_nonOverrideWarning->setVisible(makeflagsJobCountMismatch() && !jobCountOverridesMakeflags()); disableInSubDirsCheckBox->setChecked(!m_enabledForSubDirs); - - recreateSummary(); }; updateDetails();