diff options
Diffstat (limited to 'engine/src/windowing.rs')
| -rw-r--r-- | engine/src/windowing.rs | 30 |
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, + )); + } _ => {} } } |
