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

Commit bf2854dd authored by Brian Attwell's avatar Brian Attwell
Browse files

Stop rejecting valid flings in quick contacts

I continue to regret basing MultiShrinkScroller off of
ScrollableViewGroup instead of directly basing it off of the
less buggy ScrollView code.

* Previously we only tracked velocity inside onTouch.
  Now, we will also track it in onInterceptTouchEvent, similarly
  to ViewDragHelper. This will result in double tracking of
  some events. This isn't a problem: VelocityTracker.cpp considers
  the timestamp when performing the velocity calculation.
* Don't dismiss vertical flings simply because they also contain
  a horizontal fling

Bug: 17919260
Change-Id: Ic0e512633dd6d99b1e55adfb56a57e4f170f2e73
parent f0073403
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -389,6 +389,11 @@ public class MultiShrinkScroller extends FrameLayout {

    @Override
    public boolean onInterceptTouchEvent(MotionEvent event) {
        if (mVelocityTracker == null) {
            mVelocityTracker = VelocityTracker.obtain();
        }
        mVelocityTracker.addMovement(event);

        // The only time we want to intercept touch events is when we are being dragged.
        return shouldStartDrag(event);
    }
@@ -1157,11 +1162,8 @@ public class MultiShrinkScroller extends FrameLayout {
    }

    private boolean motionShouldStartDrag(MotionEvent event) {
        final float deltaX = event.getX() - mLastEventPosition[0];
        final float deltaY = event.getY() - mLastEventPosition[1];
        final boolean draggedX = (deltaX > mTouchSlop || deltaX < -mTouchSlop);
        final boolean draggedY = (deltaY > mTouchSlop || deltaY < -mTouchSlop);
        return draggedY && !draggedX;
        return deltaY > mTouchSlop || deltaY < -mTouchSlop;
    }

    private float updatePositionAndComputeDelta(MotionEvent event) {