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();