mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 16:55:40 +00:00
Bug 1363805 - Part 2: Add a flag to note that a child has LaterSiblings hint. r=heycam
This flag is only used by nsComputedDOMStyle. MozReview-Commit-ID: 2EzIYXCt5Rj --HG-- extra : rebase_source : 2a61c6bd8b6005a24c641e31a77951bcd1dff56f
This commit is contained in:
parent
5e7583d760
commit
619e849e4c
@ -139,6 +139,11 @@ enum {
|
||||
// restyle hint.
|
||||
ELEMENT_IS_CONDITIONAL_RESTYLE_ANCESTOR = ELEMENT_FLAG_BIT(4),
|
||||
|
||||
// Set if a child element has later-sibling restyle hint. This is needed for
|
||||
// nsComputedDOMStyle to decide when should we need to flush style (only used
|
||||
// in Gecko).
|
||||
ELEMENT_HAS_CHILD_WITH_LATER_SIBLINGS_HINT = ELEMENT_FLAG_BIT(5),
|
||||
|
||||
// Just the HAS_PENDING bits, for convenience
|
||||
ELEMENT_PENDING_RESTYLE_FLAGS =
|
||||
ELEMENT_HAS_PENDING_RESTYLE |
|
||||
@ -154,8 +159,6 @@ enum {
|
||||
ELEMENT_POTENTIAL_RESTYLE_ROOT_FLAGS |
|
||||
ELEMENT_IS_CONDITIONAL_RESTYLE_ANCESTOR,
|
||||
|
||||
// ELEMENT_FLAG_BIT(5) is currently unused
|
||||
|
||||
// Remaining bits are for subclasses
|
||||
ELEMENT_TYPE_SPECIFIC_BITS_OFFSET = NODE_TYPE_SPECIFIC_BITS_OFFSET + 6
|
||||
};
|
||||
@ -1815,7 +1818,8 @@ inline const mozilla::dom::Element* nsINode::AsElement() const
|
||||
inline void nsINode::UnsetRestyleFlagsIfGecko()
|
||||
{
|
||||
if (IsElement() && !AsElement()->IsStyledByServo()) {
|
||||
UnsetFlags(ELEMENT_ALL_RESTYLE_FLAGS);
|
||||
UnsetFlags(ELEMENT_ALL_RESTYLE_FLAGS |
|
||||
ELEMENT_HAS_CHILD_WITH_LATER_SIBLINGS_HINT);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -207,6 +207,10 @@ RestyleTracker::DoProcessRestyles()
|
||||
NS_ASSERTION(found, "Where did our entry go?");
|
||||
data->mRestyleHint =
|
||||
nsRestyleHint(data->mRestyleHint & ~eRestyle_LaterSiblings);
|
||||
|
||||
if (Element* parent = element->GetFlattenedTreeParentElement()) {
|
||||
parent->UnsetFlags(ELEMENT_HAS_CHILD_WITH_LATER_SIBLINGS_HINT);
|
||||
}
|
||||
}
|
||||
|
||||
LOG_RESTYLE("%d pending restyles after expanding out "
|
||||
|
@ -356,6 +356,15 @@ RestyleTracker::AddPendingRestyle(Element* aElement,
|
||||
}
|
||||
}
|
||||
|
||||
// If we need to restyle later siblings, we will need a flag on parent to note
|
||||
// that some children need restyle for nsComputedDOMStyle.
|
||||
if (aRestyleHint & eRestyle_LaterSiblings) {
|
||||
nsIContent* parent = aElement->GetFlattenedTreeParent();
|
||||
if (parent && parent->IsElement()) {
|
||||
parent->SetFlags(ELEMENT_HAS_CHILD_WITH_LATER_SIBLINGS_HINT);
|
||||
}
|
||||
}
|
||||
|
||||
mHaveLaterSiblingRestyles =
|
||||
mHaveLaterSiblingRestyles || (aRestyleHint & eRestyle_LaterSiblings) != 0;
|
||||
return hadRestyleLaterSiblings;
|
||||
|
Loading…
Reference in New Issue
Block a user