summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/declarative/util/qmlanimation.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/declarative/util/qmlanimation.cpp b/src/declarative/util/qmlanimation.cpp
index c535045..02b747f 100644
--- a/src/declarative/util/qmlanimation.cpp
+++ b/src/declarative/util/qmlanimation.cpp
@@ -1168,6 +1168,8 @@ void QmlParentAction::transition(QmlStateActions &actions,
QmlParentActionData *data = new QmlParentActionData;
+ bool explicitMatchFound = false;
+
for (int ii = 0; ii < actions.count(); ++ii) {
Action &action = actions[ii];
@@ -1182,6 +1184,7 @@ void QmlParentAction::transition(QmlStateActions &actions,
myAction.event = pc;
data->pc = pc;
data->actions << myAction;
+ if (d->target) explicitMatchFound = true;
break; //only match one
} else {
action.actionDone = true;
@@ -1190,6 +1193,17 @@ void QmlParentAction::transition(QmlStateActions &actions,
}
}
+ if (!explicitMatchFound && d->pcTarget && d->pcParent) {
+ data->reverse = false;
+ Action myAction;
+ QmlParentChange *pc = new QmlParentChange;
+ pc->setObject(d->pcTarget);
+ pc->setParent(d->pcParent);
+ myAction.event = pc;
+ data->pc = pc;
+ data->actions << myAction;
+ }
+
if (data->actions.count()) {
d->cpa->setAnimAction(data, QAbstractAnimation::DeleteWhenStopped);
} else {