From 5ad0938b3ec1cac438b4232941e6d17d1db14014 Mon Sep 17 00:00:00 2001 From: blankie Date: Wed, 29 Mar 2023 17:06:50 +0700 Subject: [PATCH] Fix possible data loss --- fragments/ok_buttons_fragment.h | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/fragments/ok_buttons_fragment.h b/fragments/ok_buttons_fragment.h index ed155ee..ce781be 100644 --- a/fragments/ok_buttons_fragment.h +++ b/fragments/ok_buttons_fragment.h @@ -8,19 +8,25 @@ void ok_buttons_fragment(bool* p_open, auto ok, auto apply); // function bodies must be in the header because https://stackoverflow.com/a/999383 void ok_buttons_fragment(bool* p_open, auto ok, auto apply) { + bool action_done = false; ImVec2 button_size(4 * ImGui::GetFontSize(), 0); bool ctrl_s_pressed = ImGui::IsKeyPressed(ImGuiMod_Shortcut | ImGuiKey_S); - if (ImGui::Button("OK", button_size)) { + if (ImGui::Button("OK", button_size) && !action_done) { ok(); *p_open = false; + action_done = true; } + ImGui::SameLine(); - if (ImGui::Button("Cancel", button_size)) { + if (ImGui::Button("Cancel", button_size) && !action_done) { *p_open = false; + action_done = true; } + ImGui::SameLine(); - if (ImGui::Button("Apply", button_size) || ctrl_s_pressed) { + if ((ImGui::Button("Apply", button_size) || ctrl_s_pressed) && !action_done) { apply(); + action_done = true; } }