Explorar o código

fix double diologs on desktop renderer

Evan Almloff %!s(int64=2) %!d(string=hai) anos
pai
achega
d749fff11b
Modificáronse 2 ficheiros con 10 adicións e 6 borrados
  1. 9 4
      packages/desktop/src/lib.rs
  2. 1 2
      packages/desktop/src/protocol.rs

+ 9 - 4
packages/desktop/src/lib.rs

@@ -273,16 +273,21 @@ pub fn launch_with_props<P: 'static>(root: Component<P>, 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);
                     }

+ 1 - 2
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();
           }