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

View File

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