Bug 479655 part 6. Add a private AddPendingRestyle API that allows removing restyle hints, as well as adding them. r=dbaron

This commit is contained in:
Boris Zbarsky 2010-06-18 12:23:05 -04:00
parent ef0bbab82b
commit 9fd308fab4

View File

@ -84,8 +84,10 @@ public:
/** /**
* Add a restyle for the given element to the tracker. * Add a restyle for the given element to the tracker.
*/ */
inline void AddPendingRestyle(Element* aElement, nsRestyleHint aRestyleHint, void AddPendingRestyle(Element* aElement, nsRestyleHint aRestyleHint,
nsChangeHint aMinChangeHint); nsChangeHint aMinChangeHint) {
AddPendingRestyle(aElement, aRestyleHint, nsRestyleHint(0), aMinChangeHint);
}
/** /**
* Process the restyles we've been tracking. * Process the restyles we've been tracking.
@ -102,6 +104,15 @@ public:
}; };
private: private:
/**
* Add a restyle for the given element to the tracker and remove the
* given bits from the existing restyle hint for the element, if
* there is one.
*/
inline void AddPendingRestyle(Element* aElement, nsRestyleHint aRestyleHint,
nsRestyleHint aRestyleHintToRemove,
nsChangeHint aMinChangeHint);
// Handle a single mPendingRestyles entry. // Handle a single mPendingRestyles entry.
inline void ProcessOneRestyle(Element* aElement, inline void ProcessOneRestyle(Element* aElement,
nsRestyleHint aRestyleHint, nsRestyleHint aRestyleHint,
@ -118,6 +129,7 @@ private:
inline void RestyleTracker::AddPendingRestyle(Element* aElement, inline void RestyleTracker::AddPendingRestyle(Element* aElement,
nsRestyleHint aRestyleHint, nsRestyleHint aRestyleHint,
nsRestyleHint aRestyleHintToRemove,
nsChangeHint aMinChangeHint) nsChangeHint aMinChangeHint)
{ {
RestyleData existingData; RestyleData existingData;
@ -127,7 +139,8 @@ inline void RestyleTracker::AddPendingRestyle(Element* aElement,
mPendingRestyles.Get(aElement, &existingData); mPendingRestyles.Get(aElement, &existingData);
existingData.mRestyleHint = existingData.mRestyleHint =
nsRestyleHint(existingData.mRestyleHint | aRestyleHint); nsRestyleHint((existingData.mRestyleHint | aRestyleHint) &
~aRestyleHintToRemove);
NS_UpdateHint(existingData.mChangeHint, aMinChangeHint); NS_UpdateHint(existingData.mChangeHint, aMinChangeHint);
mPendingRestyles.Put(aElement, existingData); mPendingRestyles.Put(aElement, existingData);