diff --git a/crates/editor2/src/editor.rs b/crates/editor2/src/editor.rs index 049b77116d..360b113c69 100644 --- a/crates/editor2/src/editor.rs +++ b/crates/editor2/src/editor.rs @@ -9410,6 +9410,7 @@ impl Render for Editor { font_weight: FontWeight::NORMAL, font_style: FontStyle::Normal, line_height: relative(1.).into(), + background_color: None, underline: None, white_space: WhiteSpace::Normal, }, @@ -9424,6 +9425,7 @@ impl Render for Editor { font_weight: FontWeight::NORMAL, font_style: FontStyle::Normal, line_height: relative(settings.buffer_line_height.value()), + background_color: None, underline: None, white_space: WhiteSpace::Normal, }, diff --git a/crates/editor2/src/element.rs b/crates/editor2/src/element.rs index da163bd8f3..ab0477a9c4 100644 --- a/crates/editor2/src/element.rs +++ b/crates/editor2/src/element.rs @@ -2452,7 +2452,7 @@ impl LineWithInvisibles { len: line_chunk.len(), font: text_style.font(), color: text_style.color, - background_color: None, + background_color: text_style.background_color, underline: text_style.underline, }); diff --git a/crates/gpui2/src/style.rs b/crates/gpui2/src/style.rs index c6f02f5bca..77d732032b 100644 --- a/crates/gpui2/src/style.rs +++ b/crates/gpui2/src/style.rs @@ -145,6 +145,7 @@ pub struct TextStyle { pub line_height: DefiniteLength, pub font_weight: FontWeight, pub font_style: FontStyle, + pub background_color: Option, pub underline: Option, pub white_space: WhiteSpace, } @@ -159,6 +160,7 @@ impl Default for TextStyle { line_height: phi(), font_weight: FontWeight::default(), font_style: FontStyle::default(), + background_color: None, underline: None, white_space: WhiteSpace::Normal, } @@ -182,6 +184,10 @@ impl TextStyle { self.color.fade_out(factor); } + if let Some(background_color) = style.background_color { + self.background_color = Some(background_color); + } + if let Some(underline) = style.underline { self.underline = Some(underline); } @@ -212,7 +218,7 @@ impl TextStyle { style: self.font_style, }, color: self.color, - background_color: None, + background_color: self.background_color, underline: self.underline.clone(), } } @@ -223,6 +229,7 @@ pub struct HighlightStyle { pub color: Option, pub font_weight: Option, pub font_style: Option, + pub background_color: Option, pub underline: Option, pub fade_out: Option, } @@ -441,6 +448,7 @@ impl From<&TextStyle> for HighlightStyle { color: Some(other.color), font_weight: Some(other.font_weight), font_style: Some(other.font_style), + background_color: other.background_color, underline: other.underline.clone(), fade_out: None, } @@ -467,6 +475,10 @@ impl HighlightStyle { self.font_style = other.font_style; } + if other.background_color.is_some() { + self.background_color = other.background_color; + } + if other.underline.is_some() { self.underline = other.underline; } diff --git a/crates/gpui2/src/styled.rs b/crates/gpui2/src/styled.rs index bdb9d4b4fe..77756154b5 100644 --- a/crates/gpui2/src/styled.rs +++ b/crates/gpui2/src/styled.rs @@ -361,6 +361,13 @@ pub trait Styled: Sized { self } + fn text_bg(mut self, bg: impl Into) -> Self { + self.text_style() + .get_or_insert_with(Default::default) + .background_color = Some(bg.into()); + self + } + fn text_size(mut self, size: impl Into) -> Self { self.text_style() .get_or_insert_with(Default::default)