Consider all the pseudo-classes in a given compound selector when computing restyle hints, not just the rightmost one.

For some reason when I wrote this code I mixed up the rules for pseudo-elements
(rightmost, maximum of one) with those of pseudo-classes (which have no such
restriction). This caused a correctness issue which can be demonstrated with the
associated reftest modification.
This commit is contained in:
Bobby Holley 2015-11-04 18:15:30 -08:00
parent 77c253fd43
commit d89816bb5f
2 changed files with 16 additions and 11 deletions

View file

@ -220,15 +220,16 @@ impl StateDependencySet {
let mut cur = selector;
let mut combinator: Option<Combinator> = None;
loop {
if let Some(rightmost) = cur.simple_selectors.last() {
let state_dep = selector_to_state(rightmost);
if !state_dep.is_empty() {
self.deps.push(StateDependency {
selector: cur.clone(),
combinator: combinator,
state: state_dep,
});
}
let mut deps = ElementState::empty();
for s in &cur.simple_selectors {
deps.insert(selector_to_state(s));
}
if !deps.is_empty() {
self.deps.push(StateDependency {
selector: cur.clone(),
combinator: combinator,
state: deps,
});
}
cur = match cur.next {