diff --git a/packages/html/src/web_sys_bind/events.rs b/packages/html/src/web_sys_bind/events.rs index 5f0e5b2a3..196099444 100644 --- a/packages/html/src/web_sys_bind/events.rs +++ b/packages/html/src/web_sys_bind/events.rs @@ -4,6 +4,7 @@ use crate::events::{ }; use crate::geometry::{ClientPoint, Coordinates, ElementPoint, PagePoint, ScreenPoint}; use crate::input_data::{decode_key_location, decode_mouse_button_set, MouseButton}; +use crate::DragData; use keyboard_types::{Code, Key, Modifiers}; use std::convert::TryInto; use std::str::FromStr; @@ -40,6 +41,7 @@ uncheck_convert![ CompositionEvent => CompositionData, KeyboardEvent => KeyboardData, MouseEvent => MouseData, + MouseEvent => DragData, TouchEvent => TouchData, PointerEvent => PointerData, WheelEvent => WheelData, @@ -117,6 +119,14 @@ impl From<&MouseEvent> for MouseData { } } +impl From<&MouseEvent> for DragData { + fn from(value: &MouseEvent) -> Self { + Self { + mouse: MouseData::from(value), + } + } +} + impl From<&TouchEvent> for TouchData { fn from(e: &TouchEvent) -> Self { Self { diff --git a/packages/web/src/dom.rs b/packages/web/src/dom.rs index 427adc742..252add068 100644 --- a/packages/web/src/dom.rs +++ b/packages/web/src/dom.rs @@ -229,11 +229,13 @@ pub fn virtual_event_from_websys_event(event: web_sys::Event, target: Element) - "change" | "input" | "invalid" | "reset" | "submit" => read_input_to_data(target), - "click" | "contextmenu" | "dblclick" | "doubleclick" | "drag" | "dragend" | "dragenter" - | "dragexit" | "dragleave" | "dragover" | "dragstart" | "drop" | "mousedown" - | "mouseenter" | "mouseleave" | "mousemove" | "mouseout" | "mouseover" | "mouseup" => { + "click" | "contextmenu" | "dblclick" | "doubleclick" | "mousedown" | "mouseenter" + | "mouseleave" | "mousemove" | "mouseout" | "mouseover" | "mouseup" => { Rc::new(MouseData::from(event)) } + "drag" | "dragend" | "dragenter" | "dragexit" | "dragleave" | "dragover" | "dragstart" + | "drop" => Rc::new(DragData::from(event)), + "pointerdown" | "pointermove" | "pointerup" | "pointercancel" | "gotpointercapture" | "lostpointercapture" | "pointerenter" | "pointerleave" | "pointerover" | "pointerout" => { Rc::new(PointerData::from(event))