summaryrefslogtreecommitdiffstats
path: root/winit/src/application/state.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-11-05 02:11:11 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-11-05 04:09:40 +0100
commit88993fb092fb0391ea42ffd725f680d1c98c95d7 (patch)
treeb6315b1b3e3078c35a7a69e1631804cbe8f3e0cb /winit/src/application/state.rs
parent86b26f65d6e28698d9e6b2d8356105847b0d64c5 (diff)
downloadiced-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.rs10
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;