diff options
author | janekptacijarabaci <janekptacijarabaci@seznam.cz> | 2018-03-14 09:16:03 +0100 |
---|---|---|
committer | janekptacijarabaci <janekptacijarabaci@seznam.cz> | 2018-03-14 09:16:03 +0100 |
commit | 34ef9d4683b3e81b8df1be1a9c38eae331e8c398 (patch) | |
tree | 2536466cf07202d6502938eb004d9c2f672def84 /layout/style/nsTransitionManager.h | |
parent | 4644a03770ef95fd3acbaa205fae339b3a99f599 (diff) | |
download | UXP-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.h | 18 |
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). |