From 6ca877eb6d569e52fcbdd0eb4d4feee8e9e602ca Mon Sep 17 00:00:00 2001 From: Anatol Ulrich <45840+spookyvision@users.noreply.github.com> Date: Fri, 9 Feb 2024 12:02:32 +0100 Subject: [PATCH 1/2] fix `HasFileData` for `WebDragData` --- packages/web/src/event.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/packages/web/src/event.rs b/packages/web/src/event.rs index e79b55fe8f..b6aa630776 100644 --- a/packages/web/src/event.rs +++ b/packages/web/src/event.rs @@ -10,7 +10,7 @@ use dioxus_html::{ }; use js_sys::Array; use wasm_bindgen::{prelude::wasm_bindgen, JsCast, JsValue}; -use web_sys::{Document, Element, Event, MouseEvent}; +use web_sys::{Document, DragEvent, Element, Event, MouseEvent}; pub(crate) struct WebEventConverter; @@ -529,17 +529,16 @@ impl HasFileData for WebDragData { #[cfg(not(feature = "file_engine"))] let files = None; #[cfg(feature = "file_engine")] - let files = self - .element - .dyn_ref() - .and_then(|input: &web_sys::HtmlInputElement| { - input.files().and_then(|files| { + let files = self.raw.dyn_ref::().and_then(|drag_event| { + drag_event.data_transfer().and_then(|dt| { + dt.files().and_then(|files| { #[allow(clippy::arc_with_non_send_sync)] crate::file_engine::WebFileEngine::new(files).map(|f| { std::sync::Arc::new(f) as std::sync::Arc }) }) - }); + }) + }); files } From a44f5fda2c046f12d8158392ae974e88f78cb7fc Mon Sep 17 00:00:00 2001 From: Anatol Ulrich Date: Fri, 9 Feb 2024 22:09:58 +0100 Subject: [PATCH 2/2] remove unused `element` field from WebDragData --- packages/web/src/event.rs | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/packages/web/src/event.rs b/packages/web/src/event.rs index b6aa630776..8fa2b1aeaf 100644 --- a/packages/web/src/event.rs +++ b/packages/web/src/event.rs @@ -49,10 +49,7 @@ impl HtmlEventConverter for WebEventConverter { #[inline(always)] fn convert_drag_data(&self, event: &dioxus_html::PlatformEventData) -> dioxus_html::DragData { let event = downcast_event(event); - DragData::new(WebDragData::new( - event.element.clone(), - event.raw.clone().unchecked_into(), - )) + DragData::new(WebDragData::new(event.raw.clone().unchecked_into())) } #[inline(always)] @@ -462,13 +459,12 @@ impl HasFileData for WebFormData { } struct WebDragData { - element: Element, raw: MouseEvent, } impl WebDragData { - fn new(element: Element, raw: MouseEvent) -> Self { - Self { element, raw } + fn new(raw: MouseEvent) -> Self { + Self { raw } } }