From 731ce1721ae24e639d9da44e3d1fe2f4724be155 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Wed, 18 Oct 2023 16:55:47 +0200 Subject: [PATCH] Checkpoint --- crates/gpui3/src/elements/div.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/crates/gpui3/src/elements/div.rs b/crates/gpui3/src/elements/div.rs index c95ca6e853604b823d784d5b7b8bfc97b8178dfe..a943f4d25b9ccea9ac3d5326e6ebff8eeb4a4deb 100644 --- a/crates/gpui3/src/elements/div.rs +++ b/crates/gpui3/src/elements/div.rs @@ -296,6 +296,7 @@ where cx: &mut ViewContext, ) { let click_listeners = mem::take(&mut self.listeners.mouse_click); + let mouse_down = pending_click.lock().clone(); if let Some(mouse_down) = mouse_down { cx.on_mouse_event(move |state, event: &MouseUpEvent, phase, cx| { @@ -319,6 +320,15 @@ where }); } + if let Some(focus_handle) = self.focusability.focus_handle() { + let focus_handle = focus_handle.clone(); + cx.on_mouse_event(move |_, event: &MouseDownEvent, phase, cx| { + if phase == DispatchPhase::Bubble && bounds.contains_point(&event.position) { + cx.focus(&focus_handle); + } + }) + } + for listener in mem::take(&mut self.listeners.mouse_down) { cx.on_mouse_event(move |state, event: &MouseDownEvent, phase, cx| { listener(state, event, &bounds, phase, cx);