| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
Having an implicit default error state in the graph which the user
has not added is unintuitive and ugly. Rather than have a default error
state, we stop execution of the machine and print an error message when
the machine has run-time errors. If a user wishes to prevent errors
from stopping the machine, you can set one or more error states
explicitly.
|
|
|
|
| |
Make state->addTransition(foo, SIGNAL( bar( ) ), ...) work.
|
|
|
|
|
|
| |
If the machine's initial state is nested, a set of states will
be entered, and we need to do the property assignments of all
of them.
|
|
|
|
|
|
| |
It's been requested by several users. Since we have
QAbstractState::{entered,exited}() signals, we should have this one
as well.
|
|
|
|
| |
The state machine decides when these signals are emitted.
|
|
|
|
| |
Reviewed-by: Trust Me
|
| |
|
| |
|
|
|
|
| |
Reviewed-by: Thierry Bastian
|
|
|
|
|
| |
The signal code (first character of const char *signal) is stripped
internally, so the debug output code should not skip any characters.
|
|
|
|
|
| |
Just as with the QSignalTransition::signal property, this makes it
possible to use the function from language bindings (e.g. QtScript).
|
|
|
|
| |
No need to link to the class in its own doc page.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The QObject internals have changed, and the mutex that need to be locked
to access the senders list is not the same anymore, and not accessible
form qstatemachine.cpp
But we do not need to loop over the senders list anyway because this is
done in sender()
We also do not need to lock in order to access the currentSender
Reviewed-by: Eskil
|
|
|
|
|
|
|
| |
Also fix an issue in QTreeView where a signal could be connected
several times
Reviewed-by: Thierry
|
| |
|
|
|
|
| |
...hopefully
|
|
|
|
|
| |
Now you can opt it out to save disk space (for embedded).
Also tested it and fixed code in state machine.
|
|
|
|
|
|
|
| |
Wherever I found that we were using a string instead of a single char
I fixed the code.
Reviewed-by: olivier
|
|
|
|
|
|
| |
When the signal or senderObject is changed while the state is active,
the transition needs to be unregistered _before_ either property is
changed, only _then_ can it be re-registered.
|
|
|
|
|
|
| |
When the eventType or eventObject is changed while the state is active,
the transition needs to be unregistered _before_ either property is
changed, only _then_ can it be re-registered.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
kinetic-animations
Conflicts:
src/corelib/kernel/kernel.pri
src/corelib/kernel/qvariant_p.h
src/corelib/tools/tools.pri
src/gui/graphicsview/qgraphicsitem.cpp
src/gui/graphicsview/qgraphicsitem.h
src/gui/graphicsview/qgraphicswidget.h
src/gui/gui.pro
|
| |
|
|
|
|
| |
eventTest() is now non-const.
|
|
|
|
|
| |
We decided to remove the const of the eventTest() since some transitions
have dynamic conditions and need to update when eventTest() is called.
|
|
|
|
|
|
| |
The event filter was not removed at the right time. We now store the
number of active event transitions for a particular (object,event)
and only remove the filtering when the count drops to zero.
|
|\ |
|
| |\
| | |
| | |
| | | |
into kinetic-animations
|
| | |
| | |
| | |
| | | |
Reviewed-by: Kent Hansen
|
| |/
|/|
| |
| | |
We won't release another Qt Solution, so the define is no longer needed.
|
|/
|
|
|
|
| |
The signal was not disconnected at the right time. We now store the
number of active signal transitions for a particular (object,signal)
and only disconnect when the count drops to zero.
|
|
|
|
| |
When the state is null, it isn't the root state.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
as error state
Since the root state has no ancestors, it cannot be source or target in
transitions since there will be no LCA for the transition, which is required for
the algorithm of enterStates and exitStates. In SCXML the root state cannot be
target or source of a transition. By the same logic, it cannot be an error
state. The root state will always have a valid machine, since it's added to
a machine immediately, which makes this code possible.
|
| |
|
|
|
|
| |
The animation itself is used by subsequent code, so we mustn't change it.
|
| |
|
|
|
|
|
|
| |
consistency
The other error values have Error in the name for namespacing purposes.
|
|
|
|
|
|
|
|
|
|
|
| |
The SCXML algorithm depends on the guarantee that there is always an LCA
regardless of the state list. The case where the targets are in a different
tree than the source (e.g. if you have not given the target state a parent) is
a bug. The fix is to set an error when this happens in exitStates() and exit
states as if the pending error states were the target states. In enterStates
we will detect the error and skip the step of selecting states to enter, and
instead just enter the pending error states. This breaks transitions to and
from the root state, which is not supported by the SCXML algorithm.
|
|
|
|
|
|
|
|
| |
Keep searching the parent hierarchy for error states even if a state in the
hierarchy cannot be cast to QState. Also make currentErrorState==0 an assert,
since there should always be an error state (we default to the special
initialErrorState if we are unable to find anything else), otherwise the
machine might get into an undefined state (e.g. configuration is empty)
|
|
|
|
|
|
|
| |
We have gone back to the old definition of implicit start values where the
a new default start value is sniffed every time the animation is restarted,
so we do not need to emulate this behavior ourselves anymore. Behavior should
be identical.
|
|
|
|
|
|
|
|
| |
implicit end value.
We need to stop the animation prior to setting the end value to an invalid
variant, otherwise the current value of the property will be updated based on
the new end value and randomness will occur.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
Accessing the event can be useful. E.g., onEntry() can do some
common event processing regardless of which transition caused the
state to be entered; onTransition() can be used in combination
with eventTest(), where eventTest() would first check that the
input matches some criteria, and then the actual processing of that
input would be done in onTransition.
|
| |
|