From 978ec7dfec273cefad16bfd23661f7cd1346bc03 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 77ef11388..130f07adb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ Unreleased` header. # Unreleased - On Web, account for canvas being focused already before event loop starts. +- 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 c81ed1c4a..a2a1c2d56 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(), } }