From 2885c7d9d83c7cafd04242fd48c166e8883ef579 Mon Sep 17 00:00:00 2001 From: TakaRikka Date: Sat, 22 Aug 2026 23:01:09 -0700 Subject: [PATCH] disable OK button while seed is generating --- mods/randomizer/src/ui/rando_config.cpp | 12 ++++++------ mods/randomizer/src/ui/rando_seed_generation.cpp | 5 +++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/mods/randomizer/src/ui/rando_config.cpp b/mods/randomizer/src/ui/rando_config.cpp index 0f4adb0855..478b8babff 100644 --- a/mods/randomizer/src/ui/rando_config.cpp +++ b/mods/randomizer/src/ui/rando_config.cpp @@ -392,8 +392,8 @@ void SaveNewRandomizerPreset(const std::string& presetName, bool overwriteExisti // again but force overwrite the existing preset if (std::filesystem::exists(presetFilepath) && !overwriteExisting) { UiDialogAction actions[] = { - {"No", onOverwriteDialogNo, nullptr, false}, - {"Yes", onOverwriteDialogYes, nullptr, false}, + {sizeof(UiDialogAction), "No", onOverwriteDialogNo, nullptr, false, nullptr}, + {sizeof(UiDialogAction), "Yes", onOverwriteDialogYes, nullptr, false, nullptr}, }; actions[1].user_data = (void*)presetName.data(); @@ -476,8 +476,8 @@ void onPresetDialogCancel(ModContext* ctx, UiDialogHandle dialog, void* user_dat void buildPresetSaveDialog(ModContext* ctx, void* user_data) { UiDialogAction actions[] = { - {"Save", onPresetDialogSave, nullptr, false}, - {"Cancel", onPresetDialogCancel, nullptr, false}, + {sizeof(UiDialogAction), "Save", onPresetDialogSave, nullptr, false, nullptr}, + {sizeof(UiDialogAction), "Cancel", onPresetDialogCancel, nullptr, false, nullptr}, }; auto buildPaneFn = [](ModContext* ctx, UiElementHandle pane, void* user_data, ModError* out_error) { @@ -516,7 +516,7 @@ void onPresetLoad(ModContext* ctx, void* user_data) { std::vector presetList{}; void buildPresetLoadDialog(ModContext* ctx, void* user_data) { UiDialogAction actions[] = { - {"Cancel", onPresetDialogLoadCancel, nullptr, false}, + {sizeof(UiDialogAction), "Cancel", onPresetDialogLoadCancel, nullptr, false, nullptr}, }; auto buildPaneFn = [](ModContext* ctx, UiElementHandle pane, void* user_data, ModError* out_error) { @@ -577,7 +577,7 @@ bool isSeedDeleteDisabled(ModContext* ctx, void* user_data) { void buildSeedDeleteDialog(ModContext* ctx, void* user_data) { UiDialogAction actions[] = { - {"Cancel", onSeedDeleteCancel, nullptr, false}, + {sizeof(UiDialogAction), "Cancel", onSeedDeleteCancel, nullptr, false, nullptr}, }; auto buildPaneFn = [](ModContext* ctx, UiElementHandle pane, void* user_data, ModError* out_error) { diff --git a/mods/randomizer/src/ui/rando_seed_generation.cpp b/mods/randomizer/src/ui/rando_seed_generation.cpp index 271eceaf54..eb222b72d3 100644 --- a/mods/randomizer/src/ui/rando_seed_generation.cpp +++ b/mods/randomizer/src/ui/rando_seed_generation.cpp @@ -49,10 +49,15 @@ static ModResult buildDialog() { desc.variant = UI_DIALOG_NORMAL; UiDialogAction action = { + .struct_size = sizeof(UiDialogAction), .label = "OK", .on_pressed = OnDialogActionOK, .user_data = nullptr, .keep_open = false, + .is_disabled = [](ModContext*, void*) { + // disable button while seed is generating + return seedGenStatus.load() == SeedGenerateStatus::Generating; + } }; desc.actions = &action; desc.action_count = 1;