Bug 1381276: Cascade the visited style with the normal rules if the element is not the relevant link. r?jryans
MozReview-Commit-ID: HbfZs0jnusn
--- a/servo/components/style/style_resolver.rs
+++ b/servo/components/style/style_resolver.rs
@@ -116,17 +116,17 @@ where
let mut visited_style = None;
let should_compute_visited_style =
relevant_link_found ||
parent_style.and_then(|s| s.get_visited_style()).is_some();
if should_compute_visited_style {
visited_style = Some(self.cascade_style(
- visited_rules.as_ref(),
+ visited_rules.as_ref().or(Some(&primary_results.rule_node)),
/* style_if_visited = */ None,
parent_style,
layout_parent_style,
CascadeVisitedMode::Visited,
/* pseudo = */ None,
));
}
@@ -218,17 +218,17 @@ where
parent_style: Option<&ComputedValues>,
layout_parent_style: Option<&ComputedValues>,
pseudo: Option<&PseudoElement>,
) -> Arc<ComputedValues> {
let mut style_if_visited = None;
if parent_style.map_or(false, |s| s.get_visited_style().is_some()) ||
inputs.visited_rules.is_some() {
style_if_visited = Some(self.cascade_style(
- inputs.visited_rules.as_ref(),
+ inputs.visited_rules.as_ref().or(inputs.rules.as_ref()),
/* style_if_visited = */ None,
parent_style,
layout_parent_style,
CascadeVisitedMode::Visited,
pseudo,
));
}
self.cascade_style(