diff options
Diffstat (limited to 'engine/src/windowing/window.rs')
| -rw-r--r-- | engine/src/windowing/window.rs | 32 |
1 files changed, 25 insertions, 7 deletions
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<u32>, wid: Id, - inner_size: Dimens<u32>, scale_factor: f64, } @@ -127,11 +127,6 @@ impl Window self.wid } - pub fn inner_size(&self) -> &Dimens<u32> - { - &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<u32>) @@ -209,3 +221,9 @@ impl<P> From<Dimens<P>> for winit::dpi::PhysicalSize<P> } } } + +#[derive(Debug)] +pub(crate) struct ApplyResults +{ + pub inner_size_request: Result<(), Dimens<u32>>, +} |
