diff --git a/crates/doc/src/colors.rs b/crates/doc/src/colors.rs index d480f4ea9..93d32f0bd 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 3a97a5d06..5cadfbbe1 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"); +}