Ensure editors context menus get at least 3 lines of height

This commit is contained in:
Max Brunsfeld 2024-01-19 15:47:42 -08:00
parent 139986d080
commit 4fb3e6d812
3 changed files with 15 additions and 9 deletions

View file

@ -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,
)
});

View file

@ -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);
}

View file

@ -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<usize>, HighlightId)>,
/// Which part of the label participates
/// The portion of the text that should be used in fuzzy filtering.
pub filter_range: Range<usize>,
}