From 8de87b8f1b917ac0b86b101bb4bc77fd51a2efba Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Sat, 10 Sep 2022 22:43:09 -0400 Subject: fix: sync size of window and viewport --- winit/src/application/state.rs | 9 ++++++--- 1 file 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; } -- cgit