Merge branch 'master' into jk/unify
This commit is contained in:
commit
824defa2db
21 files changed
+476
-91
No files matched your search
@@ -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);
|
||||
|
||||
@@ -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 {}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
Reference in new issue
Block a user