diff --git a/src/app/cosmic.rs b/src/app/cosmic.rs index 76438aa3..559eb463 100644 --- a/src/app/cosmic.rs +++ b/src/app/cosmic.rs @@ -449,8 +449,10 @@ impl Cosmic { } Message::Close => { - self.app.on_app_exit(); - return self.close(); + return match self.app.on_app_exit() { + Some(message) => self.app.update(message), + None => self.close(), + }; } Message::SystemThemeModeChange(keys, mode) => { let mut cmds = vec![self.app.system_theme_mode_update(&keys, &mode)]; diff --git a/src/app/mod.rs b/src/app/mod.rs index b8d7a70d..ec5c5f96 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -494,8 +494,10 @@ where None } - /// Called before closing the application. - fn on_app_exit(&mut self) {} + /// Called before closing the application. Returning a message will override closing windows. + fn on_app_exit(&mut self) -> Option { + None + } /// Called when a window requests to be closed. fn on_close_requested(&self, id: window::Id) -> Option {