diff --git a/Cargo.lock b/Cargo.lock index 255e175..c911662 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -562,9 +562,9 @@ dependencies = [ [[package]] name = "bytemuck_derive" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" +checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ "proc-macro2", "quote", @@ -1160,9 +1160,9 @@ dependencies = [ [[package]] name = "figures" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03202a3576f662d11a8fe13ce5677c80b4fa2e8366ee77dfe42a187e2e23428e" +checksum = "097ad6ec659462a9d6efea9af358a9564e52d76981aa9d73343ab3c566d083c0" dependencies = [ "bytemuck", "euclid", @@ -1199,9 +1199,9 @@ dependencies = [ [[package]] name = "font-types" -version = "0.6.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f0189ccb084f77c5523e08288d418cbaa09c451a08515678a0aa265df9a8b60" +checksum = "dda6e36206148f69fc6ecb1bb6c0dedd7ee469f3db1d0dc2045beea28430ca43" dependencies = [ "bytemuck", ] @@ -1729,7 +1729,7 @@ checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" [[package]] name = "kludgine" version = "0.11.0" -source = "git+https://github.com/khonsulabs/kludgine#3ce7d43f8870a3455f46ab2c2fba997ca36a1f60" +source = "git+https://github.com/khonsulabs/kludgine#0df62c716c13a93ee249b79d9c831933d0d49d99" dependencies = [ "ahash", "alot", @@ -2705,9 +2705,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "b3e4daa0dcf6feba26f985457cdf104d4b4256fc5a09547140f3631bb076b19a" dependencies = [ "unicode-ident", ] @@ -2905,9 +2905,9 @@ dependencies = [ [[package]] name = "read-fonts" -version = "0.20.0" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c141b9980e1150201b2a3a32879001c8f975fe313ec3df5471a9b5c79a880cd" +checksum = "fb94d9ac780fdcf9b6b252253f7d8f221379b84bd3573131139b383df69f85e1" dependencies = [ "bytemuck", "font-types", @@ -3204,9 +3204,9 @@ checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "skrifa" -version = "0.20.0" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abea4738067b1e628c6ce28b2c216c19e9ea95715cdb332680e821c3bec2ef23" +checksum = "8e1c44ad1f6c5bdd4eefed8326711b7dbda9ea45dfd36068c427d332aa382cbe" dependencies = [ "bytemuck", "read-fonts", @@ -3308,9 +3308,9 @@ checksum = "20e16a0f46cf5fd675563ef54f26e83e20f2366bcf027bcb3cc3ed2b98aaf2ca" [[package]] name = "swash" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93cdc334a50fcc2aa3f04761af3b28196280a6aaadb1ef11215c478ae32615ac" +checksum = "cbd59f3f359ddd2c95af4758c18270eddd9c730dde98598023cdabff472c2ca2" dependencies = [ "skrifa", "yazi", diff --git a/src/window.rs b/src/window.rs index 8c04448..246938e 100644 --- a/src/window.rs +++ b/src/window.rs @@ -1335,7 +1335,6 @@ struct OpenWindow { tree: Tree, root: MountedWidget, contents: Drawing, - should_close: bool, cursor: CursorState, mouse_buttons: AHashMap>, redraw_status: InvalidationStatus, @@ -1385,17 +1384,14 @@ where T: WindowBehavior, { fn request_close( - should_close: &mut bool, behavior: &mut T, window: &mut RunningWindow>, ) -> bool { - *should_close |= behavior.close_requested(window) + behavior.close_requested(window) && window .close_requested .as_ref() - .map_or(true, |close| close.invoke(())); - - *should_close + .map_or(true, |close| close.invoke(())) } fn keyboard_activate_widget( @@ -1622,7 +1618,7 @@ where && input.state.is_pressed() && self.behavior.close_requested(window) { - self.should_close = true; + window.close(); window.set_needs_redraw(); } HANDLED @@ -1773,7 +1769,6 @@ where root, tree, contents: Drawing::default(), - should_close: false, cursor: CursorState { location: None, widget: None, @@ -1970,7 +1965,7 @@ where { let cushy = self.app.cushy().clone(); let _guard = cushy.enter_runtime(); - if self.behavior.close_requested(&mut RunningWindow::new( + let mut window = RunningWindow::new( window, kludgine.id(), &self.redraw_status, @@ -1979,8 +1974,9 @@ where &self.occluded, self.inner_size.source(), &self.close_requested, - )) { - self.should_close = true; + ); + if self.behavior.close_requested(&mut window) { + window.close(); true } else { false @@ -2598,10 +2594,8 @@ where &'pass mut self, _window: kludgine::app::Window<'_, WindowCommand>, graphics: &mut kludgine::RenderingGraphics<'_, 'pass>, - ) -> bool { + ) { self.contents.render(1., graphics); - - !self.should_close } fn initial_window_attributes(context: &Self::Context) -> kludgine::app::WindowAttributes { @@ -2628,7 +2622,6 @@ where let cushy = self.app.cushy().clone(); let _guard = cushy.enter_runtime(); Self::request_close( - &mut self.should_close, &mut self.behavior, &mut RunningWindow::new( window,