diff options
author | 2022-09-10 22:43:09 -0400 | |
---|---|---|
committer | 2022-09-10 22:43:09 -0400 | |
commit | 8de87b8f1b917ac0b86b101bb4bc77fd51a2efba (patch) | |
tree | e44c3ec969a5e270731125fecb0d2cc64bc1a7e4 /winit | |
parent | d6598119646582658783cc2d87fdfd504f4ff230 (diff) | |
download | iced-8de87b8f1b917ac0b86b101bb4bc77fd51a2efba.tar.gz iced-8de87b8f1b917ac0b86b101bb4bc77fd51a2efba.tar.bz2 iced-8de87b8f1b917ac0b86b101bb4bc77fd51a2efba.zip |
fix: sync size of window and viewport
Diffstat (limited to 'winit')
-rw-r--r-- | winit/src/application/state.rs | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/winit/src/application/state.rs b/winit/src/application/state.rs index 5e953cb5..6b02736e 100644 --- a/winit/src/application/state.rs +++ b/winit/src/application/state.rs @@ -3,6 +3,7 @@ use crate::conversion; use crate::{Application, Color, Debug, Point, Size, Viewport}; use std::marker::PhantomData; +use winit::dpi::PhysicalSize; use winit::event::{Touch, WindowEvent}; use winit::window::Window; @@ -190,16 +191,18 @@ where self.title = new_title; } - // Update scale factor + // Update scale factor and size let new_scale_factor = application.scale_factor(); - - if self.scale_factor != new_scale_factor { + let Size { width, height } = self.viewport.physical_size(); + let PhysicalSize { width: w_width, height: w_height} = window.inner_size(); + if self.scale_factor != new_scale_factor || (width, height) != (w_width, w_height) { let size = window.inner_size(); self.viewport = Viewport::with_physical_size( Size::new(size.width, size.height), window.scale_factor() * new_scale_factor, ); + self.viewport_version = self.viewport_version.wrapping_add(1); self.scale_factor = new_scale_factor; } |