From 2fc5ad4649e8c5656d7249d38fe48972ec435e74 Mon Sep 17 00:00:00 2001 From: marc2332 Date: Thu, 8 Feb 2024 17:26:31 +0100 Subject: [PATCH] fix: Properly emit keyboard events --- crates/core/src/events/dom_events.rs | 5 +++++ crates/core/src/events/events_measurer.rs | 8 ++++---- crates/renderer/src/app.rs | 3 ++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/crates/core/src/events/dom_events.rs b/crates/core/src/events/dom_events.rs index 96e170a71..34cbf174d 100644 --- a/crates/core/src/events/dom_events.rs +++ b/crates/core/src/events/dom_events.rs @@ -47,6 +47,11 @@ impl DomEvent { return does_event_move_cursor(self.name.as_str()); } + // Bubble all events except keyboard + pub fn should_bubble(&self) -> bool { + !matches!(self.data, DomEventData::Keyboard(_)) + } + pub fn new( node_id: NodeId, element_id: ElementId, diff --git a/crates/core/src/events/events_measurer.rs b/crates/core/src/events/events_measurer.rs index b0f83fbc6..d7963582c 100644 --- a/crates/core/src/events/events_measurer.rs +++ b/crates/core/src/events/events_measurer.rs @@ -6,7 +6,6 @@ use freya_dom::{dom::DioxusDOM, prelude::FreyaDOM}; use freya_engine::prelude::*; use freya_node_state::{Fill, Style}; -use rustc_hash::FxHashMap; pub use crate::events::{DomEvent, ElementsState, FreyaEvent}; @@ -81,7 +80,7 @@ pub fn measure_potential_event_listeners( viewports: &Viewports, fdom: &FreyaDOM, ) -> PotentialEvents { - let mut potential_events = FxHashMap::default(); + let mut potential_events = PotentialEvents::default(); let layout = fdom.layout(); @@ -95,7 +94,7 @@ pub fn measure_potential_event_listeners( let event_data = (*node_id, event.clone()); potential_events .entry(name.clone()) - .or_insert_with(|| vec![event_data.clone()]) + .or_default() .push(event_data); } else { let data = match event { @@ -231,9 +230,10 @@ fn measure_dom_events( let Style { background, .. } = &*node.get::