summaryrefslogtreecommitdiff
path: root/engine/src/windowing.rs
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2026-06-28 00:09:06 +0200
committerHampusM <hampus@hampusmat.com>2026-06-30 18:24:47 +0200
commit9df8a4d197e66accb389edb5a5c54117933f157e (patch)
tree2d348fea32df9dd73ec6b961fae63e8ccb60899d /engine/src/windowing.rs
parent4a5e3e612e8b597dd1734afefd01324b74fd99ab (diff)
feat(engine): add windowing DPI utilities
Diffstat (limited to 'engine/src/windowing.rs')
-rw-r--r--engine/src/windowing.rs28
1 files changed, 16 insertions, 12 deletions
diff --git a/engine/src/windowing.rs b/engine/src/windowing.rs
index 5866c47..c79812a 100644
--- a/engine/src/windowing.rs
+++ b/engine/src/windowing.rs
@@ -11,7 +11,6 @@ use ecs::error::Error as EcsError;
use raw_window_handle::{DisplayHandle, HandleError, HasDisplayHandle, WindowHandle};
use rfd::{MessageButtons, MessageDialog, MessageLevel};
use winit::application::ApplicationHandler;
-use winit::dpi::PhysicalPosition;
use winit::error::EventLoopError;
use winit::event::{DeviceEvent, DeviceId, StartCause, WindowEvent};
use winit::event_loop::{
@@ -23,7 +22,6 @@ use winit::event_loop::{
use winit::keyboard::PhysicalKey;
use winit::window::{Window as WinitWindow, WindowId as WinitWindowId};
-use crate::data_types::dimens::Dimens;
use crate::ecs::actions::Actions;
use crate::ecs::component::Component;
use crate::ecs::entity::obtainer::Obtainer as EntityObtainer;
@@ -35,6 +33,7 @@ use crate::ecs::system::observer::Observe;
use crate::ecs::uid::Uid;
use crate::ecs::{declare_entity, Query, Sole};
use crate::util::{AtomicTwoF64, MapVec};
+use crate::windowing::dpi::{PhysicalPosition, PhysicalSize, Position};
use crate::windowing::keyboard::{Key, KeyState, Keyboard, UnknownKeyCodeError};
use crate::windowing::mouse::{
Button as MouseButton,
@@ -51,6 +50,7 @@ use crate::windowing::window::{
Window,
};
+pub mod dpi;
pub mod keyboard;
pub mod mouse;
pub mod window;
@@ -178,11 +178,15 @@ fn update_stuff(
.swap((0.0, 0.0), Ordering::Relaxed)
.into();
- mouse.position = context
+ let absolute_mouse_pos = context
.shared_state
.absolute_mouse_pos
- .load(Ordering::Relaxed)
- .into();
+ .load(Ordering::Relaxed);
+
+ mouse.position = PhysicalPosition {
+ x: absolute_mouse_pos.0,
+ y: absolute_mouse_pos.1
+ };
keyboard.set_text_keys(iter_array_queue(&context.shared_state.text_keys));
@@ -248,7 +252,7 @@ fn update_stuff(
continue;
};
- window.set_inner_size(new_window_size);
+ window.inner_size = new_window_size;
window.set_changed();
}
@@ -338,7 +342,7 @@ fn handle_window_changed(
let window_apply_results = window.apply(winit_window);
if let Err(actual_window_inner_size) = window_apply_results.inner_size_request {
- window.set_inner_size(actual_window_inner_size);
+ window.inner_size = actual_window_inner_size;
}
context.try_send_message_to_app(MessageToApp::SetWindowCursorGrabMode(
@@ -547,7 +551,7 @@ enum MessageFromApp
{
Init(OwnedDisplayHandle),
WindowCreated(Uid, Arc<WinitWindow>, WindowCreationAttributes),
- WindowResized(WindowId, Dimens<u32>),
+ WindowResized(WindowId, PhysicalSize<u32>),
WindowCloseRequested(WindowId),
WindowScaleFactorChanged(WindowId, f64),
KeyboardKeyStateChanged(Key, KeyState),
@@ -786,10 +790,10 @@ impl ApplicationHandler for App
let window_size = window.inner_size();
- if let Err(err) = window.set_cursor_position(PhysicalPosition {
- x: window_size.width / 2,
- y: window_size.height / 2,
- }) {
+ if let Err(err) = window.set_cursor_position(Position::Physical(PhysicalPosition {
+ x: window_size.width as i32 / 2,
+ y: window_size.height as i32 / 2,
+ })) {
cold_path();
tracing::error!(
window_id=?window_id,