diff options
author | 2020-11-05 02:11:11 +0100 | |
---|---|---|
committer | 2020-11-05 04:09:40 +0100 | |
commit | 88993fb092fb0391ea42ffd725f680d1c98c95d7 (patch) | |
tree | b6315b1b3e3078c35a7a69e1631804cbe8f3e0cb /winit/src/application/state.rs | |
parent | 86b26f65d6e28698d9e6b2d8356105847b0d64c5 (diff) | |
download | iced-88993fb092fb0391ea42ffd725f680d1c98c95d7.tar.gz iced-88993fb092fb0391ea42ffd725f680d1c98c95d7.tar.bz2 iced-88993fb092fb0391ea42ffd725f680d1c98c95d7.zip |
Relayout `UserInterface` on resize in `iced_winit`
Diffstat (limited to 'winit/src/application/state.rs')
-rw-r--r-- | winit/src/application/state.rs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/winit/src/application/state.rs b/winit/src/application/state.rs index 7de3ecef..1f3c77a0 100644 --- a/winit/src/application/state.rs +++ b/winit/src/application/state.rs @@ -12,6 +12,7 @@ pub struct State<A: Application> { background_color: Color, scale_factor: f64, viewport: Viewport, + viewport_version: usize, cursor_position: winit::dpi::PhysicalPosition<f64>, modifiers: winit::event::ModifiersState, application: PhantomData<A>, @@ -39,6 +40,7 @@ impl<A: Application> State<A> { background_color, scale_factor, viewport, + viewport_version: 0, // TODO: Encode cursor availability in the type-system cursor_position: winit::dpi::PhysicalPosition::new(-1.0, -1.0), modifiers: winit::event::ModifiersState::default(), @@ -54,6 +56,10 @@ impl<A: Application> State<A> { &self.viewport } + pub fn viewport_version(&self) -> usize { + self.viewport_version + } + pub fn physical_size(&self) -> Size<u32> { self.viewport.physical_size() } @@ -91,6 +97,8 @@ impl<A: Application> State<A> { size, window.scale_factor() * self.scale_factor, ); + + self.viewport_version = self.viewport_version.wrapping_add(1); } WindowEvent::ScaleFactorChanged { scale_factor: new_scale_factor, @@ -103,6 +111,8 @@ impl<A: Application> State<A> { size, new_scale_factor * self.scale_factor, ); + + self.viewport_version = self.viewport_version.wrapping_add(1); } WindowEvent::CursorMoved { position, .. } => { self.cursor_position = *position; |