From a455a2b46a9e967de66a20b694f782c33a20c5fb Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Fri, 15 May 2026 13:01:41 +0100 Subject: [PATCH 1/2] Fix memory leak and crash with data packs modal Signed-off-by: TheKodeToad (cherry picked from commit 28eba8ed430b94be39d5b00fe5afcebab7b8f795) --- launcher/ui/pages/instance/WorldListPage.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/launcher/ui/pages/instance/WorldListPage.cpp b/launcher/ui/pages/instance/WorldListPage.cpp index e56e9c731..24c880429 100644 --- a/launcher/ui/pages/instance/WorldListPage.cpp +++ b/launcher/ui/pages/instance/WorldListPage.cpp @@ -259,6 +259,7 @@ void WorldListPage::on_actionData_Packs_triggered() dialog->setLayout(layout); + dialog->setAttribute(Qt::WA_DeleteOnClose); dialog->exec(); APPLICATION->settings()->set("DataPackDownloadGeometry", dialog->saveGeometry().toBase64()); From 35362a0712025079576cf17a3f117244ee680f16 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Thu, 28 May 2026 09:20:57 +0100 Subject: [PATCH 2/2] Replace exec with open and handle saving geometry in signal listener Signed-off-by: TheKodeToad (cherry picked from commit fa61e58cd976740e6c815f03bda9ea5ce5718ff8) --- launcher/ui/pages/instance/WorldListPage.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/launcher/ui/pages/instance/WorldListPage.cpp b/launcher/ui/pages/instance/WorldListPage.cpp index 24c880429..71c370ab2 100644 --- a/launcher/ui/pages/instance/WorldListPage.cpp +++ b/launcher/ui/pages/instance/WorldListPage.cpp @@ -121,7 +121,7 @@ void WorldListPage::openedImpl() ui->toolBar->removeAction(ui->actionJoin); } - auto const setting_name = QString("WideBarVisibility_%1").arg(id()); + const auto setting_name = QString("WideBarVisibility_%1").arg(id()); m_wide_bar_setting = APPLICATION->settings()->getOrRegisterSetting(setting_name); ui->toolBar->setVisibilityState(QByteArray::fromBase64(m_wide_bar_setting->get().toString().toUtf8())); @@ -260,9 +260,11 @@ void WorldListPage::on_actionData_Packs_triggered() dialog->setLayout(layout); dialog->setAttribute(Qt::WA_DeleteOnClose); - dialog->exec(); - APPLICATION->settings()->set("DataPackDownloadGeometry", dialog->saveGeometry().toBase64()); + connect(dialog, &QDialog::finished, this, + [dialog]() { APPLICATION->settings()->set("DataPackDownloadGeometry", dialog->saveGeometry().toBase64()); }); + + dialog->open(); } void WorldListPage::on_actionReset_Icon_triggered()