diff options
author | Michael Brasser <michael.brasser@jollamobile.com> | 2014-02-12 23:31:22 -0600 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-02-20 04:27:15 +0100 |
commit | 7da483bfbefcaabb1dbbf3e2f1d5b5f7aadc3b06 (patch) | |
tree | 30a6bdb4cf3d7275c3acf8ffcfaa5aae0b594819 /src/quick/util/qquickspringanimation.cpp | |
parent | 587444f033cf51251f36321321ae358d187f37f9 (diff) |
Make SmoothedAnimation and SpringAnimation smoothly transition again.
Fix regression introduced in Qt 5.0 when animation backend was
rewritten.
Task-number: QTBUG-36709
Change-Id: Ib8caa4bc6a38e3bb4c1d1d3961f775fdd2b342c7
Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
Diffstat (limited to 'src/quick/util/qquickspringanimation.cpp')
-rw-r--r-- | src/quick/util/qquickspringanimation.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/quick/util/qquickspringanimation.cpp b/src/quick/util/qquickspringanimation.cpp index 36aae36459..f237c09bf9 100644 --- a/src/quick/util/qquickspringanimation.cpp +++ b/src/quick/util/qquickspringanimation.cpp @@ -43,7 +43,7 @@ #include "qquickanimation_p_p.h" #include <private/qqmlproperty_p.h> -#include "private/qparallelanimationgroupjob_p.h" +#include "private/qcontinuinganimationgroupjob_p.h" #include <QtCore/qdebug.h> @@ -93,7 +93,7 @@ public: bool useMass : 1; bool haveModulus : 1; - bool useDelta : 1; + bool skipUpdate : 1; typedef QHash<QQmlProperty, QSpringAnimation*> ActiveAnimationHash; void clearTemplate() { animationTemplate = 0; } @@ -160,7 +160,7 @@ QSpringAnimation::QSpringAnimation(QQuickSpringAnimationPrivate *priv) , modulus(0.0) , useMass(false) , haveModulus(false) - , useDelta(false) + , skipUpdate(false) , animationTemplate(priv) { } @@ -194,11 +194,10 @@ int QSpringAnimation::duration() const void QSpringAnimation::restart() { if (isRunning() || (stopTime != -1 && (animationTemplate->elapsed.elapsed() - stopTime) < DELAY_STOP_TIMER_INTERVAL)) { - useDelta = true; + skipUpdate = true; init(); - lastTime = 0; } else { - useDelta = false; + skipUpdate = false; //init() will be triggered when group starts } } @@ -211,16 +210,17 @@ void QSpringAnimation::init() void QSpringAnimation::updateCurrentTime(int time) { + if (skipUpdate) { + skipUpdate = false; + return; + } + if (mode == Track) { stop(); return; } - int elapsed = useDelta ? QQmlAnimationTimer::instance()->currentDelta() : time - lastTime; - if (useDelta) { - startTime = time - elapsed; - useDelta = false; - } + int elapsed = time - lastTime; if (!elapsed) return; @@ -534,7 +534,7 @@ QAbstractAnimationJob* QQuickSpringAnimation::transition(QQuickStateActions &act Q_D(QQuickSpringAnimation); Q_UNUSED(direction); - QParallelAnimationGroupJob *wrapperGroup = new QParallelAnimationGroupJob(); + QContinuingAnimationGroupJob *wrapperGroup = new QContinuingAnimationGroupJob(); QQuickStateActions dataActions = QQuickNumberAnimation::createTransitionActions(actions, modified, defaultTarget); if (!dataActions.isEmpty()) { |