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

Commit c0e4c566 authored by Ned Burns's avatar Ned Burns
Browse files

Don't crash if NSSL gets incomplete gesture

In *theory*, a View should always receive an ACTION_DOWN before
receiving any other touch events, but this isn't always the case in
practice. Whenever we see one of these "partial" gestures, we should
ignore it until a real one starts.

Test: manual
Bug: 146323887

Merged-In: I22182d90b0057df67fbd6d20785da23d6c17dcf3
Change-Id: I22182d90b0057df67fbd6d20785da23d6c17dcf3
(cherry picked from commit c8048dae)
parent 682ee208
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -3773,9 +3773,16 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd
        initVelocityTrackerIfNotExists();
        mVelocityTracker.addMovement(ev);

        final int action = ev.getAction();
        final int action = ev.getActionMasked();
        if (ev.findPointerIndex(mActivePointerId) == -1 && action != MotionEvent.ACTION_DOWN) {
            // Incomplete gesture, possibly due to window swap mid-gesture. Ignore until a new
            // one starts.
            Log.e(TAG, "Invalid pointerId=" + mActivePointerId + " in onTouchEvent "
                    + MotionEvent.actionToString(ev.getActionMasked()));
            return true;
        }

        switch (action & MotionEvent.ACTION_MASK) {
        switch (action) {
            case MotionEvent.ACTION_DOWN: {
                if (getChildCount() == 0 || !isInContentBounds(ev)) {
                    return false;