Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c26b2fba authored by Daniel Norman's avatar Daniel Norman Committed by Android (Google) Code Review
Browse files

Merge "Fix the consistency of the event stream during interrupted and...

Merge "Fix the consistency of the event stream during interrupted and continued touch exploration." into main
parents 824fd6cd ca06f854
Loading
Loading
Loading
Loading
+15 −4
Original line number Diff line number Diff line
@@ -637,7 +637,7 @@ public class TouchExplorer extends BaseEventStreamTransformation
            MotionEvent event, MotionEvent rawEvent, int policyFlags) {
        switch (event.getActionMasked()) {
            case ACTION_DOWN:
                // We should have already received ACTION_DOWN. Ignore.
                handleActionDownStateTouchExploring(event, rawEvent, policyFlags);
                break;
            case ACTION_POINTER_DOWN:
                handleActionPointerDown(event, rawEvent, policyFlags);
@@ -843,6 +843,15 @@ public class TouchExplorer extends BaseEventStreamTransformation
        }
    }

    private void handleActionDownStateTouchExploring(
            MotionEvent event, MotionEvent rawEvent, int policyFlags) {
        // This is an interrupted and continued touch exploration. Maintain the consistency of the
        // event stream.
        mSendTouchExplorationEndDelayed.cancel();
        mSendTouchInteractionEndDelayed.cancel();
        sendTouchExplorationGestureStartAndHoverEnterIfNeeded(policyFlags);
    }

    /**
     * Handles move events while touch exploring. this is also where we drag or delegate based on
     * the number of fingers moving on the screen.
@@ -1100,12 +1109,15 @@ public class TouchExplorer extends BaseEventStreamTransformation
    }

    /**
     * Sends the enter events if needed. Such events are hover enter and touch explore
     * gesture start.
     * Sends the enter events if needed. Such events are hover enter and touch explore gesture
     * start.
     *
     * @param policyFlags The policy flags associated with the event.
     */
    private void sendTouchExplorationGestureStartAndHoverEnterIfNeeded(int policyFlags) {
        if (!mState.isTouchExploring()) {
            mDispatcher.sendAccessibilityEvent(TYPE_TOUCH_EXPLORATION_GESTURE_START);
        }
        MotionEvent event = mState.getLastInjectedHoverEvent();
        if (event != null && event.getActionMasked() == ACTION_HOVER_EXIT) {
            final int pointerIdBits = event.getPointerIdBits();
@@ -1118,7 +1130,6 @@ public class TouchExplorer extends BaseEventStreamTransformation
        }
    }


    /**
     * Determines whether a two pointer gesture is a dragging one.
     *