From 4fe38d8067c1a27e934e6bbd2da9dc9d69ef6ee2 Mon Sep 17 00:00:00 2001 From: daxpedda Date: Wed, 10 Jan 2024 13:38:32 +0100 Subject: [PATCH] Web: increase cursor position accuracy (#3380) --- CHANGELOG.md | 1 + src/platform_impl/web/web_sys/event.rs | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e62e5f53..a1f683eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ Unreleased` header. - **Breaking:** Rename `VideoMode` to `VideoModeHandle` to represent that it doesn't hold static data. - **Breaking:** No longer export `platform::x11::XNotSupported`. - **Breaking:** Renamed `platform::x11::XWindowType` to `platform::x11::WindowType`. +- On Web, increase cursor position accuracy. # 0.29.9 diff --git a/src/platform_impl/web/web_sys/event.rs b/src/platform_impl/web/web_sys/event.rs index c3ed2ea8..86ebd06a 100644 --- a/src/platform_impl/web/web_sys/event.rs +++ b/src/platform_impl/web/web_sys/event.rs @@ -81,9 +81,22 @@ impl MouseButton { } pub fn mouse_position(event: &MouseEvent) -> LogicalPosition { + #[wasm_bindgen] + extern "C" { + type MouseEventExt; + + #[wasm_bindgen(method, getter, js_name = offsetX)] + fn offset_x(this: &MouseEventExt) -> f64; + + #[wasm_bindgen(method, getter, js_name = offsetY)] + fn offset_y(this: &MouseEventExt) -> f64; + } + + let event: &MouseEventExt = event.unchecked_ref(); + LogicalPosition { - x: event.offset_x() as f64, - y: event.offset_y() as f64, + x: event.offset_x(), + y: event.offset_y(), } }