diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt index 13d588790b..f8105a9c52 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt @@ -6,6 +6,7 @@ import android.view.MotionEvent import android.view.View import android.view.ViewGroup import android.widget.EditText +import com.facebook.react.uimanager.RootView import com.swmansion.gesturehandler.react.RNGestureHandlerRootHelper import com.swmansion.gesturehandler.react.RNGestureHandlerRootView import java.util.* @@ -14,6 +15,7 @@ class GestureHandlerOrchestrator( private val wrapperView: ViewGroup, private val handlerRegistry: GestureHandlerRegistry, private val viewConfigHelper: ViewConfigurationHelper, + private val rootView: ViewGroup, ) { /** * Minimum alpha (value from 0 to 1) that should be set to a view so that it can be treated as a @@ -56,6 +58,14 @@ class GestureHandlerOrchestrator( if (finishedHandlersCleanupScheduled && handlingChangeSemaphore == 0) { cleanupFinishedHandlers() } + if (action == MotionEvent.ACTION_UP || + action == MotionEvent.ACTION_CANCEL || + action == MotionEvent.ACTION_HOVER_EXIT + ) { + if (gestureHandlers.isEmpty() && rootView is RootView) { + rootView.onChildEndedNativeGesture(rootView, event) + } + } return true } diff --git a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt index 2dc983a2b6..629c155117 100644 --- a/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +++ b/packages/react-native-gesture-handler/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt @@ -36,6 +36,7 @@ class RNGestureHandlerRootHelper(private val context: ReactContext, wrappedView: wrappedView, registry, RNViewConfigurationHelper(), + rootView, ).apply { minimumAlphaForTraversal = MIN_ALPHA_FOR_TOUCH }