Use consistent ordering for popup menus (#27765)
Before this change, the editor completion menu and gutter menus reversed their order so that the initial selection is near the user's focus. This change instead displays these menus in a consistent top-to-bottom order because the following benefits outweigh that benefit: * Matches behavior of some other editors (Neovim and VSCode). * Looks better for lexicographic lists. * Keeps the meaning of keyboard interaction consistent, if the user is anticipating the order of the menu's contents. Could consider making this configurable in the future if desired. Closes #25066. Release Notes: - N/A
This commit is contained in:
@@ -3351,7 +3351,7 @@ impl EditorElement {
|
||||
height - height_above_menu
|
||||
};
|
||||
let mut element = self
|
||||
.render_context_menu(line_height, menu_height, y_flipped, window, cx)
|
||||
.render_context_menu(line_height, menu_height, window, cx)
|
||||
.expect("Visible context menu should always render.");
|
||||
let size = element.layout_as_root(AvailableSpace::min_size(), window, cx);
|
||||
Some((CursorPopoverType::CodeContextMenu, element, size))
|
||||
@@ -3508,9 +3508,9 @@ impl EditorElement {
|
||||
viewport_bounds,
|
||||
window,
|
||||
cx,
|
||||
move |height, _max_width_for_stable_x, y_flipped, window, cx| {
|
||||
move |height, _max_width_for_stable_x, _, window, cx| {
|
||||
let mut element = self
|
||||
.render_context_menu(line_height, height, y_flipped, window, cx)
|
||||
.render_context_menu(line_height, height, 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)]
|
||||
@@ -3740,13 +3740,12 @@ impl EditorElement {
|
||||
&self,
|
||||
line_height: Pixels,
|
||||
height: Pixels,
|
||||
y_flipped: bool,
|
||||
window: &mut Window,
|
||||
cx: &mut App,
|
||||
) -> Option<AnyElement> {
|
||||
let max_height_in_lines = ((height - POPOVER_Y_PADDING) / line_height).floor() as u32;
|
||||
self.editor.update(cx, |editor, cx| {
|
||||
editor.render_context_menu(&self.style, max_height_in_lines, y_flipped, window, cx)
|
||||
editor.render_context_menu(&self.style, max_height_in_lines, window, cx)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user