Skip to content

Commit

Permalink
Trigger pointer leave when active controller switched
Browse files Browse the repository at this point in the history
Summary:
For VR, JSPointerDispatcher skips calculating the delta of hit targets (which happens in onMove) on the frame in which the active controller is switched because the motion event is a DOWN event, not a MOVE event in that specific frame.

This diff fixes the issue by just calling onMove in addition to onDown for DOWN motion events. Unfortunately we do not have separate pointer IDs for each controller.

This won't change the behavior for non-hoverable pointers. For hoverable pointers, it will dispatch an extra pointer_enter if the hit path has changed between the last move event and the down event.

Changelog:
[Internal][Fixed] - Trigger pointer leave when active controller switched

Reviewed By: lunaleaps, javache

Differential Revision: D44377324

fbshipit-source-id: 0942e3262598b3ce92b5fca736ab3a913ebdbfed
  • Loading branch information
genkikondo authored and facebook-github-bot committed Mar 27, 2023
1 parent 04df252 commit e7f0967
Showing 1 changed file with 5 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,10 @@ private void onDown(
motionEvent,
enterViewTargets,
eventDispatcher);
} else {
// There are cases when the pointer may have moved in the same frame as the down event.
// Dispatch the move event before the down event.
onMove(activeTargetTag, eventState, motionEvent, eventDispatcher);
}

boolean listeningForDown =
Expand Down Expand Up @@ -384,11 +388,10 @@ private void onMove(

int activePointerId = eventState.getActivePointerId();
List<ViewTarget> activeHitPath = eventState.getHitPathByPointerId().get(activePointerId);

List<ViewTarget> lastHitPath =
mLastHitPathByPointerId != null && mLastHitPathByPointerId.containsKey(activePointerId)
? mLastHitPathByPointerId.get(activePointerId)
: new ArrayList<ViewTarget>();
: new ArrayList<>();

// hitState is list ordered from inner child -> parent tag
// Traverse hitState back-to-front to find the first divergence with lastHitPath
Expand Down

0 comments on commit e7f0967

Please sign in to comment.