Requerying the inner window for the new size

This commit is contained in:
Jonathan Johnson 2023-10-17 09:45:04 -07:00
parent 0503b3d466
commit 665107f59b
No known key found for this signature in database
GPG key ID: A66D6A34D6620579

View file

@ -475,26 +475,10 @@ where
behavior.occlusion_changed(self);
}
WindowEvent::ScaleFactorChanged { scale_factor } => {
let factor_changed = scale_factor - self.scale;
let new_inner_size = if factor_changed.abs() >= f64::EPSILON {
// TODO use the suggested size from the writer <https://github.com/rust-windowing/winit/issues/3080>
PhysicalSize {
width: self.inner_size.width
+ lossy_f64_to_u32(
((f64::from(self.inner_size.width)) * factor_changed).round(),
),
height: self.inner_size.height
+ lossy_f64_to_u32(
(f64::from(self.inner_size.height) * factor_changed).round(),
),
}
} else {
self.inner_size
};
// Ensure both values are updated before any behavior
// callbacks are invoked.
self.scale = scale_factor;
// TODO not sure how to implement now
let new_inner_size = self.window.inner_size();
let inner_size_changed = self.inner_size != new_inner_size;
self.inner_size = new_inner_size;
behavior.scale_factor_changed(self);
@ -662,12 +646,6 @@ where
}
}
/// Performs `f64 as u32` but avoids clippy's lints.
#[allow(clippy::cast_possible_truncation, clippy::cast_sign_loss)]
fn lossy_f64_to_u32(value: f64) -> u32 {
value as u32
}
impl<AppMessage> Application<AppMessage> for RunningWindow<AppMessage>
where
AppMessage: Message,