diff --git a/src/web/handlers/FlingGestureHandler.ts b/src/web/handlers/FlingGestureHandler.ts index 16b39428b3..0a235e7625 100644 --- a/src/web/handlers/FlingGestureHandler.ts +++ b/src/web/handlers/FlingGestureHandler.ts @@ -114,6 +114,8 @@ export default class FlingGestureHandler extends GestureHandler { super.onPointerDown(event); this.newPointerAction(); + + this.tryToSendTouchEvent(event); } protected onPointerAdd(event: AdaptedEvent): void { diff --git a/src/web/handlers/GestureHandler.ts b/src/web/handlers/GestureHandler.ts index 5868bd90fe..fde4abc866 100644 --- a/src/web/handlers/GestureHandler.ts +++ b/src/web/handlers/GestureHandler.ts @@ -289,32 +289,21 @@ export default abstract class GestureHandler implements IGestureHandler { GestureHandlerOrchestrator.getInstance().cancelMouseAndPenGestures(this); } - if (this.config.needsPointerData) { - this.sendTouchEvent(event); - } + // TODO: Bring back touch events along with introducing `handleDown` method that will handle handler specific stuff } // Adding another pointer to existing ones protected onPointerAdd(event: AdaptedEvent): void { - if (this.config.needsPointerData) { - this.sendTouchEvent(event); - } + this.tryToSendTouchEvent(event); } protected onPointerUp(event: AdaptedEvent): void { - if (this.config.needsPointerData) { - this.sendTouchEvent(event); - } + this.tryToSendTouchEvent(event); } // Removing pointer, when there is more than one pointers protected onPointerRemove(event: AdaptedEvent): void { - if (this.config.needsPointerData) { - this.sendTouchEvent(event); - } + this.tryToSendTouchEvent(event); } protected onPointerMove(event: AdaptedEvent): void { - this.tryToSendMoveEvent(false); - if (this.config.needsPointerData) { - this.sendTouchEvent(event); - } + this.tryToSendMoveEvent(false, event); } protected onPointerLeave(event: AdaptedEvent): void { if (this.shouldCancelWhenOutside) { @@ -329,28 +318,19 @@ export default abstract class GestureHandler implements IGestureHandler { return; } - if (this.config.needsPointerData) { - this.sendTouchEvent(event); - } + this.tryToSendTouchEvent(event); } protected onPointerEnter(event: AdaptedEvent): void { - if (this.config.needsPointerData) { - this.sendTouchEvent(event); - } + this.tryToSendTouchEvent(event); } protected onPointerCancel(event: AdaptedEvent): void { - if (this.config.needsPointerData) { - this.sendTouchEvent(event); - } + this.tryToSendTouchEvent(event); this.cancel(); this.reset(); } protected onPointerOutOfBounds(event: AdaptedEvent): void { - this.tryToSendMoveEvent(true); - if (this.config.needsPointerData) { - this.sendTouchEvent(event); - } + this.tryToSendMoveEvent(true, event); } protected onPointerMoveOver(_event: AdaptedEvent): void { // used only by hover gesture handler atm @@ -358,14 +338,22 @@ export default abstract class GestureHandler implements IGestureHandler { protected onPointerMoveOut(_event: AdaptedEvent): void { // used only by hover gesture handler atm } - private tryToSendMoveEvent(out: boolean): void { - if ( - this.enabled && - this.active && - (!out || (out && !this.shouldCancelWhenOutside)) - ) { + private tryToSendMoveEvent(out: boolean, event: AdaptedEvent): void { + if ((out && this.shouldCancelWhenOutside) || !this.enabled) { + return; + } + + if (this.active) { this.sendEvent(this.currentState, this.currentState); } + + this.tryToSendTouchEvent(event); + } + + protected tryToSendTouchEvent(event: AdaptedEvent): void { + if (this.config.needsPointerData) { + this.sendTouchEvent(event); + } } public sendTouchEvent(event: AdaptedEvent): void { diff --git a/src/web/handlers/LongPressGestureHandler.ts b/src/web/handlers/LongPressGestureHandler.ts index 7707b90aba..06b14d0f9d 100644 --- a/src/web/handlers/LongPressGestureHandler.ts +++ b/src/web/handlers/LongPressGestureHandler.ts @@ -67,6 +67,8 @@ export default class LongPressGestureHandler extends GestureHandler { this.tryBegin(event); this.tryActivate(); this.checkDistanceFail(event); + + this.tryToSendTouchEvent(event); } protected onPointerMove(event: AdaptedEvent): void { diff --git a/src/web/handlers/ManualGestureHandler.ts b/src/web/handlers/ManualGestureHandler.ts index c04e21669b..9c9b37db17 100644 --- a/src/web/handlers/ManualGestureHandler.ts +++ b/src/web/handlers/ManualGestureHandler.ts @@ -14,6 +14,8 @@ export default class ManualGestureHandler extends GestureHandler { this.tracker.addToTracker(event); super.onPointerDown(event); this.begin(); + + this.tryToSendTouchEvent(event); } protected onPointerAdd(event: AdaptedEvent): void { diff --git a/src/web/handlers/NativeViewGestureHandler.ts b/src/web/handlers/NativeViewGestureHandler.ts index f3718af76b..df6766ad17 100644 --- a/src/web/handlers/NativeViewGestureHandler.ts +++ b/src/web/handlers/NativeViewGestureHandler.ts @@ -53,6 +53,8 @@ export default class NativeViewGestureHandler extends GestureHandler { this.tracker.addToTracker(event); super.onPointerDown(event); this.newPointerAction(); + + this.tryToSendTouchEvent(event); } protected onPointerAdd(event: AdaptedEvent): void { diff --git a/src/web/handlers/PanGestureHandler.ts b/src/web/handlers/PanGestureHandler.ts index 4364c6b74f..215c138816 100644 --- a/src/web/handlers/PanGestureHandler.ts +++ b/src/web/handlers/PanGestureHandler.ts @@ -227,6 +227,8 @@ export default class PanGestureHandler extends GestureHandler { this.tryBegin(event); this.checkBegan(); + + this.tryToSendTouchEvent(event); } protected onPointerAdd(event: AdaptedEvent): void { @@ -256,7 +258,6 @@ export default class PanGestureHandler extends GestureHandler { protected onPointerUp(event: AdaptedEvent): void { super.onPointerUp(event); - if (this.currentState === State.ACTIVE) { this.lastX = this.tracker.getLastAvgX(); this.lastY = this.tracker.getLastAvgY(); @@ -271,6 +272,7 @@ export default class PanGestureHandler extends GestureHandler { this.fail(); } } + protected onPointerRemove(event: AdaptedEvent): void { super.onPointerRemove(event); this.tracker.removeFromTracker(event.pointerId); diff --git a/src/web/handlers/PinchGestureHandler.ts b/src/web/handlers/PinchGestureHandler.ts index 646cff0ff0..5ee8db2e59 100644 --- a/src/web/handlers/PinchGestureHandler.ts +++ b/src/web/handlers/PinchGestureHandler.ts @@ -71,6 +71,8 @@ export default class PinchGestureHandler extends GestureHandler { protected onPointerDown(event: AdaptedEvent): void { this.tracker.addToTracker(event); super.onPointerDown(event); + + this.tryToSendTouchEvent(event); } protected onPointerAdd(event: AdaptedEvent): void { diff --git a/src/web/handlers/RotationGestureHandler.ts b/src/web/handlers/RotationGestureHandler.ts index 38e40e854d..f2654c6faa 100644 --- a/src/web/handlers/RotationGestureHandler.ts +++ b/src/web/handlers/RotationGestureHandler.ts @@ -78,6 +78,8 @@ export default class RotationGestureHandler extends GestureHandler { protected onPointerDown(event: AdaptedEvent): void { this.tracker.addToTracker(event); super.onPointerDown(event); + + this.tryToSendTouchEvent(event); } protected onPointerAdd(event: AdaptedEvent): void { diff --git a/src/web/handlers/TapGestureHandler.ts b/src/web/handlers/TapGestureHandler.ts index 7aa52c3ba2..12fd85e6c3 100644 --- a/src/web/handlers/TapGestureHandler.ts +++ b/src/web/handlers/TapGestureHandler.ts @@ -121,6 +121,8 @@ export default class TapGestureHandler extends GestureHandler { this.lastY = event.y; this.updateState(event); + + this.tryToSendTouchEvent(event); } protected onPointerAdd(event: AdaptedEvent): void {