effects/private: Merge two state machines into one with substates
Having one state machine instead of two somehow simplifies the code and makes it less fragile. The new property `substate`, which replaces `thumbSource.state` still supports imperative assignments that are so important for Drag&Drop, and still triggers state updates. However, now a substate may not become an active state: that behavior didn't make sense in previous iterations, and has led to a glitch where a window won't resize during return-to-initial animation. The glitch happened because two state transitions were starting almost-simultaneously (and by Murphy's law in the worst possible order, of course), and both animations were playing, but one animation was supposed to to a property that is managed by the other. But since QtQuick animations cache their from/to values before they start, the dependent transition essentially didn't animate at all.
parent
74af27dc