fix(theme): draw selected label text in the on-accent color

This commit is contained in:
Hojjat 2026-09-11 11:10:36 -06:00 • committed by Michael Murphy
parent 56a210bb4e
commit 53314201b0
3 changed files with 13 additions and 6 deletions

2
iced

@ -1 +1 @@
Subproject commit 2e12eba5cd9ddf9995e113fbc9fa0ebf8f0f0f97 Subproject commit 9ef36c9604c8eb1d34a4e4f9df438a1da0f9e8a2

View file

@ -1371,18 +1371,22 @@ impl iced_widget::text::Catalog for Theme {
fn style(&self, class: &Self::Class<'_>) -> iced_widget::text::Style { fn style(&self, class: &Self::Class<'_>) -> iced_widget::text::Style {
let selected_fill = self.cosmic().accent.base.into(); let selected_fill = self.cosmic().accent.base.into();
let selected_text_color = Some(self.cosmic().on_accent_color().into());
match class { match class {
Text::Accent => iced_widget::text::Style { Text::Accent => iced_widget::text::Style {
color: Some(self.cosmic().accent_text_color().into()), color: Some(self.cosmic().accent_text_color().into()),
selected_fill, selected_fill,
selected_text_color,
}, },
Text::Default => iced_widget::text::Style { Text::Default => iced_widget::text::Style {
color: None, color: None,
selected_fill, selected_fill,
selected_text_color,
}, },
Text::Color(c) => iced_widget::text::Style { Text::Color(c) => iced_widget::text::Style {
color: Some(*c), color: Some(*c),
selected_fill, selected_fill,
selected_text_color,
}, },
Text::Custom(f) => f(self), Text::Custom(f) => f(self),
} }

View file

@ -2903,14 +2903,17 @@ pub fn draw<'a, Message>(
effective_alignment(state.value.raw()), effective_alignment(state.value.raw()),
); );
if cursors.is_empty() { let shift = Vector::new(alignment_offset - offset, 0.0);
renderer.with_translation(Vector::ZERO, |_| {}); let fill_cursors = |renderer: &mut crate::Renderer| {
} else { renderer.with_translation(shift, |renderer| {
renderer.with_translation(Vector::new(alignment_offset - offset, 0.0), |renderer| {
for (quad, color) in &cursors { for (quad, color) in &cursors {
renderer.fill_quad(*quad, *color); renderer.fill_quad(*quad, *color);
} }
}); });
};
if !is_selecting {
fill_cursors(renderer);
} }
let bounds = Rectangle { let bounds = Rectangle {
@ -2946,7 +2949,7 @@ pub fn draw<'a, Message>(
// Redraw the same text in the selected color, clipped to the selection quads, // Redraw the same text in the selected color, clipped to the selection quads,
// so glyph shaping and positioning stay identical to the unselected pass. // so glyph shaping and positioning stay identical to the unselected pass.
if is_selecting { if is_selecting {
let shift = Vector::new(alignment_offset - offset, 0.0); fill_cursors(renderer);
for (quad, _) in &cursors { for (quad, _) in &cursors {
renderer.with_layer(quad.bounds + shift, |renderer| { renderer.with_layer(quad.bounds + shift, |renderer| {
renderer.fill_text( renderer.fill_text(