Fix missing buffer font features in Blame UI, Hover Popover and Markdown Preview (#44657)
- Fix missing font features in `git_ui::blame_ui::GitBlameRenderer.render_blame_entry` - Fix missing buffer font features in `markdown_preview::markdown_renderer` - Update the way that the markdown style is built for hover popovers so that, for code blocks, the buffer font features are used. - Introduce `gpui::Styled.font_features` to allow callers to also set the font's features, similar to how `gpui::Styled.font_family` already exists. Relates to #44209 Release Notes: - Fixed wrong font features in Blame UI, Hover Popover and Markdown Preview
This commit is contained in:
@@ -623,7 +623,10 @@ pub fn hover_markdown_style(window: &Window, cx: &App) -> MarkdownStyle {
|
||||
});
|
||||
MarkdownStyle {
|
||||
base_text_style,
|
||||
code_block: StyleRefinement::default().my(rems(1.)).font_buffer(cx),
|
||||
code_block: StyleRefinement::default()
|
||||
.my(rems(1.))
|
||||
.font_buffer(cx)
|
||||
.font_features(buffer_font_features.clone()),
|
||||
inline_code: TextStyleRefinement {
|
||||
background_color: Some(cx.theme().colors().background),
|
||||
font_family: Some(buffer_font_family),
|
||||
|
||||
@@ -65,7 +65,7 @@ impl BlameRenderer for GitBlameRenderer {
|
||||
.w_full()
|
||||
.gap_2()
|
||||
.justify_between()
|
||||
.font_family(style.font().family)
|
||||
.font(style.font())
|
||||
.line_height(style.line_height)
|
||||
.text_color(cx.theme().status().hint)
|
||||
.child(
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
use crate::{
|
||||
self as gpui, AbsoluteLength, AlignContent, AlignItems, BorderStyle, CursorStyle,
|
||||
DefiniteLength, Display, Fill, FlexDirection, FlexWrap, Font, FontStyle, FontWeight,
|
||||
GridPlacement, Hsla, JustifyContent, Length, SharedString, StrikethroughStyle, StyleRefinement,
|
||||
TextAlign, TextOverflow, TextStyleRefinement, UnderlineStyle, WhiteSpace, px, relative, rems,
|
||||
DefiniteLength, Display, Fill, FlexDirection, FlexWrap, Font, FontFeatures, FontStyle,
|
||||
FontWeight, GridPlacement, Hsla, JustifyContent, Length, SharedString, StrikethroughStyle,
|
||||
StyleRefinement, TextAlign, TextOverflow, TextStyleRefinement, UnderlineStyle, WhiteSpace, px,
|
||||
relative, rems,
|
||||
};
|
||||
pub use gpui_macros::{
|
||||
border_style_methods, box_shadow_style_methods, cursor_style_methods, margin_style_methods,
|
||||
@@ -630,6 +631,14 @@ pub trait Styled: Sized {
|
||||
self
|
||||
}
|
||||
|
||||
/// Sets the font features of this element and its children.
|
||||
fn font_features(mut self, features: FontFeatures) -> Self {
|
||||
self.text_style()
|
||||
.get_or_insert_with(Default::default)
|
||||
.font_features = Some(features);
|
||||
self
|
||||
}
|
||||
|
||||
/// Sets the font of this element and its children.
|
||||
fn font(mut self, font: Font) -> Self {
|
||||
let Font {
|
||||
|
||||
@@ -75,8 +75,10 @@ impl RenderContext {
|
||||
|
||||
let settings = ThemeSettings::get_global(cx);
|
||||
let buffer_font_family = settings.buffer_font.family.clone();
|
||||
let buffer_font_features = settings.buffer_font.features.clone();
|
||||
let mut buffer_text_style = window.text_style();
|
||||
buffer_text_style.font_family = buffer_font_family.clone();
|
||||
buffer_text_style.font_features = buffer_font_features;
|
||||
buffer_text_style.font_size = AbsoluteLength::from(settings.buffer_font_size(cx));
|
||||
|
||||
RenderContext {
|
||||
@@ -631,8 +633,14 @@ fn render_markdown_code_block(
|
||||
.tooltip(Tooltip::text("Copy code block"))
|
||||
.visible_on_hover("markdown-block");
|
||||
|
||||
let font = gpui::Font {
|
||||
family: cx.buffer_font_family.clone(),
|
||||
features: cx.buffer_text_style.font_features.clone(),
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
cx.with_common_p(div())
|
||||
.font_family(cx.buffer_font_family.clone())
|
||||
.font(font)
|
||||
.px_3()
|
||||
.py_3()
|
||||
.bg(cx.code_block_background_color)
|
||||
|
||||
Reference in New Issue
Block a user