From 22c7a1fd9b904ff6cffeca72b049da85aaf53f84 Mon Sep 17 00:00:00 2001 From: Kent Hansen Date: Thu, 12 Jul 2012 19:40:04 +0200 Subject: 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 --- src/corelib/statemachine/qeventtransition.cpp | 2 ++ src/corelib/statemachine/qsignaltransition.cpp | 1 + 2 files changed, 3 insertions(+) (limited to 'src') 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(); } /*! -- cgit v1.2.3