QmakeProjectManager: Prevent infinite loop on ABI change

Fixes: QTCREATORBUG-29204
Change-Id: I6f4e4fa96f6c48dc83f0e5baf2205421b9ff67ca
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
Christian Kandeler
2023-07-04 18:16:41 +02:00
parent f23103467a
commit c732667838
2 changed files with 14 additions and 4 deletions

View File

@@ -510,9 +510,9 @@ QWidget *QMakeStep::createConfigWidget()
widget, [this] { qtVersionChanged(); }); widget, [this] { qtVersionChanged(); });
connect(abisListWidget, &QListWidget::itemChanged, this, [this] { connect(abisListWidget, &QListWidget::itemChanged, this, [this] {
abisChanged(); if (m_ignoreChanges.isLocked())
if (QmakeBuildConfiguration *bc = qmakeBuildConfiguration()) return;
BuildManager::buildLists({bc->cleanSteps()}); handleAbiWidgetChange();
}); });
connect(widget, &QObject::destroyed, this, [this] { connect(widget, &QObject::destroyed, this, [this] {
@@ -654,6 +654,8 @@ void QMakeStep::askForRebuild(const QString &title)
void QMakeStep::updateAbiWidgets() void QMakeStep::updateAbiWidgets()
{ {
const GuardLocker locker(m_ignoreChanges);
if (!abisLabel) if (!abisLabel)
return; return;
@@ -702,7 +704,7 @@ void QMakeStep::updateAbiWidgets()
item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable); item->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
item->setCheckState(selectedAbis.contains(param) ? Qt::Checked : Qt::Unchecked); item->setCheckState(selectedAbis.contains(param) ? Qt::Checked : Qt::Unchecked);
} }
abisChanged(); handleAbiWidgetChange();
} }
} }
@@ -711,6 +713,13 @@ void QMakeStep::updateEffectiveQMakeCall()
m_effectiveCall->setValue(effectiveQMakeCall()); m_effectiveCall->setValue(effectiveQMakeCall());
} }
void QMakeStep::handleAbiWidgetChange()
{
abisChanged();
if (QmakeBuildConfiguration *bc = qmakeBuildConfiguration())
BuildManager::buildLists({bc->cleanSteps()});
}
void QMakeStep::recompileMessageBoxFinished(int button) void QMakeStep::recompileMessageBoxFinished(int button)
{ {
if (button == QMessageBox::Yes) { if (button == QMessageBox::Yes) {

View File

@@ -155,6 +155,7 @@ private:
void updateAbiWidgets(); void updateAbiWidgets();
void updateEffectiveQMakeCall(); void updateEffectiveQMakeCall();
void handleAbiWidgetChange();
Utils::CommandLine m_qmakeCommand; Utils::CommandLine m_qmakeCommand;
Utils::CommandLine m_makeCommand; Utils::CommandLine m_makeCommand;