fix: sync size of window and viewport
This commit is contained in:
parent
d659811964
commit
8de87b8f1b
1 changed files with 6 additions and 3 deletions
|
|
@ -3,6 +3,7 @@ use crate::conversion;
|
||||||
use crate::{Application, Color, Debug, Point, Size, Viewport};
|
use crate::{Application, Color, Debug, Point, Size, Viewport};
|
||||||
|
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
|
use winit::dpi::PhysicalSize;
|
||||||
use winit::event::{Touch, WindowEvent};
|
use winit::event::{Touch, WindowEvent};
|
||||||
use winit::window::Window;
|
use winit::window::Window;
|
||||||
|
|
||||||
|
|
@ -190,16 +191,18 @@ where
|
||||||
self.title = new_title;
|
self.title = new_title;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update scale factor
|
// Update scale factor and size
|
||||||
let new_scale_factor = application.scale_factor();
|
let new_scale_factor = application.scale_factor();
|
||||||
|
let Size { width, height } = self.viewport.physical_size();
|
||||||
if self.scale_factor != new_scale_factor {
|
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();
|
let size = window.inner_size();
|
||||||
|
|
||||||
self.viewport = Viewport::with_physical_size(
|
self.viewport = Viewport::with_physical_size(
|
||||||
Size::new(size.width, size.height),
|
Size::new(size.width, size.height),
|
||||||
window.scale_factor() * new_scale_factor,
|
window.scale_factor() * new_scale_factor,
|
||||||
);
|
);
|
||||||
|
self.viewport_version = self.viewport_version.wrapping_add(1);
|
||||||
|
|
||||||
self.scale_factor = new_scale_factor;
|
self.scale_factor = new_scale_factor;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue