Skip to content

Commit 9620520

Browse files
authored
[Web] Add onPointerOutOfBounds to LongPress gesture handler (#3313)
## Description As pointed out in #3310, `LongPress` on web does not override `onPointerOutOfBounds` method, which leads to gesture not being cancelled even if `maxDistance` was exceeded. Fixes #3310 ## Test plan <details> <summary>Tested on the following code:</summary> ```jsx import React from 'react'; import { StyleSheet, View } from 'react-native'; import { Gesture, GestureDetector } from 'react-native-gesture-handler'; export default function EmptyExample() { const g = Gesture.LongPress() .onStart((e) => { console.log(e); }) .onFinalize((e, s) => console.log(s)) .shouldCancelWhenOutside(false); return ( <View style={styles.container}> <GestureDetector gesture={g}> <View style={{ width: 100, height: 100, backgroundColor: 'crimson', }} /> </GestureDetector> </View> ); } const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', }, }); ``` </details>
1 parent 2a4bad7 commit 9620520

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

src/web/handlers/LongPressGestureHandler.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,12 @@ export default class LongPressGestureHandler extends GestureHandler {
101101
this.checkDistanceFail();
102102
}
103103

104+
protected onPointerOutOfBounds(event: AdaptedEvent): void {
105+
super.onPointerOutOfBounds(event);
106+
this.tracker.track(event);
107+
this.checkDistanceFail();
108+
}
109+
104110
protected onPointerUp(event: AdaptedEvent): void {
105111
super.onPointerUp(event);
106112
this.tracker.removeFromTracker(event.pointerId);

0 commit comments

Comments
 (0)