On Sunday 06 July 2014 23:55:14 BogDan wrote: > [..] > > >> I presume that changing the semantics here (i.e. triggering > >> QAbstractState::onExited when the machine is stopped) isn't appropriate, > >> as it may break existing applications, but I'm not exactly sure. > > > >I think it would be far less risk of breaking existing applications to > >simply set active = false on all active states when the machine is > >stopped. Does that not address the problematic use case(s)? > It will be inconsistent, because when you stop a state machine the state > will become inactive but it remains entered ... activeChanged entered and > exited signals are describing the same thing: if the current state is > active or not. But when the state machine is stopped any active state can't > remain active. So, IMHO the fact that exited signal is not emitted when a > state machine is stopped is a bug and should be fixed. > > Yours, > BogDan.
After some discussion between Brett, me and Bogdan, we concluded that the following approach is probably the best: - Don't change the semantics of QSM (i.e. don't trigger QAbstractState::onExited when the machine is stopped) - QAbstractState::active property stays 'true' in case the machine is stopped - QAbstractState::active is set to false as soon as the machine is restarted This behavior mirrors the semantics of QStateMachine::configuration. After the machine has stopped, QStateMachine::configuration still contains the set of last active states. Only when restarting the machine, the configuration is cleared. Plus, this approach cannot break existing applications. Review-request updated: https://codereview.qt-project.org/#/c/88596/ Greets -- Qt Developer Days 2014 • October 6 - 8 at BCC, Berlin • Save the dates! Kevin Funk | [email protected] | Software Engineer KDAB (Deutschland) GmbH&Co KG, a KDAB Group company Tel. Germany +49-30-521325470, Sweden (HQ) +46-563-540090 KDAB - Qt Experts - Platform-independent software solutions _______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
