feat: get desktop working with just creation

This commit is contained in:
Jonathan Kelley committed 2022-11-15 18:32:48 -08:00
1 parent 8caabb97d8
commit e8ae830cf2
16 files changed
+1301 -329

No files matched your search

+9 -4
View File
@@ -9,7 +9,7 @@ use crate::{
nodes::{Template, TemplateId},
scheduler::{SuspenseBoundary, SuspenseId},
scopes::{ScopeId, ScopeState},
Attribute, AttributeValue, Element, EventPriority, Scope, SuspenseContext,
Attribute, AttributeValue, Element, EventPriority, Scope, SuspenseContext, UiEvent,
};
use futures_util::{pin_mut, FutureExt, StreamExt};
use slab::Slab;
@@ -288,10 +288,10 @@ impl VirtualDom {
///
///
///
pub fn handle_event(
pub fn handle_event<T: 'static>(
&mut self,
name: &str,
event: &dyn Any,
data: Rc<T>,
element: ElementId,
bubbles: bool,
priority: EventPriority,
@@ -304,6 +304,11 @@ impl VirtualDom {
- send event to virtualdom
*/
let event = UiEvent {
bubble_state: std::cell::Cell::new(true),
data,
};
let path = &self.elements[element.0];
let template = unsafe { &*path.template };
let dynamic = &template.dynamic_nodes[path.element];
@@ -339,7 +344,7 @@ impl VirtualDom {
for listener in listeners {
if let AttributeValue::Listener(listener) = &listener.value {
(listener.borrow_mut())(event)
(listener.borrow_mut())(&event.clone())
}
}