зеркало из https://github.com/mozilla/gecko-dev.git
Bug 960465 patch 2 - Add method to return a modified version of a style context, with all or part of the animation data removed. r=birtles
This is used in patch 3.
This commit is contained in:
Родитель
e5827e4f0a
Коммит
4eedf5bf60
|
@ -114,6 +114,10 @@ public:
|
||||||
return mSkipAnimationRules;
|
return mSkipAnimationRules;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SetSkipAnimationRules(bool aSkipAnimationRules) {
|
||||||
|
mSkipAnimationRules = aSkipAnimationRules;
|
||||||
|
}
|
||||||
|
|
||||||
// Whether rule matching should post animation restyles when it skips
|
// Whether rule matching should post animation restyles when it skips
|
||||||
// styles associated with animation. Only true when
|
// styles associated with animation. Only true when
|
||||||
// SkipAnimationRules() is also true.
|
// SkipAnimationRules() is also true.
|
||||||
|
@ -123,6 +127,10 @@ public:
|
||||||
return mPostAnimationRestyles;
|
return mPostAnimationRestyles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SetPostAnimationRestyles(bool aPostAnimationRestyles) {
|
||||||
|
mPostAnimationRestyles = aPostAnimationRestyles;
|
||||||
|
}
|
||||||
|
|
||||||
// Whether we're currently in the animation phase of restyle
|
// Whether we're currently in the animation phase of restyle
|
||||||
// processing (to be eliminated in bug 960465)
|
// processing (to be eliminated in bug 960465)
|
||||||
bool IsProcessingAnimationStyleChange() const {
|
bool IsProcessingAnimationStyleChange() const {
|
||||||
|
|
|
@ -1649,6 +1649,28 @@ nsStyleSet::ResolveStyleWithReplacement(Element* aElement,
|
||||||
elementForAnimation, flags);
|
elementForAnimation, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
already_AddRefed<nsStyleContext>
|
||||||
|
nsStyleSet::ResolveStyleWithoutAnimation(dom::Element* aTarget,
|
||||||
|
nsStyleContext* aStyleContext,
|
||||||
|
nsRestyleHint aWhichToRemove)
|
||||||
|
{
|
||||||
|
RestyleManager* restyleManager = PresContext()->RestyleManager();
|
||||||
|
|
||||||
|
bool oldSkipAnimationRules = restyleManager->SkipAnimationRules();
|
||||||
|
restyleManager->SetSkipAnimationRules(true);
|
||||||
|
bool oldPostAnimationRestyles = restyleManager->PostAnimationRestyles();
|
||||||
|
restyleManager->SetPostAnimationRestyles(false);
|
||||||
|
|
||||||
|
nsRefPtr<nsStyleContext> result =
|
||||||
|
ResolveStyleWithReplacement(aTarget, aStyleContext->GetParent(),
|
||||||
|
aStyleContext, aWhichToRemove,
|
||||||
|
eSkipStartingAnimations);
|
||||||
|
|
||||||
|
restyleManager->SetPostAnimationRestyles(oldPostAnimationRestyles);
|
||||||
|
restyleManager->SetSkipAnimationRules(oldSkipAnimationRules);
|
||||||
|
|
||||||
|
return result.forget();
|
||||||
|
}
|
||||||
|
|
||||||
already_AddRefed<nsStyleContext>
|
already_AddRefed<nsStyleContext>
|
||||||
nsStyleSet::ResolveStyleForNonElement(nsStyleContext* aParentContext)
|
nsStyleSet::ResolveStyleForNonElement(nsStyleContext* aParentContext)
|
||||||
|
|
|
@ -144,6 +144,15 @@ class nsStyleSet
|
||||||
nsRestyleHint aReplacements,
|
nsRestyleHint aReplacements,
|
||||||
uint32_t aFlags = 0);
|
uint32_t aFlags = 0);
|
||||||
|
|
||||||
|
// Resolve style by returning a style context with the specified
|
||||||
|
// animation data removed. It is allowable to remove all animation
|
||||||
|
// data with eRestyle_ChangeAnimationPhase, or by using any other
|
||||||
|
// hints that are allowed by ResolveStyleWithReplacement.
|
||||||
|
already_AddRefed<nsStyleContext>
|
||||||
|
ResolveStyleWithoutAnimation(mozilla::dom::Element* aElement,
|
||||||
|
nsStyleContext* aStyleContext,
|
||||||
|
nsRestyleHint aWhichToRemove);
|
||||||
|
|
||||||
// Get a style context for a non-element (which no rules will match),
|
// Get a style context for a non-element (which no rules will match),
|
||||||
// such as text nodes, placeholder frames, and the nsFirstLetterFrame
|
// such as text nodes, placeholder frames, and the nsFirstLetterFrame
|
||||||
// for everything after the first letter.
|
// for everything after the first letter.
|
||||||
|
|
Загрузка…
Ссылка в новой задаче