| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|\ |
|
| |
| |
| |
| |
| |
| | |
of the object
Task-number: 251763
|
| |
| |
| |
| |
| |
| |
| |
| | |
This allows for better testing because from now on we can rely on the
results to be always the same and not rely on timer accuracy any more.
Task-number: 251764
Reviewed-by: leo
|
| | |
|
| |
| |
| |
| | |
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.
|
| |
| |
| |
| |
| |
| | |
Change expectation for entering the root state. We should never have the
root state in the configuration. Also fix the expected error message in
historyStateHasNowhereToGo since this has changed along with the API.
|
| |
| |
| |
| |
| |
| |
| |
| | |
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)
|
|/
|
|
| |
addHistoryState() is gone and onTransition() now takes an argument.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
the default animation concept, since this is its intended use.
|
|
|
|
| |
assert in the state machine which needs to be debugged.
|
| |
|
| |
|
| |
|
| |
|
|\ |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
we only test the inequality of the new value compared to the previous
one in case we have something conected to currentValueChanged signal.
The comparison is quite heavy in QVariant. So avoiding it a good thing.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | |
|
| |
| |
| |
| | |
overrides the virtual function.
|
| |
| |
| |
| | |
response.
|
| |
| |
| |
| | |
loop. Also make sure we set the direction to an angle within 360 degrees.
|
| |
| |
| |
| | |
immediately for reverse actions, thus immediately stopping them.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
the property should be restored to the value assigned by the ancestor state.
When restoreProperties is on, assigning a value in a state means it will have
that value as long as the state is active, unless an active state deeper in the
hierarchy assigns it a different value. This is basically a stack of "initial"
values, but implemented using the parent hierarchy of the state instead.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
potentially restored once the state that set it is exited. So if you have a
parent state P which sets 'foo' and then several child states of P, the property
should not be restored as long as P is active, regardless of which transitions
are taken inside P and what properties are being assigned there. Before, we would
restore the property when we entered a state that did not assign it, ignoring what
properties where being assigned in the parent.
|
| |
| |
| |
| | |
based on the meta-object system.
|
|/
|
|
|
|
| |
and then fire. One of them has an error, which causes it to enter its error
state. The errorstate example has been changed to handle this by disabling
the tank. The rest of the tanks will keep working.
|
|\ |
|
| | |
|
| | |
|
| | |
|
| | |
|
|/
|
|
|
|
|
|
|
|
| |
in SCXML it makes no sense for a <parallel> tag to be atomic, hence have no
children, whereas in a dynamic state machine you might set an atomic state as
parallel because this should govern the behavior if the state gets children
later. We decided that the most intuitive definition is that a state is
atomic if it has no children, regardless of whether it has the parallel child
mode. With the old definition, transitions from empty parallel states will
never be taken, as illustrated by the test.
|
|\
| |
| |
| |
| | |
Conflicts:
examples/animation/sub-attaq/states.cpp
|
| |
| |
| |
| |
| | |
QItemAnimation has disappeared and it's now better to start the
animation instead of pausing it
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| | |
Result of API review. Don't need them (for now).
|