summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/declarative/util/qdeclarativeanimation.cpp4
-rw-r--r--tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp20
2 files changed, 20 insertions, 4 deletions
diff --git a/src/declarative/util/qdeclarativeanimation.cpp b/src/declarative/util/qdeclarativeanimation.cpp
index 83bfa170..a72df77a 100644
--- a/src/declarative/util/qdeclarativeanimation.cpp
+++ b/src/declarative/util/qdeclarativeanimation.cpp
@@ -160,10 +160,6 @@ void QDeclarativeAbstractAnimationPrivate::commence()
q->transition(actions, properties, QDeclarativeAbstractAnimation::Forward);
q->qtAnimation()->start();
- if (q->qtAnimation()->state() != QAbstractAnimation::Running) {
- running = false;
- emit q->completed();
- }
}
QDeclarativeProperty QDeclarativeAbstractAnimationPrivate::createProperty(QObject *obj, const QString &str, QObject *infoObj)
diff --git a/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp b/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp
index 00869268..6352d02b 100644
--- a/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp
+++ b/tests/auto/declarative/qdeclarativeanimations/tst_qdeclarativeanimations.cpp
@@ -47,6 +47,7 @@
#include <private/qdeclarativeitem_p.h>
#include <QVariantAnimation>
#include <QEasingCurve>
+#include <QSignalSpy>
class tst_qdeclarativeanimations : public QObject
{
@@ -82,6 +83,7 @@ private slots:
void doubleRegistrationBug();
void alwaysRunToEndRestartBug();
void transitionAssignmentBug();
+ void zeroDurationTwoCompletedEmittedBug();
};
#define QTIMED_COMPARE(lhs, rhs) do { \
@@ -850,6 +852,24 @@ void tst_qdeclarativeanimations::transitionAssignmentBug()
QCOMPARE(rect->property("nullObject").toBool(), false);
}
+void tst_qdeclarativeanimations::zeroDurationTwoCompletedEmittedBug()
+{
+ QDeclarativeRectangle rect;
+ QDeclarativePropertyAnimation animation;
+ animation.setTarget(&rect);
+ animation.setProperty("x");
+ animation.setFrom(1);
+ animation.setTo(200);
+ animation.setDuration(0);
+ QVERIFY(animation.from() == 1);
+ QSignalSpy spy(&animation, SIGNAL(completed(void)));
+ animation.start();
+ QVERIFY(!animation.isRunning());
+ QCOMPARE(rect.x(), qreal(200));
+ QCOMPARE(spy.size(), 1);
+}
+
+
QTEST_MAIN(tst_qdeclarativeanimations)
#include "tst_qdeclarativeanimations.moc"