From 0918fd95082f3ad4837dec64e6c76d68f06da2fd Mon Sep 17 00:00:00 2001 From: HampusM Date: Thu, 11 Jun 2026 17:30:17 +0200 Subject: feat(engine): make window inner size modifiable --- engine/src/windowing/window.rs | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) (limited to 'engine/src/windowing') diff --git a/engine/src/windowing/window.rs b/engine/src/windowing/window.rs index 79b16e4..5c5e149 100644 --- a/engine/src/windowing/window.rs +++ b/engine/src/windowing/window.rs @@ -115,8 +115,8 @@ pub struct Window pub title: String, pub cursor_visible: bool, pub cursor_grab_mode: CursorGrabMode, + pub inner_size: Dimens, wid: Id, - inner_size: Dimens, scale_factor: f64, } @@ -127,11 +127,6 @@ impl Window self.wid } - pub fn inner_size(&self) -> &Dimens - { - &self.inner_size - } - pub fn scale_factor(&self) -> f64 { self.scale_factor @@ -152,10 +147,27 @@ impl Window } } - pub(crate) fn apply(&self, winit_window: &winit::window::Window) + #[must_use] + pub(crate) fn apply(&self, winit_window: &winit::window::Window) -> ApplyResults { winit_window.set_title(&self.title); winit_window.set_cursor_visible(self.cursor_visible); + + let curr_inner_size = winit_window.inner_size(); + + let inner_size_request_result = match winit_window + .request_inner_size(winit::dpi::Size::Physical(self.inner_size.into())) + { + // The comparison of curr_inner_size is in case the user's windowing system + // lies about using the requested inner size + None if curr_inner_size == self.inner_size.into() => Ok(()), + None => Err(curr_inner_size.into()), + Some(inner_size) => Err(inner_size.into()), + }; + + ApplyResults { + inner_size_request: inner_size_request_result, + } } pub(crate) fn set_inner_size(&mut self, inner_size: Dimens) @@ -209,3 +221,9 @@ impl

From> for winit::dpi::PhysicalSize

} } } + +#[derive(Debug)] +pub(crate) struct ApplyResults +{ + pub inner_size_request: Result<(), Dimens>, +} -- cgit v1.2.3-18-g5258