style: Isolate all the restyling related logic in the invalidator in an InvalidationProcessor trait.

Ditto, no change in behavior.
This commit is contained in:
Emilio Cobos Álvarez 2017-10-12 17:17:58 +02:00
parent b9b3e592dd
commit a5e2f2c76c
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C
3 changed files with 204 additions and 45 deletions

View file

@ -244,7 +244,7 @@ impl ElementData {
return InvalidationResult::empty();
}
use invalidation::element::collector::StateAndAttrInvalidationCollector;
use invalidation::element::collector::StateAndAttrInvalidationProcessor;
use invalidation::element::invalidator::TreeStyleInvalidator;
debug!("invalidate_style_if_needed: {:?}, flags: {:?}, has_snapshot: {}, \
@ -259,18 +259,21 @@ impl ElementData {
return InvalidationResult::empty();
}
let processor = StateAndAttrInvalidationProcessor;
let invalidator = TreeStyleInvalidator::new(
element,
Some(self),
shared_context,
stack_limit_checker,
nth_index_cache,
&processor,
);
let result =
invalidator.invalidate::<StateAndAttrInvalidationCollector>();
let result = invalidator.invalidate();
unsafe { element.set_handled_snapshot() }
debug_assert!(element.handled_snapshot());
result
}