From be0158a7d1bbaacabe813051c3548338a7ef12f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82?= Date: Wed, 23 Sep 2026 16:47:08 +0200 Subject: [PATCH] Don't change state of handlers without pointers --- .../java/com/swmansion/gesturehandler/core/GestureHandler.kt | 3 +++ .../swmansion/gesturehandler/react/RNGestureHandlerModule.kt | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt index 1b6c7a9d1e..57e75d6f5b 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt @@ -237,6 +237,9 @@ open class GestureHandler { return localPointerId } + val hasTrackedPointers: Boolean + get() = trackedPointersIDsCount > 0 + fun startTrackingPointer(pointerId: Int) { if (isTrackingPointer(pointerId)) { return diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt index 61dbfef0f6..e7aeb8328c 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt @@ -145,6 +145,10 @@ class RNGestureHandlerModule(reactContext: ReactApplicationContext?) : UiThreadUtil.assertOnUiThread() registry.getHandler(handlerTag)?.let { handler -> + if (handler.state == GestureHandler.STATE_UNDETERMINED && !handler.hasTrackedPointers) { + return + } + if (newState == GestureHandler.STATE_ACTIVE) { if (handler.state != GestureHandler.STATE_BEGAN) { // We don't allow activation of gestures which haven't received any touches