diff --git a/packages/desktop/src/lib.rs b/packages/desktop/src/lib.rs index 4d904e948..807ebf48e 100644 --- a/packages/desktop/src/lib.rs +++ b/packages/desktop/src/lib.rs @@ -273,16 +273,21 @@ pub fn launch_with_props(root: Component

, props: P, cfg: Config) let event_name = &file_diolog.event; let event_bubbles = file_diolog.bubbles; let files = file_upload::get_file_event(&file_diolog); - let data = FormData { + let data = Rc::new(FormData { value: Default::default(), values: Default::default(), files: Some(Arc::new(NativeFileEngine::new(files))), - }; + }); let view = webviews.get_mut(&event.1).unwrap(); - view.dom - .handle_event(event_name, Rc::new(data), id, event_bubbles); + if event_name == "change&input" { + view.dom + .handle_event("input", data.clone(), id, event_bubbles); + view.dom.handle_event("change", data, id, event_bubbles); + } else { + view.dom.handle_event(event_name, data, id, event_bubbles); + } send_edits(view.dom.render_immediate(), &view.webview); } diff --git a/packages/desktop/src/protocol.rs b/packages/desktop/src/protocol.rs index f6725c428..e35d67bb1 100644 --- a/packages/desktop/src/protocol.rs +++ b/packages/desktop/src/protocol.rs @@ -27,8 +27,7 @@ fn module_loader(root_name: &str) -> String { const message = serializeIpcMessage("file_diolog", { accept: target.getAttribute("accept"), multiple: target.hasAttribute("multiple"), target: parseInt(target_id), bubbles: event_bubbles(event_name), event: event_name }); window.ipc.postMessage(message); }; - send("change"); - send("input"); + send("change&input"); } event.preventDefault(); }