aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/util/qquickbehavior.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/util/qquickbehavior.cpp')
-rw-r--r--src/quick/util/qquickbehavior.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/quick/util/qquickbehavior.cpp b/src/quick/util/qquickbehavior.cpp
index d201dfad66..1623a00a49 100644
--- a/src/quick/util/qquickbehavior.cpp
+++ b/src/quick/util/qquickbehavior.cpp
@@ -204,13 +204,15 @@ void QQuickBehavior::write(const QVariant &value)
QList<QQmlProperty> after;
QAbstractAnimationJob *prev = d->animationInstance;
d->animationInstance = d->animation->transition(actions, after, QQuickAbstractAnimation::Forward);
- if (d->animationInstance != prev) {
- d->animationInstance->addAnimationChangeListener(d, QAbstractAnimationJob::StateChange);
- if (prev)
- delete prev;
+ if (prev && prev != d->animationInstance)
+ delete prev;
+
+ if (d->animationInstance) {
+ if (d->animationInstance != prev)
+ d->animationInstance->addAnimationChangeListener(d, QAbstractAnimationJob::StateChange);
+ d->animationInstance->start();
+ d->blockRunningChanged = false;
}
- d->animationInstance->start();
- d->blockRunningChanged = false;
if (!after.contains(d->property))
QQmlPropertyPrivate::write(d->property, value, QQmlPropertyPrivate::BypassInterceptor | QQmlPropertyPrivate::DontRemoveBinding);
}