mirror of
https://github.com/servo/servo.git
synced 2025-08-01 19:50:30 +01:00
Avoid leaving stale ANCESTOR_WAS_RECONSTRUCTED bits in the tree.
MozReview-Commit-ID: 76q5XxK2o2a
This commit is contained in:
parent
2e60b27a21
commit
05a1b682bb
2 changed files with 15 additions and 7 deletions
|
@ -106,10 +106,14 @@ impl RestyleData {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sets the flag that tells us whether we've reconstructed an ancestor.
|
/// Sets the flag that tells us whether we've reconstructed an ancestor.
|
||||||
pub fn set_reconstructed_ancestor(&mut self) {
|
pub fn set_reconstructed_ancestor(&mut self, reconstructed: bool) {
|
||||||
|
if reconstructed {
|
||||||
// If it weren't for animation-only traversals, we could assert
|
// If it weren't for animation-only traversals, we could assert
|
||||||
// `!self.reconstructed_ancestor()` here.
|
// `!self.reconstructed_ancestor()` here.
|
||||||
self.flags.insert(ANCESTOR_WAS_RECONSTRUCTED);
|
self.flags.insert(ANCESTOR_WAS_RECONSTRUCTED);
|
||||||
|
} else {
|
||||||
|
self.flags.remove(ANCESTOR_WAS_RECONSTRUCTED);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Mark this element as restyled, which is useful to know whether we need
|
/// Mark this element as restyled, which is useful to know whether we need
|
||||||
|
|
|
@ -170,6 +170,12 @@ pub trait DomTraversal<E: TElement> : Sync {
|
||||||
// Invalidate our style, and the one of our siblings and descendants
|
// Invalidate our style, and the one of our siblings and descendants
|
||||||
// as needed.
|
// as needed.
|
||||||
data.invalidate_style_if_needed(root, shared_context);
|
data.invalidate_style_if_needed(root, shared_context);
|
||||||
|
|
||||||
|
// Make sure we don't have any stale RECONSTRUCTED_ANCESTOR bits from
|
||||||
|
// the last traversal (at a potentially-higher root). From the
|
||||||
|
// perspective of this traversal, the root cannot have reconstructed
|
||||||
|
// ancestors.
|
||||||
|
data.restyle.set_reconstructed_ancestor(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
let parent = root.traversal_parent();
|
let parent = root.traversal_parent();
|
||||||
|
@ -793,9 +799,7 @@ where
|
||||||
if let Some(ref mut child_data) = child_data {
|
if let Some(ref mut child_data) = child_data {
|
||||||
// Propagate the parent restyle hint, that may make us restyle the whole
|
// Propagate the parent restyle hint, that may make us restyle the whole
|
||||||
// subtree.
|
// subtree.
|
||||||
if reconstructed_ancestor {
|
child_data.restyle.set_reconstructed_ancestor(reconstructed_ancestor);
|
||||||
child_data.restyle.set_reconstructed_ancestor();
|
|
||||||
}
|
|
||||||
|
|
||||||
child_data.restyle.hint.insert(propagated_hint);
|
child_data.restyle.hint.insert(propagated_hint);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue