aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Kristensen <thkriste@cisco.com>2013-03-11 12:54:56 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-03-13 07:06:20 +0100
commit18f7c187697db224ca412e969663c5e4470cf104 (patch)
tree87f603db90441523bb5609091627c55316de9bd8
parentc284672e5d51def2dfa63343ca84ebc9ce02aa2d (diff)
Makes QSmoothedAnimation respect zero duration.
In automated GUI test scenarios it often desired not to wait for animations before verifying a result, so setting the duration to zero should accomplish this, before this patch; if duration was set to zero QSmoothedAnimation would treat it as if duration was not set, and used velocity to calculate animation speed. Change-Id: Ia57f1c9ffdd2056ac7c85d1cb94dbd3835fcbb7a Reviewed-by: Andreas Aardal Hanssen <andreas@hanssen.name>
-rw-r--r--src/quick/util/qquicksmoothedanimation.cpp4
-rw-r--r--tests/auto/quick/qquicksmoothedanimation/data/smoothedanimationZeroDuration.qml12
-rw-r--r--tests/auto/quick/qquicksmoothedanimation/tst_qquicksmoothedanimation.cpp23
3 files changed, 37 insertions, 2 deletions
diff --git a/src/quick/util/qquicksmoothedanimation.cpp b/src/quick/util/qquicksmoothedanimation.cpp
index 021ff75f03..9dd9aa2e6d 100644
--- a/src/quick/util/qquicksmoothedanimation.cpp
+++ b/src/quick/util/qquicksmoothedanimation.cpp
@@ -153,10 +153,10 @@ bool QSmoothedAnimation::recalc()
s = (invert? -1.0: 1.0) * s;
- if (userDuration > 0 && velocity > 0) {
+ if (userDuration >= 0 && velocity > 0) {
tf = s / velocity;
if (tf > (userDuration / 1000.)) tf = (userDuration / 1000.);
- } else if (userDuration > 0) {
+ } else if (userDuration >= 0) {
tf = userDuration / 1000.;
} else if (velocity > 0) {
tf = s / velocity;
diff --git a/tests/auto/quick/qquicksmoothedanimation/data/smoothedanimationZeroDuration.qml b/tests/auto/quick/qquicksmoothedanimation/data/smoothedanimationZeroDuration.qml
new file mode 100644
index 0000000000..d0183ad00c
--- /dev/null
+++ b/tests/auto/quick/qquicksmoothedanimation/data/smoothedanimationZeroDuration.qml
@@ -0,0 +1,12 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 300; height: 300;
+ Rectangle {
+ objectName: "theRect"
+ color: "red"
+ width: 60; height: 60;
+ x: 100; y: 100;
+ SmoothedAnimation on x { objectName: "easeX"; to: 200; duration: 0 }
+ }
+}
diff --git a/tests/auto/quick/qquicksmoothedanimation/tst_qquicksmoothedanimation.cpp b/tests/auto/quick/qquicksmoothedanimation/tst_qquicksmoothedanimation.cpp
index 935543cc34..705ee5cf46 100644
--- a/tests/auto/quick/qquicksmoothedanimation/tst_qquicksmoothedanimation.cpp
+++ b/tests/auto/quick/qquicksmoothedanimation/tst_qquicksmoothedanimation.cpp
@@ -60,6 +60,7 @@ private slots:
void valueSource();
void behavior();
void deleteOnUpdate();
+ void zeroDuration();
private:
QQmlEngine engine;
@@ -237,6 +238,28 @@ void tst_qquicksmoothedanimation::deleteOnUpdate()
delete rect;
}
+void tst_qquicksmoothedanimation::zeroDuration()
+{
+ QQmlEngine engine;
+
+ QQmlComponent c(&engine, testFileUrl("smoothedanimationZeroDuration.qml"));
+
+ QQuickRectangle *rect = qobject_cast<QQuickRectangle*>(c.create());
+ QVERIFY(rect);
+
+ QQuickRectangle *theRect = rect->findChild<QQuickRectangle*>("theRect");
+ QVERIFY(theRect);
+
+ QQuickSmoothedAnimation *easeX = rect->findChild<QQuickSmoothedAnimation*>("easeX");
+ QVERIFY(easeX);
+ QVERIFY(easeX->isRunning());
+
+ QTRY_VERIFY(!easeX->isRunning());
+ QTRY_COMPARE(theRect->x(), qreal(200));
+
+ delete rect;
+}
+
QTEST_MAIN(tst_qquicksmoothedanimation)
#include "tst_qquicksmoothedanimation.moc"