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
This commit is contained in:
Michael Sloan 2025-02-05 23:46:23 -07:00 committed by GitHub
parent c61f12dd22
commit 10792ee0ad
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -3170,7 +3170,7 @@ impl EditorElement {
}; };
let mut element = self let mut element = self
.render_context_menu(line_height, menu_height, y_flipped, window, cx) .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); let size = element.layout_as_root(AvailableSpace::min_size(), window, cx);
Some((CursorPopoverType::CodeContextMenu, element, size)) Some((CursorPopoverType::CodeContextMenu, element, size))
} else { } else {
@ -3328,8 +3328,12 @@ impl EditorElement {
window: &mut Window, window: &mut Window,
cx: &mut App, cx: &mut App,
) { ) {
let editor = self.editor.read(cx);
if !editor.context_menu_visible() {
return;
}
let Some(crate::ContextMenuOrigin::GutterIndicator(gutter_row)) = let Some(crate::ContextMenuOrigin::GutterIndicator(gutter_row)) =
self.editor.read(cx).context_menu_origin() editor.context_menu_origin()
else { else {
return; return;
}; };
@ -3357,11 +3361,9 @@ impl EditorElement {
window, window,
cx, cx,
move |height, _max_width_for_stable_x, y_flipped, window, cx| { move |height, _max_width_for_stable_x, y_flipped, window, cx| {
let Some(mut element) = let mut element = self
self.render_context_menu(line_height, height, y_flipped, window, cx) .render_context_menu(line_height, height, y_flipped, window, cx)
else { .expect("Visible context menu should always render.");
return vec![];
};
let size = element.layout_as_root(AvailableSpace::min_size(), window, cx); let size = element.layout_as_root(AvailableSpace::min_size(), window, cx);
vec![(CursorPopoverType::CodeContextMenu, element, size)] vec![(CursorPopoverType::CodeContextMenu, element, size)]
}, },