Add background styling to span / rich text

This commit is contained in:
Cory Forsstrom 2024-07-23 13:36:40 -07:00 committed by Héctor Ramón Jiménez
parent 23a7e9f981
commit ddcf02f9d0
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
7 changed files with 141 additions and 16 deletions

View file

@ -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,