| Index: Source/platform/scroll/ScrollableArea.cpp
|
| diff --git a/Source/platform/scroll/ScrollableArea.cpp b/Source/platform/scroll/ScrollableArea.cpp
|
| index f1704953f0a5b59e98c1fe0d1817a5658c6be6a6..c5a7365096fe8b5f14ffee32125cd8c19568449d 100644
|
| --- a/Source/platform/scroll/ScrollableArea.cpp
|
| +++ b/Source/platform/scroll/ScrollableArea.cpp
|
| @@ -430,10 +430,19 @@ bool ScrollableArea::scheduleAnimation()
|
|
|
| void ScrollableArea::serviceScrollAnimations(double monotonicTime)
|
| {
|
| - if (ScrollAnimator* scrollAnimator = existingScrollAnimator())
|
| + bool hasRunningAnimation = false;
|
| + if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) {
|
| scrollAnimator->serviceScrollAnimations();
|
| - if (ProgrammaticScrollAnimator* programmaticScrollAnimator = existingProgrammaticScrollAnimator())
|
| + if (scrollAnimator->hasRunningAnimation())
|
| + hasRunningAnimation = true;
|
| + }
|
| + if (ProgrammaticScrollAnimator* programmaticScrollAnimator = existingProgrammaticScrollAnimator()) {
|
| programmaticScrollAnimator->tickAnimation(monotonicTime);
|
| + if (programmaticScrollAnimator->hasRunningAnimation())
|
| + hasRunningAnimation = true;
|
| + }
|
| + if (!hasRunningAnimation)
|
| + deregisterForAnimation();
|
| }
|
|
|
| void ScrollableArea::cancelProgrammaticScrollAnimation()
|
|
|