From 10792ee0ad3b58c24f9977c903d2b8a84dfbdd15 Mon Sep 17 00:00:00 2001 From: Michael Sloan Date: Wed, 5 Feb 2025 23:46:23 -0700 Subject: [PATCH] First check if menu visible in `layout_gutter_menu` (#24259) Also uses an expect instead of unwrap for result of `render_context_menu` Release Notes: - N/A --- crates/editor/src/element.rs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/crates/editor/src/element.rs b/crates/editor/src/element.rs index 9d0c50b89668da..99c103934870eb 100644 --- a/crates/editor/src/element.rs +++ b/crates/editor/src/element.rs @@ -3170,7 +3170,7 @@ impl EditorElement { }; let mut element = self .render_context_menu(line_height, menu_height, y_flipped, window, cx) - .unwrap(); + .expect("Visible context menu should always render."); let size = element.layout_as_root(AvailableSpace::min_size(), window, cx); Some((CursorPopoverType::CodeContextMenu, element, size)) } else { @@ -3328,8 +3328,12 @@ impl EditorElement { window: &mut Window, cx: &mut App, ) { + let editor = self.editor.read(cx); + if !editor.context_menu_visible() { + return; + } let Some(crate::ContextMenuOrigin::GutterIndicator(gutter_row)) = - self.editor.read(cx).context_menu_origin() + editor.context_menu_origin() else { return; }; @@ -3357,11 +3361,9 @@ impl EditorElement { window, cx, move |height, _max_width_for_stable_x, y_flipped, window, cx| { - let Some(mut element) = - self.render_context_menu(line_height, height, y_flipped, window, cx) - else { - return vec![]; - }; + let mut element = self + .render_context_menu(line_height, height, y_flipped, window, cx) + .expect("Visible context menu should always render."); let size = element.layout_as_root(AvailableSpace::min_size(), window, cx); vec![(CursorPopoverType::CodeContextMenu, element, size)] },