QProgressDialog: Set infinite minimum duration

To suppress calls to QCoreApplication::processEvents() from
inside QProgressDialog::setValue(). Otherwise it
interfere with the task tree internals and may lead to crash.

Fixes: QTCREATORBUG-32746
Change-Id: Ic6f42061fedd702aec070e667ecafe27e1a2158b
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Jarek Kobus
2025-04-08 09:32:18 +02:00
parent 89534d3186
commit 8fb22881cc
4 changed files with 4 additions and 0 deletions

View File

@@ -95,6 +95,7 @@ GroupItem downloadSdkRecipe()
progressDialog.reset(new QProgressDialog(Tr::tr("Downloading SDK Tools package..."),
Tr::tr("Cancel"), 0, 100, Core::ICore::dialogParent()));
progressDialog->setWindowModality(Qt::ApplicationModal);
progressDialog->setMinimumDuration(INT_MAX); // In order to suppress calls to processEvents() from setValue()
progressDialog->setWindowTitle(dialogTitle());
progressDialog->setFixedSize(progressDialog->sizeHint());
progressDialog->setAutoClose(false);

View File

@@ -317,6 +317,7 @@ void AvdDialog::createAvd()
progressDialog.reset(new QProgressDialog(Core::ICore::dialogParent()));
progressDialog->setRange(0, 0);
progressDialog->setWindowModality(Qt::ApplicationModal);
progressDialog->setMinimumDuration(INT_MAX); // In order to suppress calls to processEvents() from setValue()
progressDialog->setWindowTitle("Create new AVD");
progressDialog->setLabelText(Tr::tr("Creating new AVD device..."));
progressDialog->setFixedSize(progressDialog->sizeHint());

View File

@@ -697,6 +697,7 @@ void ExtensionManagerWidget::fetchAndInstallPlugin(const QUrl &url, const QStrin
Tr::tr("Downloading..."), Tr::tr("Cancel"), 0, 0, ICore::dialogParent()));
progressDialog->setWindowTitle(Tr::tr("Download Extension"));
progressDialog->setWindowModality(Qt::ApplicationModal);
progressDialog->setMinimumDuration(INT_MAX); // In order to suppress calls to processEvents() from setValue()
progressDialog->setFixedSize(progressDialog->sizeHint());
progressDialog->setAutoClose(false);
progressDialog->show(); // TODO: Should not be needed. Investigate possible QT_BUG

View File

@@ -318,6 +318,7 @@ GroupItem WindowsSettingsWidget::downloadNugetRecipe()
Tr::tr("Cancel"), 0, 100,
Core::ICore::dialogParent()));
progressDialog->setWindowModality(Qt::ApplicationModal);
progressDialog->setMinimumDuration(INT_MAX); // In order to suppress calls to processEvents() from setValue()
progressDialog->setWindowTitle(Tr::tr("Downloading"));
progressDialog->setFixedSize(progressDialog->sizeHint());
progressDialog->setAutoClose(false);