style: Add a way to add self-invalidations to the initial collection.

Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
This commit is contained in:
Emilio Cobos Álvarez 2017-10-21 13:12:17 +02:00
parent 191c39f28c
commit 5ac0f5121e
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C
2 changed files with 12 additions and 1 deletions

View file

@ -82,6 +82,7 @@ where
element: E, element: E,
nth_index_cache: Option<&mut NthIndexCache>, nth_index_cache: Option<&mut NthIndexCache>,
quirks_mode: QuirksMode, quirks_mode: QuirksMode,
_self_invalidations: &mut InvalidationVector,
descendant_invalidations: &mut InvalidationVector, descendant_invalidations: &mut InvalidationVector,
sibling_invalidations: &mut InvalidationVector, sibling_invalidations: &mut InvalidationVector,
) -> bool { ) -> bool {

View file

@ -34,6 +34,7 @@ where
element: E, element: E,
nth_index_cache: Option<&mut NthIndexCache>, nth_index_cache: Option<&mut NthIndexCache>,
quirks_mode: QuirksMode, quirks_mode: QuirksMode,
self_invalidations: &mut InvalidationVector,
descendant_invalidations: &mut InvalidationVector, descendant_invalidations: &mut InvalidationVector,
sibling_invalidations: &mut InvalidationVector, sibling_invalidations: &mut InvalidationVector,
) -> bool; ) -> bool;
@ -226,21 +227,30 @@ where
pub fn invalidate(mut self) -> InvalidationResult { pub fn invalidate(mut self) -> InvalidationResult {
debug!("StyleTreeInvalidator::invalidate({:?})", self.element); debug!("StyleTreeInvalidator::invalidate({:?})", self.element);
let mut self_invalidations = InvalidationVector::new();
let mut descendant_invalidations = InvalidationVector::new(); let mut descendant_invalidations = InvalidationVector::new();
let mut sibling_invalidations = InvalidationVector::new(); let mut sibling_invalidations = InvalidationVector::new();
let invalidated_self = self.processor.collect_invalidations( let mut invalidated_self = self.processor.collect_invalidations(
self.element, self.element,
self.nth_index_cache.as_mut().map(|c| &mut **c), self.nth_index_cache.as_mut().map(|c| &mut **c),
self.quirks_mode, self.quirks_mode,
&mut self_invalidations,
&mut descendant_invalidations, &mut descendant_invalidations,
&mut sibling_invalidations, &mut sibling_invalidations,
); );
debug!("Collected invalidations (self: {}): ", invalidated_self); debug!("Collected invalidations (self: {}): ", invalidated_self);
debug!(" > self: {:?}", descendant_invalidations);
debug!(" > descendants: {:?}", descendant_invalidations); debug!(" > descendants: {:?}", descendant_invalidations);
debug!(" > siblings: {:?}", sibling_invalidations); debug!(" > siblings: {:?}", sibling_invalidations);
invalidated_self |= self.process_descendant_invalidations(
&self_invalidations,
&mut descendant_invalidations,
&mut sibling_invalidations,
);
let invalidated_descendants = self.invalidate_descendants(&descendant_invalidations); let invalidated_descendants = self.invalidate_descendants(&descendant_invalidations);
let invalidated_siblings = self.invalidate_siblings(&mut sibling_invalidations); let invalidated_siblings = self.invalidate_siblings(&mut sibling_invalidations);