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

Commit 66dbeac0 authored by Alan Viverette's avatar Alan Viverette Committed by Android (Google) Code Review
Browse files

Merge "Split AbsListView.onTouchEvent into multiple methods for readability."

parents 3d6a3800 e7f30dc1
Loading
Loading
Loading
Loading
+306 −289
Original line number Diff line number Diff line
@@ -3308,6 +3308,67 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te

        switch (action & MotionEvent.ACTION_MASK) {
        case MotionEvent.ACTION_DOWN: {
            onTouchDown(ev);
            break;
        }

        case MotionEvent.ACTION_MOVE: {
            onTouchMove(ev);
            break;
        }

        case MotionEvent.ACTION_UP: {
            onTouchUp(ev);
            break;
        }

        case MotionEvent.ACTION_CANCEL: {
            onTouchCancel();
            break;
        }

        case MotionEvent.ACTION_POINTER_UP: {
            onSecondaryPointerUp(ev);
            final int x = mMotionX;
            final int y = mMotionY;
            final int motionPosition = pointToPosition(x, y);
            if (motionPosition >= 0) {
                // Remember where the motion event started
                v = getChildAt(motionPosition - mFirstPosition);
                mMotionViewOriginalTop = v.getTop();
                mMotionPosition = motionPosition;
            }
            mLastY = y;
            break;
        }

        case MotionEvent.ACTION_POINTER_DOWN: {
            // New pointers take over dragging duties
            final int index = ev.getActionIndex();
            final int id = ev.getPointerId(index);
            final int x = (int) ev.getX(index);
            final int y = (int) ev.getY(index);
            mMotionCorrection = 0;
            mActivePointerId = id;
            mMotionX = x;
            mMotionY = y;
            final int motionPosition = pointToPosition(x, y);
            if (motionPosition >= 0) {
                // Remember where the motion event started
                v = getChildAt(motionPosition - mFirstPosition);
                mMotionViewOriginalTop = v.getTop();
                mMotionPosition = motionPosition;
            }
            mLastY = y;
            break;
        }
        }

        return true;
    }

    private void onTouchDown(MotionEvent ev) {
        View v;
        switch (mTouchMode) {
        case TOUCH_MODE_OVERFLING: {
            mFlingRunnable.endFling();
@@ -3370,10 +3431,9 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
                removeCallbacks(mPendingCheckForTap);
            }
        }
            break;
    }

        case MotionEvent.ACTION_MOVE: {
    private void onTouchMove(MotionEvent ev) {
        int pointerIndex = ev.findPointerIndex(mActivePointerId);
        if (pointerIndex == -1) {
            pointerIndex = 0;
@@ -3400,10 +3460,9 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
            scrollIfNeeded(y);
            break;
        }
            break;
    }

        case MotionEvent.ACTION_UP: {
    private void onTouchUp(MotionEvent ev) {
        switch (mTouchMode) {
        case TOUCH_MODE_DOWN:
        case TOUCH_MODE_TAP:
@@ -3470,7 +3529,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
                        mTouchMode = TOUCH_MODE_REST;
                        updateSelectorState();
                    }
                        return true;
                    return;
                } else if (!mDataChanged && mAdapter.isEnabled(motionPosition)) {
                    performClick.run();
                }
@@ -3576,10 +3635,9 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
            mScrollStrictSpan.finish();
            mScrollStrictSpan = null;
        }
            break;
    }

        case MotionEvent.ACTION_CANCEL: {
    private void onTouchCancel() {
        switch (mTouchMode) {
        case TOUCH_MODE_OVERSCROLL:
            if (mFlingRunnable == null) {
@@ -3614,47 +3672,6 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
            mEdgeGlowBottom.onRelease();
        }
        mActivePointerId = INVALID_POINTER;
            break;
        }

        case MotionEvent.ACTION_POINTER_UP: {
            onSecondaryPointerUp(ev);
            final int x = mMotionX;
            final int y = mMotionY;
            final int motionPosition = pointToPosition(x, y);
            if (motionPosition >= 0) {
                // Remember where the motion event started
                v = getChildAt(motionPosition - mFirstPosition);
                mMotionViewOriginalTop = v.getTop();
                mMotionPosition = motionPosition;
            }
            mLastY = y;
            break;
        }

        case MotionEvent.ACTION_POINTER_DOWN: {
            // New pointers take over dragging duties
            final int index = ev.getActionIndex();
            final int id = ev.getPointerId(index);
            final int x = (int) ev.getX(index);
            final int y = (int) ev.getY(index);
            mMotionCorrection = 0;
            mActivePointerId = id;
            mMotionX = x;
            mMotionY = y;
            final int motionPosition = pointToPosition(x, y);
            if (motionPosition >= 0) {
                // Remember where the motion event started
                v = getChildAt(motionPosition - mFirstPosition);
                mMotionViewOriginalTop = v.getTop();
                mMotionPosition = motionPosition;
            }
            mLastY = y;
            break;
        }
        }

        return true;
    }

    @Override