summaryrefslogtreecommitdiffstats
path: root/layout/style/nsTransitionManager.h
diff options
context:
space:
mode:
authorjanekptacijarabaci <janekptacijarabaci@seznam.cz>2018-03-14 09:16:03 +0100
committerjanekptacijarabaci <janekptacijarabaci@seznam.cz>2018-03-14 09:16:03 +0100
commit34ef9d4683b3e81b8df1be1a9c38eae331e8c398 (patch)
tree2536466cf07202d6502938eb004d9c2f672def84 /layout/style/nsTransitionManager.h
parent4644a03770ef95fd3acbaa205fae339b3a99f599 (diff)
downloadUXP-34ef9d4683b3e81b8df1be1a9c38eae331e8c398.tar
UXP-34ef9d4683b3e81b8df1be1a9c38eae331e8c398.tar.gz
UXP-34ef9d4683b3e81b8df1be1a9c38eae331e8c398.tar.lz
UXP-34ef9d4683b3e81b8df1be1a9c38eae331e8c398.tar.xz
UXP-34ef9d4683b3e81b8df1be1a9c38eae331e8c398.zip
Bug 1264125: Call the queueing events when canceling transition via Style or Script
Issue #55
Diffstat (limited to 'layout/style/nsTransitionManager.h')
-rw-r--r--layout/style/nsTransitionManager.h18
1 files changed, 17 insertions, 1 deletions
diff --git a/layout/style/nsTransitionManager.h b/layout/style/nsTransitionManager.h
index 56ec61572..80042adcd 100644
--- a/layout/style/nsTransitionManager.h
+++ b/layout/style/nsTransitionManager.h
@@ -162,6 +162,18 @@ public:
Animation::CancelFromStyle();
+ // The above call to Animation::CancelFromStyle may cause a transitioncancel
+ // event to be queued. However, it will also remove the transition from its
+ // timeline. If this transition was the last animation attached to
+ // the timeline, the timeline will stop observing the refresh driver and
+ // there may be no subsequent tick fro dispatching animation events.
+ //
+ // To ensure the cancel event is dispatched we tell the timeline it needs to
+ // observe the refresh driver for at least one more tick.
+ if (mTimeline) {
+ mTimeline->NotifyAnimationUpdated(*this);
+ }
+
// It is important we do this *after* calling CancelFromStyle().
// This is because CancelFromStyle() will end up posting a restyle and
// that restyle should target the *transitions* level of the cascade.
@@ -214,6 +226,10 @@ public:
const TimeDuration& aStartTime,
double aPlaybackRate);
+ void MaybeQueueCancelEvent(StickyTimeDuration aActiveTime) override {
+ QueueEvents(aActiveTime);
+ }
+
protected:
virtual ~CSSTransition()
{
@@ -225,7 +241,7 @@ protected:
void UpdateTiming(SeekFlag aSeekFlag,
SyncNotifyFlag aSyncNotifyFlag) override;
- void QueueEvents();
+ void QueueEvents(StickyTimeDuration activeTime = StickyTimeDuration());
// The (pseudo-)element whose computed transition-property refers to this
// transition (if any).