diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSPointerDispatcher.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSPointerDispatcher.java index d37ee53745..ef22bd280d 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSPointerDispatcher.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/JSPointerDispatcher.java @@ -387,6 +387,16 @@ public class JSPointerDispatcher { "Motion Event was ignored. Action=" + action + " Target=" + activeTargetTag); return; } + + // Update "previous" pointer coordinates and button state + Map nextEventCoordinatesByPointerId = + new HashMap<>(eventState.getEventCoordinatesByPointerId()); + mLastEventCoordinatesByPointerId = nextEventCoordinatesByPointerId; + mLastButtonState = motionEvent.getButtonState(); + + // Clean up any stale pointerIds + Set allPointerIds = mLastEventCoordinatesByPointerId.keySet(); + mHoveringPointerIds.retainAll(allPointerIds); } private static boolean isAnyoneListeningForBubblingEvent( @@ -562,21 +572,11 @@ public class JSPointerDispatcher { Map> nextHitPathByPointerId = new HashMap<>(eventState.getHitPathByPointerId()); - Map nextEventCoordinatesByPointerId = - new HashMap<>(eventState.getEventCoordinatesByPointerId()); if (targetTag == UNSELECTED_VIEW_TAG) { nextHitPathByPointerId.remove(activePointerId); - nextEventCoordinatesByPointerId.remove(activePointerId); } - mLastHitPathByPointerId = nextHitPathByPointerId; - mLastEventCoordinatesByPointerId = nextEventCoordinatesByPointerId; - mLastButtonState = motionEvent.getButtonState(); - - // Clean up any stale pointerIds - Set allPointerIds = mLastEventCoordinatesByPointerId.keySet(); - mHoveringPointerIds.retainAll(allPointerIds); } private void onMove(