From a108b2eebe210c774d07e436be5d73293dfea9eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ram=C3=B3n=20Jim=C3=A9nez?= Date: Sat, 13 Jul 2024 12:53:06 +0200 Subject: [PATCH] Add `resize_events` subscription to `window` module --- core/src/window/event.rs | 14 ++------------ runtime/src/window.rs | 11 +++++++++++ winit/src/conversion.rs | 6 +++--- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/core/src/window/event.rs b/core/src/window/event.rs index a14d127fa4..c9532e0d9f 100644 --- a/core/src/window/event.rs +++ b/core/src/window/event.rs @@ -23,20 +23,10 @@ pub enum Event { Closed, /// A window was moved. - Moved { - /// The new logical x location of the window - x: i32, - /// The new logical y location of the window - y: i32, - }, + Moved(Point), /// A window was resized. - Resized { - /// The new logical width of the window - width: u32, - /// The new logical height of the window - height: u32, - }, + Resized(Size), /// A window redraw was requested. /// diff --git a/runtime/src/window.rs b/runtime/src/window.rs index 815827d104..ee03f84fca 100644 --- a/runtime/src/window.rs +++ b/runtime/src/window.rs @@ -194,6 +194,17 @@ pub fn close_events() -> Subscription { }) } +/// Subscribes to all [`Event::Resized`] occurrences in the running application. +pub fn resize_events() -> Subscription<(Id, Size)> { + event::listen_with(|event, _status, id| { + if let crate::core::Event::Window(Event::Resized(size)) = event { + Some((id, size)) + } else { + None + } + }) +} + /// Subscribes to all [`Event::CloseRequested`] occurences in the running application. pub fn close_requests() -> Subscription { event::listen_with(|event, _status, id| { diff --git a/winit/src/conversion.rs b/winit/src/conversion.rs index 0ed10c88d8..e88ff84d78 100644 --- a/winit/src/conversion.rs +++ b/winit/src/conversion.rs @@ -132,10 +132,10 @@ pub fn window_event( WindowEvent::Resized(new_size) => { let logical_size = new_size.to_logical(scale_factor); - Some(Event::Window(window::Event::Resized { + Some(Event::Window(window::Event::Resized(Size { width: logical_size.width, height: logical_size.height, - })) + }))) } WindowEvent::CloseRequested => { Some(Event::Window(window::Event::CloseRequested)) @@ -277,7 +277,7 @@ pub fn window_event( let winit::dpi::LogicalPosition { x, y } = position.to_logical(scale_factor); - Some(Event::Window(window::Event::Moved { x, y })) + Some(Event::Window(window::Event::Moved(Point::new(x, y)))) } _ => None, }