diff --git a/crates/gpui/src/elements/div.rs b/crates/gpui/src/elements/div.rs index 3f826ca00790b..28c0969498cbc 100644 --- a/crates/gpui/src/elements/div.rs +++ b/crates/gpui/src/elements/div.rs @@ -1417,6 +1417,19 @@ impl Interactivity { None }; + let invalidate_tooltip = hitbox + .as_ref() + .map_or(true, |hitbox| !hitbox.bounds.contains(&cx.mouse_position())); + if invalidate_tooltip { + if let Some(active_tooltip) = element_state + .as_ref() + .and_then(|state| state.active_tooltip.as_ref()) + { + *active_tooltip.borrow_mut() = None; + self.tooltip_id = None; + } + } + let scroll_offset = self.clamp_scroll_position(bounds, &style, cx); let result = f(&style, scroll_offset, hitbox, cx); (result, element_state)