From 31f019a944cad089279d29c1c59de7447e24caa4 Mon Sep 17 00:00:00 2001 From: Charles Edward Gagnon Date: Mon, 12 Aug 2024 20:27:04 -0400 Subject: [PATCH] make it take Some again --- src/use_mouse.rs | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/src/use_mouse.rs b/src/use_mouse.rs index 2ff9a7a..e8ca691 100644 --- a/src/use_mouse.rs +++ b/src/use_mouse.rs @@ -259,42 +259,47 @@ impl Default for UseMouseCoordType { } /// Trait to implement if you want to specify a custom extractor +#[allow(unused_variables)] pub trait UseMouseEventExtractor { /// Return the coordinates from mouse events (`Some(x, y)`) or `None` - fn extract_mouse_coords(&self, event: &web_sys::MouseEvent) -> (f64, f64); + fn extract_mouse_coords(&self, event: &web_sys::MouseEvent) -> Option<(f64, f64)> { + None + } /// Return the coordinates from touches (`Some(x, y)`) or `None` - fn extract_touch_coords(&self, touch: &web_sys::Touch) -> (f64, f64); + fn extract_touch_coords(&self, touch: &web_sys::Touch) -> Option<(f64, f64)> { + None + } } impl UseMouseEventExtractor for UseMouseCoordType { - fn extract_mouse_coords(&self, event: &web_sys::MouseEvent) -> (f64, f64) { - match self { + fn extract_mouse_coords(&self, event: &web_sys::MouseEvent) -> Option<(f64, f64)> { + Some(match self { UseMouseCoordType::Page => (event.page_x() as f64, event.page_y() as f64), UseMouseCoordType::Client => (event.client_x() as f64, event.client_y() as f64), UseMouseCoordType::Screen => (event.screen_x() as f64, event.client_y() as f64), UseMouseCoordType::Movement => (event.movement_x() as f64, event.movement_y() as f64), - UseMouseCoordType::Custom(ref extractor) => extractor.extract_mouse_coords(event), - } + UseMouseCoordType::Custom(ref extractor) => return extractor.extract_mouse_coords(event), + }) } - fn extract_touch_coords(&self, touch: &web_sys::Touch) -> (f64, f64) { - match self { + fn extract_touch_coords(&self, touch: &web_sys::Touch) -> Option<(f64, f64)> { + Some(match self { UseMouseCoordType::Page => (touch.page_x() as f64, touch.page_y() as f64), UseMouseCoordType::Client => (touch.client_x() as f64, touch.client_y() as f64), UseMouseCoordType::Screen => (touch.screen_x() as f64, touch.client_y() as f64), - UseMouseCoordType::Movement => (0., 0.), - UseMouseCoordType::Custom(ref extractor) => extractor.extract_touch_coords(touch), - } + UseMouseCoordType::Movement => return None, + UseMouseCoordType::Custom(ref extractor) => return extractor.extract_touch_coords(touch), + }) } } impl UseMouseEventExtractor for Infallible { - fn extract_mouse_coords(&self, _: &web_sys::MouseEvent) -> (f64, f64) { + fn extract_mouse_coords(&self, _: &web_sys::MouseEvent) -> Option<(f64, f64)> { unreachable!() } - fn extract_touch_coords(&self, _: &web_sys::Touch) -> (f64, f64) { + fn extract_touch_coords(&self, _: &web_sys::Touch) -> Option<(f64, f64)> { unreachable!() } }