diff options
author | 2024-07-23 13:36:40 -0700 | |
---|---|---|
committer | 2024-07-28 13:06:57 +0200 | |
commit | ddcf02f9d0377afe6a35dbbb09a29b4bd52efe2e (patch) | |
tree | 146f552a26ca1a41d53a006c570b1ff46b674554 /widget/src/text/rich.rs | |
parent | 23a7e9f981728e8a95039db8eb8e9f3d8c6ba3d7 (diff) | |
download | iced-ddcf02f9d0377afe6a35dbbb09a29b4bd52efe2e.tar.gz iced-ddcf02f9d0377afe6a35dbbb09a29b4bd52efe2e.tar.bz2 iced-ddcf02f9d0377afe6a35dbbb09a29b4bd52efe2e.zip |
Add background styling to span / rich text
Diffstat (limited to 'widget/src/text/rich.rs')
-rw-r--r-- | widget/src/text/rich.rs | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/widget/src/text/rich.rs b/widget/src/text/rich.rs index 9c0e2fac..832a3ae7 100644 --- a/widget/src/text/rich.rs +++ b/widget/src/text/rich.rs @@ -9,8 +9,8 @@ use crate::core::widget::text::{ }; use crate::core::widget::tree::{self, Tree}; use crate::core::{ - self, Clipboard, Color, Element, Event, Layout, Length, Pixels, Rectangle, - Shell, Size, Widget, + self, Clipboard, Color, Element, Event, Layout, Length, Pixels, Point, + Rectangle, Shell, Size, Widget, }; use std::borrow::Cow; @@ -246,6 +246,24 @@ where let style = theme.style(&self.class); + // Draw backgrounds + for (index, span) in self.spans.iter().enumerate() { + if let Some(background) = span.background { + let translation = layout.position() - Point::ORIGIN; + + for bounds in state.paragraph.span_bounds(index) { + renderer.fill_quad( + renderer::Quad { + bounds: bounds + translation, + border: background.border, + ..Default::default() + }, + background.color, + ); + } + } + } + text::draw( renderer, defaults, |