diff options
author | Kent Hansen <kent.hansen@nokia.com> | 2012-07-12 19:40:04 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-07-13 12:09:42 +0200 |
commit | 22c7a1fd9b904ff6cffeca72b049da85aaf53f84 (patch) | |
tree | 2c64595c28fe6bc8985b11ab8998c6bf9b71c9ee /src/corelib | |
parent | 58bea0b8e0d3ffb99dd1a1d2ada464075a5da313 (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.cpp | 2 | ||||
-rw-r--r-- | src/corelib/statemachine/qsignaltransition.cpp | 1 |
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(); } /*! |