summaryrefslogtreecommitdiff
path: root/engine/src/windowing
diff options
context:
space:
mode:
Diffstat (limited to 'engine/src/windowing')
-rw-r--r--engine/src/windowing/window.rs32
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>>,
+}