Merge branch 'master' into jk/unify

This commit is contained in:
Jonathan Kelley committed 2022-01-21 00:16:45 -05:00
commit 824defa2db
21 files changed
+476 -91

No files matched your search

+1 -7
View File
@@ -43,13 +43,7 @@ extern "C" {
pub fn CreatePlaceholder(this: &Interpreter, root: u64);
#[wasm_bindgen(method)]
pub fn NewEventListener(
this: &Interpreter,
name: &str,
scope: usize,
root: u64,
handler: &Function,
);
pub fn NewEventListener(this: &Interpreter, name: &str, root: u64, handler: &Function);
#[wasm_bindgen(method)]
pub fn RemoveEventListener(this: &Interpreter, root: u64, name: &str);
+5 -7
View File
@@ -21,7 +21,7 @@ pub struct WebsysDom {
pub(crate) root: Element,
handler: Closure<dyn FnMut(&Event)>,
pub handler: Closure<dyn FnMut(&Event)>,
}
impl WebsysDom {
@@ -74,15 +74,12 @@ impl WebsysDom {
}
DomEdit::CreatePlaceholder { root } => self.interpreter.CreatePlaceholder(root),
DomEdit::NewEventListener {
event_name,
scope,
root,
event_name, root, ..
} => {
//
let handler: &Function = self.handler.as_ref().unchecked_ref();
self.interpreter
.NewEventListener(event_name, scope.0, root, handler);
self.interpreter.NewEventListener(event_name, root, handler);
}
DomEdit::RemoveEventListener { root, event } => {
self.interpreter.RemoveEventListener(root, event)
}
@@ -104,6 +101,7 @@ impl WebsysDom {
pub struct DioxusWebsysEvent(web_sys::Event);
// safety: currently the web is not multithreaded and our VirtualDom exists on the same thread
#[allow(clippy::non_send_fields_in_send_ty)]
unsafe impl Send for DioxusWebsysEvent {}
unsafe impl Sync for DioxusWebsysEvent {}
+8
View File
@@ -121,6 +121,14 @@ impl WebsysDom {
self.rehydrate_single(nodes, place, dom, child, &mut last_node_was_text)?;
}
for listener in vel.listeners {
self.interpreter.NewEventListener(
listener.event,
listener.mounted_node.get().unwrap().as_u64(),
self.handler.as_ref().unchecked_ref(),
);
}
place.pop();
nodes.pop();