From 5490445898536dc437432c0b440684b014958a2b Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Wed, 18 Apr 2018 11:39:26 -0700 Subject: [PATCH] Do not allow fling if we didn't get onGestureStarted Bug: 78232923 Change-Id: Ia37f54d7a0e2eb1d42641648ac7a5e7687e3dd0c --- .../android/quickstep/WindowTransformSwipeHandler.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java index 82e64ab845..99e9451534 100644 --- a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java +++ b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java @@ -134,6 +134,8 @@ public class WindowTransformSwipeHandler { private static final long MIN_SWIPE_DURATION = 80; private static final float MIN_PROGRESS_FOR_OVERVIEW = 0.5f; + private static final float SWIPE_DURATION_MULTIPLIER = + Math.min(1 / MIN_PROGRESS_FOR_OVERVIEW, 1 / (1 - MIN_PROGRESS_FOR_OVERVIEW)); private final ClipAnimationHelper mClipAnimationHelper = new ClipAnimationHelper(); @@ -559,12 +561,15 @@ public class WindowTransformSwipeHandler { public void onGestureEnded(float endVelocity) { Resources res = mContext.getResources(); float flingThreshold = res.getDimension(R.dimen.quickstep_fling_threshold_velocity); - boolean isFling = Math.abs(endVelocity) > flingThreshold; + boolean isFling = mGestureStarted && Math.abs(endVelocity) > flingThreshold; long duration = MAX_SWIPE_DURATION; final float endShift; if (!isFling) { - endShift = mCurrentShift.value >= MIN_PROGRESS_FOR_OVERVIEW ? 1 : 0; + endShift = mCurrentShift.value >= MIN_PROGRESS_FOR_OVERVIEW && mGestureStarted ? 1 : 0; + long expectedDuration = Math.abs(Math.round((endShift - mCurrentShift.value) + * MAX_SWIPE_DURATION * SWIPE_DURATION_MULTIPLIER)); + duration = Math.min(MAX_SWIPE_DURATION, expectedDuration); mLogAction = Touch.SWIPE; } else { endShift = endVelocity < 0 ? 1 : 0;