From d8026f88243ddff2d7a6b19ac367245227a57c2a Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Tue, 7 Apr 2026 15:18:24 -0500 Subject: [PATCH] Fix autofill event downcast - ignore events of the wrong type (#5379) * fix autofill events * ignore the wrong type of event like we do in desktop * check the event type before dispatch instead of panicing on downcast * clean up conversion * remove example * pull out shared event list * pull in deserialize_raw * unified event list * prettier comment * restore test * restore alias * normal doc comments * move over comments * minimize diff * remove alias, was moved into the macro --- packages/html/src/events/animation.rs | 13 - packages/html/src/events/cancel.rs | 7 - packages/html/src/events/clipboard.rs | 13 - packages/html/src/events/composition.rs | 13 - packages/html/src/events/drag.rs | 28 -- packages/html/src/events/focus.rs | 16 - packages/html/src/events/form.rs | 62 ---- packages/html/src/events/generated.rs | 448 ++++++++++++++++++++++++ packages/html/src/events/image.rs | 10 - packages/html/src/events/keyboard.rs | 13 - packages/html/src/events/media.rs | 75 ---- packages/html/src/events/mod.rs | 180 +--------- packages/html/src/events/mounted.rs | 67 +--- packages/html/src/events/mouse.rs | 60 ---- packages/html/src/events/pointer.rs | 36 -- packages/html/src/events/resize.rs | 7 - packages/html/src/events/scroll.rs | 10 - packages/html/src/events/selection.rs | 13 - packages/html/src/events/toggle.rs | 10 - packages/html/src/events/touch.rs | 15 - packages/html/src/events/transition.rs | 7 - packages/html/src/events/visible.rs | 7 - packages/html/src/events/wheel.rs | 7 - packages/html/src/transit.rs | 95 +---- packages/web/src/dom.rs | 12 +- packages/web/src/events/clipboard.rs | 6 - packages/web/src/events/mod.rs | 326 +++++++---------- 27 files changed, 596 insertions(+), 960 deletions(-) create mode 100644 packages/html/src/events/generated.rs diff --git a/packages/html/src/events/animation.rs b/packages/html/src/events/animation.rs index 23f621912..217c1f59e 100644 --- a/packages/html/src/events/animation.rs +++ b/packages/html/src/events/animation.rs @@ -130,16 +130,3 @@ pub trait HasAnimationData: std::any::Any { /// return self as Any fn as_any(&self) -> &dyn std::any::Any; } - -impl_event! [ - AnimationData; - - /// onanimationstart - onanimationstart - - /// onanimationend - onanimationend - - /// onanimationiteration - onanimationiteration -]; diff --git a/packages/html/src/events/cancel.rs b/packages/html/src/events/cancel.rs index ff36d5e35..507a0d769 100644 --- a/packages/html/src/events/cancel.rs +++ b/packages/html/src/events/cancel.rs @@ -79,10 +79,3 @@ pub trait HasCancelData: std::any::Any { /// return self as Any fn as_any(&self) -> &dyn std::any::Any; } - -impl_event! { - CancelData; - - /// oncancel - oncancel -} diff --git a/packages/html/src/events/clipboard.rs b/packages/html/src/events/clipboard.rs index 265a747e9..f7d5d7c06 100644 --- a/packages/html/src/events/clipboard.rs +++ b/packages/html/src/events/clipboard.rs @@ -79,16 +79,3 @@ pub trait HasClipboardData: std::any::Any { /// return self as Any fn as_any(&self) -> &dyn std::any::Any; } - -impl_event![ - ClipboardData; - - /// oncopy - oncopy - - /// oncut - oncut - - /// onpaste - onpaste -]; diff --git a/packages/html/src/events/composition.rs b/packages/html/src/events/composition.rs index 4d161436e..cf4bfb78b 100644 --- a/packages/html/src/events/composition.rs +++ b/packages/html/src/events/composition.rs @@ -94,16 +94,3 @@ pub trait HasCompositionData: std::any::Any { /// return self as Any fn as_any(&self) -> &dyn std::any::Any; } - -impl_event! [ - CompositionData; - - /// oncompositionstart - oncompositionstart - - /// oncompositionend - oncompositionend - - /// oncompositionupdate - oncompositionupdate -]; diff --git a/packages/html/src/events/drag.rs b/packages/html/src/events/drag.rs index 0767b917f..f36d4e655 100644 --- a/packages/html/src/events/drag.rs +++ b/packages/html/src/events/drag.rs @@ -226,31 +226,3 @@ pub trait HasDragData: HasMouseData + crate::HasFileData + crate::HasDataTransfe /// return self as Any fn as_any(&self) -> &dyn std::any::Any; } - -impl_event! { - DragData; - - /// ondrag - ondrag - - /// ondragend - ondragend - - /// ondragenter - ondragenter - - /// ondragexit - ondragexit - - /// ondragleave - ondragleave - - /// ondragover - ondragover - - /// ondragstart - ondragstart - - /// ondrop - ondrop -} diff --git a/packages/html/src/events/focus.rs b/packages/html/src/events/focus.rs index c5571e7ff..9815629ab 100644 --- a/packages/html/src/events/focus.rs +++ b/packages/html/src/events/focus.rs @@ -79,19 +79,3 @@ pub trait HasFocusData: std::any::Any { /// return self as Any fn as_any(&self) -> &dyn std::any::Any; } - -impl_event! [ - FocusData; - - /// onfocus - onfocus - - // onfocusout - onfocusout - - // onfocusin - onfocusin - - /// onblur - onblur -]; diff --git a/packages/html/src/events/form.rs b/packages/html/src/events/form.rs index e394b114d..3212a67e6 100644 --- a/packages/html/src/events/form.rs +++ b/packages/html/src/events/form.rs @@ -346,65 +346,3 @@ mod serialize { } } } - -impl_event! { - FormData; - - /// onchange - onchange - - /// The `oninput` event is fired when the value of a ``, `