diff --git a/src/plugins/qmakeprojectmanager/qmakestep.cpp b/src/plugins/qmakeprojectmanager/qmakestep.cpp index 27e29e497e8..93e13f71f0c 100644 --- a/src/plugins/qmakeprojectmanager/qmakestep.cpp +++ b/src/plugins/qmakeprojectmanager/qmakestep.cpp @@ -510,9 +510,9 @@ QWidget *QMakeStep::createConfigWidget() widget, [this] { qtVersionChanged(); }); connect(abisListWidget, &QListWidget::itemChanged, this, [this] { - abisChanged(); - if (QmakeBuildConfiguration *bc = qmakeBuildConfiguration()) - BuildManager::buildLists({bc->cleanSteps()}); + if (m_ignoreChanges.isLocked()) + return; + handleAbiWidgetChange(); }); connect(widget, &QObject::destroyed, this, [this] { @@ -654,6 +654,8 @@ void QMakeStep::askForRebuild(const QString &title) void QMakeStep::updateAbiWidgets() { + const GuardLocker locker(m_ignoreChanges); + if (!abisLabel) return; @@ -702,7 +704,7 @@ void QMakeStep::updateAbiWidgets() item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable); item->setCheckState(selectedAbis.contains(param) ? Qt::Checked : Qt::Unchecked); } - abisChanged(); + handleAbiWidgetChange(); } } @@ -711,6 +713,13 @@ void QMakeStep::updateEffectiveQMakeCall() m_effectiveCall->setValue(effectiveQMakeCall()); } +void QMakeStep::handleAbiWidgetChange() +{ + abisChanged(); + if (QmakeBuildConfiguration *bc = qmakeBuildConfiguration()) + BuildManager::buildLists({bc->cleanSteps()}); +} + void QMakeStep::recompileMessageBoxFinished(int button) { if (button == QMessageBox::Yes) { diff --git a/src/plugins/qmakeprojectmanager/qmakestep.h b/src/plugins/qmakeprojectmanager/qmakestep.h index f72c48d4612..d977eedd904 100644 --- a/src/plugins/qmakeprojectmanager/qmakestep.h +++ b/src/plugins/qmakeprojectmanager/qmakestep.h @@ -155,6 +155,7 @@ private: void updateAbiWidgets(); void updateEffectiveQMakeCall(); + void handleAbiWidgetChange(); Utils::CommandLine m_qmakeCommand; Utils::CommandLine m_makeCommand;