From 59a816c696c7e825bf677e8b0a3bdc4c8e9b81c2 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 6 Mar 2025 10:16:53 +0200 Subject: [PATCH] fix duplicate optional mods dialog appearing when updating a modpack Signed-off-by: Trial97 tmp --- .../flame/FlameInstanceCreationTask.cpp | 5 +++ .../modrinth/ModrinthInstanceCreationTask.cpp | 44 ++++++++++++------- 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp index 6073e90a2..16d47f64a 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp @@ -227,6 +227,11 @@ bool FlameCreationTask::updateInstance() QString relative_path(FS::PathCombine(file.targetFolder, file.version.fileName)); qDebug() << "Scheduling" << relative_path << "for removal"; m_files_to_remove.append(old_minecraft_dir.absoluteFilePath(relative_path)); + if (relative_path.endsWith(".disabled")) { // remove it if it was enabled/disabled by user + m_files_to_remove.append(old_minecraft_dir.absoluteFilePath(relative_path.chopped(9))); + } else { + m_files_to_remove.append(old_minecraft_dir.absoluteFilePath(relative_path + ".disabled")); + } } }); connect(job.get(), &Task::failed, this, [](QString reason) { qCritical() << "Failed to get files: " << reason; }); diff --git a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp index 2cc8767a4..374b7681e 100644 --- a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp +++ b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp @@ -121,6 +121,11 @@ bool ModrinthCreationTask::updateInstance() continue; qDebug() << "Scheduling" << file.path << "for removal"; m_files_to_remove.append(old_minecraft_dir.absoluteFilePath(file.path)); + if (file.path.endsWith(".disabled")) { // remove it if it was enabled/disabled by user + m_files_to_remove.append(old_minecraft_dir.absoluteFilePath(file.path.chopped(9))); + } else { + m_files_to_remove.append(old_minecraft_dir.absoluteFilePath(file.path + ".disabled")); + } } } @@ -416,23 +421,30 @@ bool ModrinthCreationTask::parseManifest(const QString& index_path, } if (!optionalFiles.empty()) { - QStringList oFiles; - for (auto file : optionalFiles) - oFiles.push_back(file.path); - OptionalModDialog optionalModDialog(m_parent, oFiles); - if (optionalModDialog.exec() == QDialog::Rejected) { - emitAborted(); - return false; - } - - auto selectedMods = optionalModDialog.getResult(); - for (auto file : optionalFiles) { - if (selectedMods.contains(file.path)) { - file.required = true; - } else { - file.path += ".disabled"; + if (show_optional_dialog) { + QStringList oFiles; + for (auto file : optionalFiles) + oFiles.push_back(file.path); + OptionalModDialog optionalModDialog(m_parent, oFiles); + if (optionalModDialog.exec() == QDialog::Rejected) { + emitAborted(); + return false; + } + + auto selectedMods = optionalModDialog.getResult(); + for (auto file : optionalFiles) { + if (selectedMods.contains(file.path)) { + file.required = true; + } else { + file.path += ".disabled"; + } + files.push_back(file); + } + } else { + for (auto file : optionalFiles) { + file.path += ".disabled"; + files.push_back(file); } - files.push_back(file); } } if (set_internal_data) {