Bug 1368240: Manually expand later sibling hints. r?heycam
This will help keeping RestyleData small, and the amount of complexity we need
to handle during the traversal down.
MozReview-Commit-ID: 2a0FF40tr66
--- a/layout/base/ServoRestyleManager.cpp
+++ b/layout/base/ServoRestyleManager.cpp
@@ -58,17 +58,30 @@ ServoRestyleManager::PostRestyleEvent(El
mReentrantChanges->AppendElement(ReentrantChange { aElement, aMinChangeHint });
return;
}
if (aRestyleHint & ~eRestyle_AllHintsWithAnimations) {
mHaveNonAnimationRestyles = true;
}
- Servo_NoteExplicitHints(aElement, aRestyleHint, aMinChangeHint);
+ if (aRestyleHint & eRestyle_LaterSiblings) {
+ aRestyleHint &= ~eRestyle_LaterSiblings;
+
+ nsRestyleHint siblingHint = eRestyle_Subtree;
+ Element* current = aElement->GetNextElementSibling();
+ while (current) {
+ Servo_NoteExplicitHints(current, siblingHint, nsChangeHint(0));
+ current = current->GetNextElementSibling();
+ }
+ }
+
+ if (aRestyleHint || aMinChangeHint) {
+ Servo_NoteExplicitHints(aElement, aRestyleHint, aMinChangeHint);
+ }
}
void
ServoRestyleManager::PostRestyleEventForCSSRuleChanges()
{
mRestyleForCSSRuleChanges = true;
mPresContext->PresShell()->EnsureStyleFlush();
}