diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java index 2ffb063c966eac..b205bdeb3c76fb 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/Event.java @@ -197,7 +197,7 @@ public void dispatchModern(RCTModernEventEmitter rctEventEmitter) { if (getSurfaceId() != -1) { WritableMap eventData = getEventData(); if (eventData != null) { - rctEventEmitter.receiveEvent(getSurfaceId(), getViewTag(), getEventName(), getEventData()); + rctEventEmitter.receiveEvent(getSurfaceId(), getViewTag(), getEventName(), eventData); return; } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.java index de64e8c8f903bb..f21e140b1f8f4f 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchEvent.java @@ -188,12 +188,8 @@ public void dispatch(RCTEventEmitter rctEventEmitter) { "Cannot dispatch a TouchEvent that has no MotionEvent; the TouchEvent has been recycled")); return; } - TouchesHelper.sendTouchEvent( - rctEventEmitter, - Assertions.assertNotNull(mTouchEventType), - getSurfaceId(), - getViewTag(), - this); + + TouchesHelper.sendTouchEvent(rctEventEmitter, this); } @Override @@ -210,6 +206,10 @@ private boolean hasMotionEvent() { return mMotionEvent != null; } + public TouchEventType getTouchEventType() { + return Assertions.assertNotNull(mTouchEventType); + } + public float getViewX() { return mViewX; } diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java index 676f6729549515..2b2c6ae9758102 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/events/TouchesHelper.java @@ -33,8 +33,7 @@ public class TouchesHelper { * given {@param event} instance. This method use {@param reactTarget} parameter to set as a * target view id associated with current gesture. */ - private static WritableArray createsPointersArray( - int surfaceId, int reactTarget, TouchEvent event) { + private static WritableArray createsPointersArray(TouchEvent event) { WritableArray touches = Arguments.createArray(); MotionEvent motionEvent = event.getMotionEvent(); @@ -60,8 +59,8 @@ private static WritableArray createsPointersArray( float locationY = motionEvent.getY(index) - targetViewCoordinateY; touch.putDouble(LOCATION_X_KEY, PixelUtil.toDIPFromPixel(locationX)); touch.putDouble(LOCATION_Y_KEY, PixelUtil.toDIPFromPixel(locationY)); - touch.putInt(TARGET_SURFACE_KEY, surfaceId); - touch.putInt(TARGET_KEY, reactTarget); + touch.putInt(TARGET_SURFACE_KEY, event.getSurfaceId()); + touch.putInt(TARGET_KEY, event.getViewTag()); touch.putDouble(TIMESTAMP_KEY, event.getTimestampMs()); touch.putDouble(POINTER_IDENTIFIER_KEY, motionEvent.getPointerId(index)); touches.pushMap(touch); @@ -75,17 +74,11 @@ private static WritableArray createsPointersArray( * context}. Touch event can encode multiple concurrent touches (pointers). * * @param rctEventEmitter Event emitter used to execute JS module call - * @param type type of the touch event (see {@link TouchEventType}) - * @param reactTarget target view react id associated with this gesture * @param touchEvent native touch event to read pointers count and coordinates from */ - public static void sendTouchEvent( - RCTEventEmitter rctEventEmitter, - TouchEventType type, - int surfaceId, - int reactTarget, - TouchEvent touchEvent) { - WritableArray pointers = createsPointersArray(surfaceId, reactTarget, touchEvent); + public static void sendTouchEvent(RCTEventEmitter rctEventEmitter, TouchEvent touchEvent) { + TouchEventType type = touchEvent.getTouchEventType(); + WritableArray pointers = createsPointersArray(touchEvent); MotionEvent motionEvent = touchEvent.getMotionEvent(); // For START and END events send only index of the pointer that is associated with that event