Support disable() mid drag or rotate gesture #6232
Merged
+374
−80
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Moves
DragPanHandler
andDragRotateHandler
closer to a state machine based implementation, so that, when disabled, they can perform the appropriate actions in any state.These two handlers have four states:
disabled
: The handler is disabled, and should not respond to any input.enabled
: The handler is enabled but has not started receiving any input.pending
: The handler has received amousedown
ortouchstart
event, but not a subsequentmove
event.active
: The handler has received amousedown
ortouchstart
event and at least one subsequentmove
event.Disabling a handler in the
enabled
state doesn't generally require anything special. Disabling a handler in thepending
state requires unbinding some event listeners. Disabling a handler in theactive
state requires unbinding some event listeners, sending appropriate*end
events, and not triggering an inertial camera animation.Fixes #2419.