aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/util/qquickanimator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/util/qquickanimator.cpp')
-rw-r--r--src/quick/util/qquickanimator.cpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/quick/util/qquickanimator.cpp b/src/quick/util/qquickanimator.cpp
index 8a5cad4011..ca6dc74519 100644
--- a/src/quick/util/qquickanimator.cpp
+++ b/src/quick/util/qquickanimator.cpp
@@ -211,7 +211,8 @@ qreal QQuickAnimator::from() const
void QQuickAnimatorPrivate::apply(QQuickAnimatorJob *job,
const QString &propertyName,
QQuickStateActions &actions,
- QQmlProperties &modified)
+ QQmlProperties &modified,
+ QObject *defaultTarget)
{
if (actions.size()) {
@@ -243,14 +244,20 @@ void QQuickAnimatorPrivate::apply(QQuickAnimatorJob *job,
// the item when a transition is cancelled.
action.fromValue = action.toValue;
}
- } else {
+ }
+
+ if (modified.isEmpty()) {
job->setTarget(target);
job->setFrom(from);
job->setTo(to);
}
- if (!job->target() && defaultProperty.object())
- job->setTarget(qobject_cast<QQuickItem *>(defaultProperty.object()));
+ if (!job->target()) {
+ if (defaultProperty.object())
+ job->setTarget(qobject_cast<QQuickItem *>(defaultProperty.object()));
+ else
+ job->setTarget(qobject_cast<QQuickItem *>(defaultTarget));
+ }
job->setDuration(duration);
job->setLoopCount(loopCount);
@@ -260,7 +267,7 @@ void QQuickAnimatorPrivate::apply(QQuickAnimatorJob *job,
QAbstractAnimationJob *QQuickAnimator::transition(QQuickStateActions &actions,
QQmlProperties &modified,
TransitionDirection direction,
- QObject *)
+ QObject *defaultTarget)
{
Q_D(QQuickAnimator);
@@ -277,7 +284,7 @@ QAbstractAnimationJob *QQuickAnimator::transition(QQuickStateActions &actions,
if (!job)
return 0;
- d->apply(job, propertyName(), actions, modified);
+ d->apply(job, propertyName(), actions, modified, defaultTarget);
if (!job->target()) {
delete job;