summaryrefslogtreecommitdiffstats
path: root/src/corelib
diff options
context:
space:
mode:
authorKent Hansen <kent.hansen@nokia.com>2012-07-12 19:40:04 +0200
committerQt by Nokia <qt-info@nokia.com>2012-07-13 12:09:42 +0200
commit22c7a1fd9b904ff6cffeca72b049da85aaf53f84 (patch)
tree2c64595c28fe6bc8985b11ab8998c6bf9b71c9ee /src/corelib
parent58bea0b8e0d3ffb99dd1a1d2ada464075a5da313 (diff)
statemachine: Fix dynamic transition registration edge cases
Some of the transition constructors didn't call the maybeRegister() function, causing the transitions to be ignored if they were created when the state machine was running and the transition's source state was active. Added tests that cover all possible cases. Change-Id: If1b593b127bd719e3be4e5a2e6949a780c4e97c3 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
Diffstat (limited to 'src/corelib')
-rw-r--r--src/corelib/statemachine/qeventtransition.cpp2
-rw-r--r--src/corelib/statemachine/qsignaltransition.cpp1
2 files changed, 3 insertions, 0 deletions
diff --git a/src/corelib/statemachine/qeventtransition.cpp b/src/corelib/statemachine/qeventtransition.cpp
index ed00d6681e..3c93281e98 100644
--- a/src/corelib/statemachine/qeventtransition.cpp
+++ b/src/corelib/statemachine/qeventtransition.cpp
@@ -150,6 +150,7 @@ QEventTransition::QEventTransition(QObject *object, QEvent::Type type,
d->registered = false;
d->object = object;
d->eventType = type;
+ d->maybeRegister();
}
/*!
@@ -171,6 +172,7 @@ QEventTransition::QEventTransition(QEventTransitionPrivate &dd, QObject *object,
d->registered = false;
d->object = object;
d->eventType = type;
+ d->maybeRegister();
}
/*!
diff --git a/src/corelib/statemachine/qsignaltransition.cpp b/src/corelib/statemachine/qsignaltransition.cpp
index bbd7bc4e19..26d2add8cf 100644
--- a/src/corelib/statemachine/qsignaltransition.cpp
+++ b/src/corelib/statemachine/qsignaltransition.cpp
@@ -155,6 +155,7 @@ QSignalTransition::QSignalTransition(QObject *sender, const char *signal,
Q_D(QSignalTransition);
d->sender = sender;
d->signal = signal;
+ d->maybeRegister();
}
/*!