Use buffer font size for editor overlays and blocks

Co-authored-by: Nathan <nathan@zed.dev>
This commit is contained in:
Max Brunsfeld 2024-01-02 15:55:56 -08:00
parent 850a9e33e3
commit 4b006ccd5b
3 changed files with 52 additions and 42 deletions

View file

@ -1195,7 +1195,6 @@ impl CompletionsMenu {
.min_w(px(260.)) .min_w(px(260.))
.max_w(px(640.)) .max_w(px(640.))
.w(px(500.)) .w(px(500.))
.text_ui()
.overflow_y_scroll() .overflow_y_scroll()
// Prevent a mouse down on documentation from being propagated to the editor, // Prevent a mouse down on documentation from being propagated to the editor,
// because that would move the cursor. // because that would move the cursor.
@ -1251,7 +1250,6 @@ impl CompletionsMenu {
.max_w(px(540.)) .max_w(px(540.))
.whitespace_nowrap() .whitespace_nowrap()
.overflow_hidden() .overflow_hidden()
.text_ui()
.px_1() .px_1()
.rounded(px(4.)) .rounded(px(4.))
.bg(cx.theme().colors().ghost_element_background) .bg(cx.theme().colors().ghost_element_background)
@ -1425,7 +1423,6 @@ impl CodeActionsMenu {
let colors = cx.theme().colors(); let colors = cx.theme().colors();
div() div()
.px_2() .px_2()
.text_ui()
.text_color(colors.text) .text_color(colors.text)
.when(selected, |style| { .when(selected, |style| {
style style

View file

@ -2811,50 +2811,65 @@ impl Element for EditorElement {
) { ) {
let editor = self.editor.clone(); let editor = self.editor.clone();
let mut layout = self.compute_layout(bounds, cx); cx.with_text_style(
let gutter_bounds = Bounds { Some(gpui::TextStyleRefinement {
origin: bounds.origin, font_size: Some(self.style.text.font_size),
size: layout.gutter_size, ..Default::default()
}; }),
let text_bounds = Bounds { |cx| {
origin: gutter_bounds.upper_right(), let mut layout = self.compute_layout(bounds, cx);
size: layout.text_size, let gutter_bounds = Bounds {
}; origin: bounds.origin,
size: layout.gutter_size,
};
let text_bounds = Bounds {
origin: gutter_bounds.upper_right(),
size: layout.text_size,
};
let focus_handle = editor.focus_handle(cx); let focus_handle = editor.focus_handle(cx);
let key_context = self.editor.read(cx).key_context(cx); let key_context = self.editor.read(cx).key_context(cx);
cx.with_key_dispatch(Some(key_context), Some(focus_handle.clone()), |_, cx| { cx.with_key_dispatch(Some(key_context), Some(focus_handle.clone()), |_, cx| {
self.register_actions(cx); self.register_actions(cx);
self.register_key_listeners(cx); self.register_key_listeners(cx);
cx.with_content_mask(Some(ContentMask { bounds }), |cx| { cx.with_content_mask(Some(ContentMask { bounds }), |cx| {
let input_handler = ElementInputHandler::new(bounds, self.editor.clone(), cx); let input_handler =
cx.handle_input(&focus_handle, input_handler); ElementInputHandler::new(bounds, self.editor.clone(), cx);
cx.handle_input(&focus_handle, input_handler);
self.paint_background(gutter_bounds, text_bounds, &layout, cx); self.paint_background(gutter_bounds, text_bounds, &layout, cx);
if layout.gutter_size.width > Pixels::ZERO { if layout.gutter_size.width > Pixels::ZERO {
self.paint_gutter(gutter_bounds, &mut layout, cx); self.paint_gutter(gutter_bounds, &mut layout, cx);
} }
self.paint_text(text_bounds, &mut layout, cx); self.paint_text(text_bounds, &mut layout, cx);
cx.with_z_index(0, |cx| { cx.with_z_index(0, |cx| {
self.paint_mouse_listeners(bounds, gutter_bounds, text_bounds, &layout, cx); self.paint_mouse_listeners(
}); bounds,
if !layout.blocks.is_empty() { gutter_bounds,
cx.with_z_index(0, |cx| { text_bounds,
cx.with_element_id(Some("editor_blocks"), |cx| { &layout,
self.paint_blocks(bounds, &mut layout, cx); cx,
);
}); });
}) if !layout.blocks.is_empty() {
} cx.with_z_index(0, |cx| {
cx.with_element_id(Some("editor_blocks"), |cx| {
self.paint_blocks(bounds, &mut layout, cx);
});
})
}
cx.with_z_index(1, |cx| { cx.with_z_index(1, |cx| {
self.paint_overlays(text_bounds, &mut layout, cx); self.paint_overlays(text_bounds, &mut layout, cx);
}); });
cx.with_z_index(2, |cx| self.paint_scrollbar(bounds, &mut layout, cx)); cx.with_z_index(2, |cx| self.paint_scrollbar(bounds, &mut layout, cx));
}); });
}) })
},
);
} }
} }

View file

@ -478,7 +478,6 @@ impl InfoPopover {
div() div()
.id("info_popover") .id("info_popover")
.elevation_2(cx) .elevation_2(cx)
.text_ui()
.p_2() .p_2()
.overflow_y_scroll() .overflow_y_scroll()
.max_w(max_size.width) .max_w(max_size.width)
@ -555,7 +554,6 @@ impl DiagnosticPopover {
.px_2() .px_2()
.py_1() .py_1()
.bg(diagnostic_colors.background) .bg(diagnostic_colors.background)
.text_ui()
.text_color(diagnostic_colors.text) .text_color(diagnostic_colors.text)
.border_1() .border_1()
.border_color(diagnostic_colors.border) .border_color(diagnostic_colors.border)