From 8d379425ed57fdf3647531773b63749c8c145065 Mon Sep 17 00:00:00 2001 From: Jakub Piasecki Date: Mon, 1 Jun 2026 14:14:23 +0200 Subject: [PATCH] Fix hover events recording gestures other than hover --- .../gesturehandler/core/GestureHandlerOrchestrator.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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 7e8b3d6f66..95a10ba8f3 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 @@ -492,7 +492,7 @@ class GestureHandlerOrchestrator( top + view.height > parent.height } - private fun extractAncestorHandlers(view: View, coords: FloatArray, pointerId: Int): Boolean { + private fun extractAncestorHandlers(view: View, coords: FloatArray, pointerId: Int, event: MotionEvent): Boolean { var found = false var parent = view.parent @@ -509,6 +509,10 @@ class GestureHandlerOrchestrator( handlerRegistry.getHandlersForView(parent)?.let { synchronized(it) { for (handler in it) { + if (shouldHandlerSkipHoverEvents(handler, event)) { + continue + } + if (handler.isEnabled && handler.isWithinBounds(view, coords[0], coords[1])) { found = true recordHandlerIfNotPresent(handler, parentViewGroup) @@ -568,7 +572,7 @@ class GestureHandlerOrchestrator( if (coords[0] in 0f..view.width.toFloat() && coords[1] in 0f..view.height.toFloat() && isViewOverflowingParent(view) && - extractAncestorHandlers(view, coords, pointerId) + extractAncestorHandlers(view, coords, pointerId, event) ) { found = true }