From 3a1ddf339c83e5f308835bdde2371a47cc848fd0 Mon Sep 17 00:00:00 2001 From: NetterSilver <133535268+Silvertree2010@users.noreply.github.com> Date: Sat, 24 Oct 2026 11:22:48 +0200 Subject: [PATCH] Convert text decoration colour in colour profile conversion (#1247) Found while testing crates/doc/src/colors.rs:30 (TextStyle::for_each_color_mut, used by TextData, Style and Document::map_colors / set_color_profile) Co-authored-by: Claude Haiku 5.5 --- crates/doc/src/colors.rs | 3 +++ crates/doc/src/colors_tests.rs | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/crates/doc/src/colors.rs b/crates/doc/src/colors.rs index d480f4ea..93d32f0b 100644 --- a/crates/doc/src/colors.rs +++ b/crates/doc/src/colors.rs @@ -35,6 +35,9 @@ impl Effect { impl TextStyle { pub fn for_each_color_mut(&mut self, f: &mut ColorVisitor) { self.fills.iter_mut().flatten().for_each(|p| p.for_each_color_mut(f)); + if let Some(c) = self.decoration_look.as_deref_mut().and_then(|l| l.color.as_mut()) { + f(c); + } } } diff --git a/crates/doc/src/colors_tests.rs b/crates/doc/src/colors_tests.rs index 3a97a5d0..5cadfbbe 100644 --- a/crates/doc/src/colors_tests.rs +++ b/crates/doc/src/colors_tests.rs @@ -134,3 +134,11 @@ fn profile_and_presets_serialize_only_when_set() { assert_eq!(back.color_profile, ColorProfile::DisplayP3); assert_eq!(back.image_presets, d.image_presets); } + +#[test] +fn text_decoration_colour_is_visited() { + let mut s = TextStyle::default(); + s.set_look(|l| l.color = Some(RED)); + s.for_each_color_mut(&mut |c| *c = Color::BLACK); + assert_eq!(s.look().color, Some(Color::BLACK), "decoration colour not visited"); +}