d->hasRunScriptScript = false;
d->reversing = (direction == Backward);
- for (int ii = 0; ii < actions.count(); ++ii) {
- QQuickAction &action = actions[ii];
-
- if (action.event && action.event->type() == QQuickActionEvent::Script
- && static_cast<QQuickStateChangeScript*>(action.event)->name() == d->name) {
- d->runScriptScript = static_cast<QQuickStateChangeScript*>(action.event)->script();
- d->hasRunScriptScript = true;
- action.actionDone = true;
- break; //only match one (names should be unique)
+ if (!d->name.isEmpty()) {
+ for (int ii = 0; ii < actions.count(); ++ii) {
+ QQuickAction &action = actions[ii];
+
+ if (action.event && action.event->type() == QQuickActionEvent::Script
+ && static_cast<QQuickStateChangeScript*>(action.event)->name() == d->name) {
+ d->runScriptScript = static_cast<QQuickStateChangeScript*>(action.event)->script();
+ d->hasRunScriptScript = true;
+ action.actionDone = true;
+ break; //only match one (names should be unique)
+ }
}
}
return initInstance(new QActionAnimation(d->createAction()));
--- /dev/null
+import QtQuick 2.0
+
+Item {
+ property bool actionTriggered: false
+ property bool stateChangeScriptTriggered: false
+
+ states: State {
+ name: "state1"
+ StateChangeScript { script: stateChangeScriptTriggered = true }
+ }
+
+ transitions: Transition {
+ ScriptAction { script: actionTriggered = true }
+ }
+
+ Component.onCompleted: state = "state1"
+}
void loopingBug();
void anchorBug();
void pathAnimationInOutBackBug();
+ void scriptActionBug();
};
#define QTIMED_COMPARE(lhs, rhs) do { \
QCOMPARE(static_cast<QQuickBulkValueAnimator*>(animation.qtAnimation())->easingCurve(), QEasingCurve(QEasingCurve::InOutBack));
}
+//ScriptAction should not match a StateChangeScript if no scriptName has been specified
+void tst_qquickanimations::scriptActionBug()
+{
+ QQmlEngine engine;
+ QQmlComponent c(&engine, testFileUrl("scriptActionBug.qml"));
+ QObject *obj = c.create();
+
+ //Both the ScriptAction and StateChangeScript should be triggered
+ QCOMPARE(obj->property("actionTriggered").toBool(), true);
+ QCOMPARE(obj->property("actionTriggered").toBool(), true);
+}
+
QTEST_MAIN(tst_qquickanimations)
#include "tst_qquickanimations.moc"