From 7bb746dfab5c59e77f50bc12fff1f4a73ab40b87 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Wed, 26 Nov 2025 12:05:37 +0000 Subject: [PATCH] Safer dialog Signed-off-by: TheKodeToad --- launcher/net/NetJob.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/launcher/net/NetJob.cpp b/launcher/net/NetJob.cpp index 3e310d0dc..dae149ab3 100644 --- a/launcher/net/NetJob.cpp +++ b/launcher/net/NetJob.cpp @@ -165,17 +165,25 @@ void NetJob::emitFailed(QString reason) if (APPLICATION_DYN && m_ask_retry && m_manual_try < APPLICATION->settings()->get("NumberOfManualRetries").toInt() && isOnline()) { m_manual_try++; auto failed = getFailedActions(); - auto dialog = NetworkJobFailedDialog(objectName(), m_try, m_done.size(), failed.size(), nullptr); + auto dialog = new NetworkJobFailedDialog(objectName(), m_try, m_done.size(), failed.size(), nullptr); + dialog->setAttribute(Qt::WA_DeleteOnClose); for (const auto& request : failed) { - dialog.addFailedRequest(request->url(), request->errorString()); + dialog->addFailedRequest(request->url(), request->errorString()); } - if (dialog.exec() == QDialog::Accepted) { - m_try = 0; - executeNextSubTask(); - return; - } + dialog->open(); + + connect(dialog, &QDialog::finished, this, [this, reason = std::move(reason)](int result) { + if (result == QDialog::Accepted) { + m_try = 0; + executeNextSubTask(); + } else { + ConcurrentTask::emitFailed(reason); + } + }); + + return; } #endif