summaryrefslogtreecommitdiff
path: root/engine/src/windowing.rs
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2025-10-30 15:52:13 +0100
committerHampusM <hampus@hampusmat.com>2025-11-06 22:35:45 +0100
commita523c4308703c41215c8688c1c9bf1eb3908ddac (patch)
treed3958d8ae2b9dba5b206d41c803a366e20d394ad /engine/src/windowing.rs
parent3cc7283a0452fe62939cc8ce7b52ff93e8781a2f (diff)
feat(engine): add scale factor to Window struct
Diffstat (limited to 'engine/src/windowing.rs')
-rw-r--r--engine/src/windowing.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/engine/src/windowing.rs b/engine/src/windowing.rs
index 69adae9..2bfdb31 100644
--- a/engine/src/windowing.rs
+++ b/engine/src/windowing.rs
@@ -195,6 +195,29 @@ fn update_stuff(
actions.remove_comps::<(Window,)>(*window_ent_id);
}
+ MessageFromApp::WindowScaleFactorChanged(window_id, scale_factor) => {
+ let Some(window_ent_id) =
+ windows.get(&window_id).map(|(_, ent_id)| ent_id)
+ else {
+ tracing::error!(
+ wid = ?window_id,
+ "Window does not exist in windowing context"
+ );
+ continue;
+ };
+
+ let Some(window_ent) = entity_obtainer.get_entity(*window_ent_id) else {
+ continue;
+ };
+
+ let Some(mut window) = window_ent.get_mut::<Window>() else {
+ continue;
+ };
+
+ window.set_scale_factor(scale_factor);
+
+ window.set_changed();
+ }
MessageFromApp::KeyboardKeyStateChanged(key, key_state) => {
keyboard.set_key_state(key, key_state);
}
@@ -405,6 +428,7 @@ enum MessageFromApp
WindowCreated(Uid, Arc<WinitWindow>, WindowCreationAttributes),
WindowResized(WindowId, Dimens<u32>),
WindowCloseRequested(WindowId),
+ WindowScaleFactorChanged(WindowId, f64),
KeyboardKeyStateChanged(Key, KeyState),
MouseMoved
{
@@ -605,6 +629,12 @@ impl ApplicationHandler for App
self.focused_window_id = None;
}
}
+ WindowEvent::ScaleFactorChanged { scale_factor, inner_size_writer: _ } => {
+ self.send_message(MessageFromApp::WindowScaleFactorChanged(
+ WindowId::from_inner(window_id),
+ scale_factor,
+ ));
+ }
_ => {}
}
}