From 6f2ef8c0249c2192dc18c8f8707b5d135404e597 Mon Sep 17 00:00:00 2001 From: siliconsniffer <97843108+siliconsniffer@users.noreply.github.com> Date: Wed, 23 Jul 2025 22:21:38 +0200 Subject: [PATCH] Apply suggestions from code review --- builtin/mainmenu/init.lua | 67 ++++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 32 deletions(-) diff --git a/builtin/mainmenu/init.lua b/builtin/mainmenu/init.lua index 6e28629052..17655e7524 100644 --- a/builtin/mainmenu/init.lua +++ b/builtin/mainmenu/init.lua @@ -47,42 +47,45 @@ local tabs = { } -------------------------------------------------------------------------------- +local function show_exit_dialog(tabview, show_dialog) + tabview:hide() + local dlg = dialog_create( + "mainmenu_quit_confirm", + function() + return "size[10,3,true]" .. + "label[0.5,0.5;" .. fgettext("Are you sure you want to quit?") .. "]" .. + "checkbox[0.5,1;cb_show_dialog;" .. fgettext("Always show this dialog.") .. ";" .. tostring(show_dialog) .. "]" .. + "style[btn_quit_confirm_yes;bgcolor=red]" .. + "button[0.5,2.0;2.5,0.5;btn_quit_confirm_yes;" .. fgettext("Quit") .. "]" .. + "button[7.0,2.0;2.5,0.5;btn_quit_confirm_cancel;" .. fgettext("Cancel") .. "]" + end, + function(this, fields) + if fields.cb_show_dialog ~= nil then + core.settings:set_bool("enable_esc_dialog", core.is_yes(fields.cb_show_dialog)) + return false + elseif fields.btn_quit_confirm_yes then + this:delete() + core.close() + return true + elseif fields.btn_quit_confirm_cancel or fields.key_escape or fields.quit then + this:delete() + if tabview and tabview.show then + tabview:show() + end + return true + end + end, + nil + ) + dlg:set_parent(tabview) + dlg:show() +end + local function main_event_handler(tabview, event) if event == "MenuQuit" then local show_dialog = core.settings:get_bool("enable_esc_dialog") if not ui.childlist["mainmenu_quit_confirm"] and show_dialog then - tabview:hide() - local dlg = dialog_create( - "mainmenu_quit_confirm", - function() - return "size[10,3,true]" .. - "label[0.5,0.5;" .. fgettext("Are you sure you want to quit?") .. "]" .. - "checkbox[0.5,1;cb_show_dialog;" .. fgettext("Always show this dialog.") .. ";" .. tostring(show_dialog) .. "]" .. - "style[btn_quit_confirm_yes;bgcolor=red]" .. - "button[0.5,2.0;2.5,0.5;btn_quit_confirm_yes;" .. fgettext("Quit") .. "]" .. - "button[7.0,2.0;2.5,0.5;btn_quit_confirm_cancel;" .. fgettext("Cancel") .. "]" - end, - function(this, fields) - if fields.cb_show_dialog ~= nil then - local value = (fields.cb_show_dialog == "true") and "true" or "false" - core.settings:set("enable_esc_dialog", value) - return false - elseif fields.btn_quit_confirm_yes then - this:delete() - core.close() - return true - elseif fields.btn_quit_confirm_cancel or fields.key_escape or fields.quit then - this:delete() - if tabview and tabview.show then - tabview:show() - end - return true - end - end, - nil - ) - dlg:set_parent(tabview) - dlg:show() + show_exit_dialog(tabview, show_dialog) else core.close() end