diff --git a/components/style/properties/gecko.mako.rs b/components/style/properties/gecko.mako.rs index e1625ff7491..7831f76aabd 100644 --- a/components/style/properties/gecko.mako.rs +++ b/components/style/properties/gecko.mako.rs @@ -251,7 +251,7 @@ impl ops::DerefMut for ComputedValues { impl ComputedValuesInner { /// Clone the visited style. Used for inheriting parent styles in - /// StyleBuilder::for_inheritance. + /// StyleBuilder::for_derived_style. pub fn clone_visited_style(&self) -> Option> { self.visited_style.as_ref().map(|x| x.clone_arc()) } diff --git a/components/style/properties/properties.mako.rs b/components/style/properties/properties.mako.rs index de736e7dda5..328182ef0ae 100644 --- a/components/style/properties/properties.mako.rs +++ b/components/style/properties/properties.mako.rs @@ -2211,7 +2211,7 @@ impl ComputedValuesInner { pub fn has_moz_binding(&self) -> bool { false } /// Clone the visited style. Used for inheriting parent styles in - /// StyleBuilder::for_inheritance. + /// StyleBuilder::for_derived_style. pub fn clone_visited_style(&self) -> Option> { self.visited_style.clone() } @@ -2842,6 +2842,18 @@ impl<'a> StyleBuilder<'a> { parent: &'a ComputedValues, pseudo: Option<<&'a PseudoElement>, ) -> Self { + // Rebuild the visited style from the parent, ensuring that it will also + // not have rules. This matches the unvisited style that will be + // produced by this builder. This assumes that the caller doesn't need + // to adjust or process visited style, so we can just build visited + // style here for simplicity. + let visited_style = parent.visited_style().map(|style| { + Self::for_inheritance( + device, + style, + pseudo, + ).build() + }); // FIXME(emilio): This Some(parent) here is inconsistent with what we // usually do if `parent` is the default computed values, but that's // fine, and we want to eventually get rid of it. @@ -2855,7 +2867,7 @@ impl<'a> StyleBuilder<'a> { parent.custom_properties().cloned(), parent.writing_mode, parent.flags, - parent.clone_visited_style() + visited_style, ) }