@@ -511,6 +511,8 @@ impl EditorElement {
cx,
);
+ paint.context_menu_bounds = Some(RectF::new(list_origin, context_menu.size()));
+
cx.scene.pop_stacking_context();
}
@@ -1342,6 +1344,7 @@ impl Element for EditorElement {
bounds,
gutter_bounds,
text_bounds,
+ context_menu_bounds: None,
hover_bounds: None,
};
@@ -1424,13 +1427,24 @@ impl Element for EditorElement {
} => self.scroll(*position, *delta, *precise, layout, paint, cx),
Event::KeyDown { input, .. } => self.key_down(input.as_deref(), cx),
Event::MouseMoved { position, .. } => {
+ // This will be handled more correctly once https://github.com/zed-industries/zed/issues/1218 is completed
+ // Don't trigger hover popover if mouse is hovering over context menu
+ if paint
+ .context_menu_bounds
+ .map_or(false, |context_menu_bounds| {
+ context_menu_bounds.contains_point(*position)
+ })
+ {
+ return false;
+ }
+
if paint
.hover_bounds
.map_or(false, |hover_bounds| hover_bounds.contains_point(*position))
{
return false;
}
-
+
let point = if paint.text_bounds.contains_point(*position) {
let (point, overshoot) =
paint.point_for_position(&self.snapshot(cx), layout, *position);
@@ -1528,6 +1542,7 @@ pub struct PaintState {
bounds: RectF,
gutter_bounds: RectF,
text_bounds: RectF,
+ context_menu_bounds: Option<RectF>,
hover_bounds: Option<RectF>,
}