From 4fb3e6d812f854c56b64adf34d5f7ba04917e7ba Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Fri, 19 Jan 2024 15:47:42 -0800 Subject: [PATCH] Ensure editors context menus get at least 3 lines of height --- crates/collab_ui/src/chat_panel/message_editor.rs | 5 ++--- crates/editor/src/element.rs | 14 ++++++++++---- crates/language/src/language.rs | 5 +++-- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/crates/collab_ui/src/chat_panel/message_editor.rs b/crates/collab_ui/src/chat_panel/message_editor.rs index 05a9ad5c08..c19d19085c 100644 --- a/crates/collab_ui/src/chat_panel/message_editor.rs +++ b/crates/collab_ui/src/chat_panel/message_editor.rs @@ -240,8 +240,8 @@ impl MessageEditor { text: format!("@{}", mat.string), runs: Vec::new(), }, - server_id: LanguageServerId(0), // TODO: Make this optional or something? documentation: None, + server_id: LanguageServerId(0), // TODO: Make this optional or something? lsp_completion: Default::default(), // TODO: Make this optional or something? }) .collect()) @@ -326,7 +326,6 @@ impl Render for MessageEditor { div() .w_full() - .h(px(500.)) .px_2() .py_1() .bg(cx.theme().colors().editor_background) @@ -360,7 +359,7 @@ mod tests { MessageEditor::new( language_registry, ChannelStore::global(cx), - cx.new_view(|cx| Editor::auto_height(25, cx)), + cx.new_view(|cx| Editor::auto_height(4, cx)), cx, ) }); diff --git a/crates/editor/src/element.rs b/crates/editor/src/element.rs index c5aaf983d5..cb2eb4e49c 100644 --- a/crates/editor/src/element.rs +++ b/crates/editor/src/element.rs @@ -1177,9 +1177,9 @@ impl EditorElement { list_origin.x = (cx.viewport_size().width - list_width).max(Pixels::ZERO); } - // if list_origin.y + list_height > text_bounds.lower_right().y { - // list_origin.y -= layout.position_map.line_height + list_height; - // } + if list_origin.y + list_height > text_bounds.lower_right().y { + list_origin.y -= layout.position_map.line_height + list_height; + } cx.break_content_mask(|cx| context_menu.draw(list_origin, available_space, cx)); } @@ -2128,7 +2128,13 @@ impl EditorElement { if let Some(newest_selection_head) = newest_selection_head { if (start_row..end_row).contains(&newest_selection_head.row()) { if editor.context_menu_visible() { - let max_height = (12. * line_height).min((bounds.size.height - line_height) / 2.); + let max_height = cmp::min( + 12. * line_height, + cmp::max( + 3. * line_height, + (bounds.size.height - line_height) / 2., + ) + ); context_menu = editor.render_context_menu(newest_selection_head, &self.style, max_height, cx); } diff --git a/crates/language/src/language.rs b/crates/language/src/language.rs index ad283d9077..59f8d79d84 100644 --- a/crates/language/src/language.rs +++ b/crates/language/src/language.rs @@ -379,10 +379,11 @@ pub trait LspAdapter: 'static + Send + Sync { #[derive(Clone, Debug, PartialEq, Eq)] pub struct CodeLabel { + /// The text to display. pub text: String, - /// Determines the syntax highlighting for the label + /// Syntax highlighting runs. pub runs: Vec<(Range, HighlightId)>, - /// Which part of the label participates + /// The portion of the text that should be used in fuzzy filtering. pub filter_range: Range, }