diff options
author | 2020-12-12 04:10:21 +0000 | |
---|---|---|
committer | 2020-12-12 04:10:21 +0000 | |
commit | c3f64a3f97448b46b0f5e198c22d0eae39aa61c7 (patch) | |
tree | 5bd14e1995ae3d450c9394d3ab01a864297e3a59 | |
parent | cf4b64cf992e479237cb6ce4e0a998c8af2351a9 (diff) | |
parent | bf64024d56894a2733306b4d1c0eef929986db53 (diff) |
Merge "Fix abnormal flicking when swiping up to exit OHM in 3-button mode"
-rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedGestureHandler.java | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedGestureHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedGestureHandler.java index 3b1e6cbe5ccd..951a68884e11 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedGestureHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedGestureHandler.java @@ -75,6 +75,7 @@ public class OneHandedGestureHandler implements OneHandedTransitionCallback, @Nullable OneHandedGestureEventCallback mGestureEventCallback; private Rect mGestureRegion = new Rect(); + private boolean mIsStopGesture; /** * Constructor of OneHandedGestureHandler, we only handle the gesture of @@ -153,20 +154,20 @@ public class OneHandedGestureHandler implements OneHandedTransitionCallback, float distance = (float) Math.hypot(mLastPos.x - mDownPos.x, mLastPos.y - mDownPos.y); if (distance > mDragDistThreshold) { - mGestureEventCallback.onStop(); + mIsStopGesture = true; } } break; case MotionEvent.ACTION_UP: if (mLastPos.y >= mDownPos.y && mPassedSlop) { mGestureEventCallback.onStart(); + } else if (mIsStopGesture) { + mGestureEventCallback.onStop(); } - mPassedSlop = false; - mAllowGesture = false; + clearState(); break; case MotionEvent.ACTION_CANCEL: - mPassedSlop = false; - mAllowGesture = false; + clearState(); break; default: break; @@ -174,6 +175,11 @@ public class OneHandedGestureHandler implements OneHandedTransitionCallback, } } + private void clearState() { + mPassedSlop = false; + mIsStopGesture = false; + } + private void disposeInputChannel() { if (mInputEventReceiver != null) { mInputEventReceiver.dispose(); |