From 07c1964ebf98dc6fc5eec88813d144c1b73b9e9f Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Thu, 5 May 2022 07:17:33 -0500 Subject: [PATCH] fix focus event --- packages/tui/src/hooks.rs | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/packages/tui/src/hooks.rs b/packages/tui/src/hooks.rs index bb3ffb784..f787a9da9 100644 --- a/packages/tui/src/hooks.rs +++ b/packages/tui/src/hooks.rs @@ -175,6 +175,8 @@ impl InnerInputState { self.wheel = None; + let old_focus = self.focus_state.last_focused_id; + evts.retain(|e| match &e.1 { EventData::Keyboard(k) => match k.key_code { KeyCode::Tab => !self.focus_state.progress(dom, !k.shift_key), @@ -189,6 +191,18 @@ impl InnerInputState { self.resolve_mouse_events(previous_mouse, resolved_events, layout, dom); + if old_focus != self.focus_state.last_focused_id { + if let Some(id) = self.focus_state.last_focused_id { + resolved_events.push(UserEvent { + scope_id: None, + priority: EventPriority::Medium, + name: "focus", + element: Some(id), + data: Arc::new(FocusData {}), + }); + } + } + // for s in &self.subscribers { // s(); // } @@ -500,13 +514,6 @@ impl InnerInputState { }); if let Some(id) = focus_id { self.focus_state.set_focus(dom, id); - resolved_events.push(UserEvent { - scope_id: None, - priority: EventPriority::Medium, - name: "focus", - element: Some(id), - data: Arc::new(FocusData {}), - }) } } }