diff options
author | Martin Jones <martin.jones@nokia.com> | 2009-10-28 03:20:15 (GMT) |
---|---|---|
committer | Martin Jones <martin.jones@nokia.com> | 2009-10-28 03:20:15 (GMT) |
commit | fc733f4573f1fe43e0cfe43734623d77f61a4614 (patch) | |
tree | b57fffa13e4380cd04ac5832d8131035f25ebd6c /src | |
parent | 5f9091771eaa26db5ad35e4788c13ac011512b61 (diff) | |
download | Qt-fc733f4573f1fe43e0cfe43734623d77f61a4614.zip Qt-fc733f4573f1fe43e0cfe43734623d77f61a4614.tar.gz Qt-fc733f4573f1fe43e0cfe43734623d77f61a4614.tar.bz2 |
Ensure that the Follows handle the target value changing unexpectedly.
If the target's property was changed elsewhere while the Follow wasn't
running, it would fail to start when a source identical to its
current source valule was set.
Diffstat (limited to 'src')
-rw-r--r-- | src/declarative/util/qmleasefollow.cpp | 3 | ||||
-rw-r--r-- | src/declarative/util/qmlspringfollow.cpp | 9 |
2 files changed, 6 insertions, 6 deletions
diff --git a/src/declarative/util/qmleasefollow.cpp b/src/declarative/util/qmleasefollow.cpp index 99720f8..9d17d25 100644 --- a/src/declarative/util/qmleasefollow.cpp +++ b/src/declarative/util/qmleasefollow.cpp @@ -210,7 +210,6 @@ void QmlEaseFollowPrivate::tick(int t) qreal value = 0.5 * a * time_seconds * time_seconds + vi * time_seconds; value = (invert?-1.0:1.0) * value; target.write(initialValue + value); - out = initialValue + value; } else if (time_seconds < td) { @@ -397,7 +396,7 @@ void QmlEaseFollow::setSourceValue(qreal s) { Q_D(QmlEaseFollow); - if (d->source == s) + if (d->clock.state() == QAbstractAnimation::Running && d->source == s) return; d->source = s; diff --git a/src/declarative/util/qmlspringfollow.cpp b/src/declarative/util/qmlspringfollow.cpp index 34ec976..569cc48 100644 --- a/src/declarative/util/qmlspringfollow.cpp +++ b/src/declarative/util/qmlspringfollow.cpp @@ -272,10 +272,11 @@ qreal QmlSpringFollow::sourceValue() const void QmlSpringFollow::setSourceValue(qreal value) { Q_D(QmlSpringFollow); - if (d->sourceValue != value) { - d->sourceValue = value; - d->start(); - } + if (d->clock.state() == QAbstractAnimation::Running && d->sourceValue == value) + return; + + d->sourceValue = value; + d->start(); } /*! |