Skip to content

Commit 6e2751e

Browse files
committed
fix(android): Fix onTouches* callbacks being called for all gestures software-mansion/react-native-gesture-handler#3596
1 parent ef139bd commit 6e2751e

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

packages/gesturehandler/platforms/android/java/com/swmansion/gesturehandler/GestureHandler.java

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -223,17 +223,23 @@ private int findNextLocalPointerId() {
223223
}
224224

225225
public void startTrackingPointer(int pointerId) {
226-
if (mTrackedPointerIDs[pointerId] == -1) {
227-
mTrackedPointerIDs[pointerId] = findNextLocalPointerId();
228-
mTrackedPointersCount++;
226+
if (isTrackingPointer(pointerId)) {
227+
return;
229228
}
229+
trackedPointerIDs[pointerId] = findNextLocalPointerId();
230+
trackedPointersIDsCount++;
230231
}
231232

232233
public void stopTrackingPointer(int pointerId) {
233-
if (mTrackedPointerIDs[pointerId] != -1) {
234-
mTrackedPointerIDs[pointerId] = -1;
235-
mTrackedPointersCount--;
234+
if (!isTrackingPointer(pointerId)) {
235+
return;
236236
}
237+
trackedPointerIDs[pointerId] = -1;
238+
trackedPointersIDsCount--;
239+
}
240+
241+
private boolean isTrackingPointer(int pointerId) {
242+
return trackedPointerIDs[pointerId] != -1;
237243
}
238244

239245
private boolean needAdapt(MotionEvent event) {
@@ -362,9 +368,9 @@ private void moveToState(int newState) {
362368
onStateChange(newState, oldState);
363369
}
364370

365-
public boolean wantEvents(MotionEvent event) {
371+
public boolean wantsEvent(MotionEvent event) {
366372
return mEnabled && mState != STATE_FAILED && mState != STATE_CANCELLED && mState != STATE_END
367-
&& mTrackedPointersCount > 0;
373+
&& isTrackingPointer(event.getPointerId(event.getActionIndex()));
368374
}
369375

370376
public int getState() {

packages/gesturehandler/platforms/android/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,7 @@ private void deliverEventToGestureHandler(GestureHandler handler, MotionEvent so
332332
handler.cancel();
333333
return;
334334
}
335-
if (!handler.wantEvents(sourceEvent)) {
335+
if (!handler.wantsEvent(sourceEvent)) {
336336
return;
337337
}
338338
int action = sourceEvent.getActionMasked();

0 commit comments

Comments
 (0)