diff options
-rw-r--r-- | src/declarative/util/qmlanimation.cpp | 14 |
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 { |