From a51234d353a38a607299d56afadbff82028df8e4 Mon Sep 17 00:00:00 2001 From: "hinto.janai" Date: Thu, 28 Dec 2023 09:22:45 -0500 Subject: [PATCH] main: fix closing --- src/main.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main.rs b/src/main.rs index 6c75a64..a219437 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1191,26 +1191,35 @@ impl eframe::App for App { // If closing. // Used to be `eframe::App::on_close_event(&mut self) -> bool`. - ctx.input(|input| { + let close_signal = ctx.input(|input| { + use egui::viewport::ViewportCommand; + if !input.viewport().close_requested() { - return; + return None; } if self.state.gupax.ask_before_quit { // If we're already on the [ask_before_quit] screen and // the user tried to exit again, exit. if self.error_state.quit_twice { if self.state.gupax.save_before_quit { self.save_before_quit(); } - ctx.send_viewport_cmd(egui::viewport::ViewportCommand::Close); + return Some(ViewportCommand::Close); } // Else, set the error self.error_state.set("", ErrorFerris::Oops, ErrorButtons::StayQuit); self.error_state.quit_twice = true; + Some(ViewportCommand::CancelClose) // Else, just quit. } else { if self.state.gupax.save_before_quit { self.save_before_quit(); } - ctx.send_viewport_cmd(egui::viewport::ViewportCommand::Close); + Some(ViewportCommand::Close) } }); + // This will either: + // 1. Cancel a close signal + // 2. Close the program + if let Some(cmd) = close_signal { + ctx.send_viewport_cmd(cmd); + } // If [F11] was pressed, reverse [fullscreen] bool let key: KeyPressed = ctx.input_mut(|input| {