From aea80f40d8dc55b7de5b3d0efe78f63eeb7c2745 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Mon, 10 Nov 2014 22:41:54 +0100 Subject: [PATCH] Cancel lockscreen/shade gestures when orientation changes Bug: 18293929 Change-Id: Ifbf91c42fa9e68aa688ca4c390fcc24a358212a9 --- .../SystemUI/src/com/android/systemui/SwipeHelper.java | 3 ++- .../statusbar/phone/NotificationPanelView.java | 10 ++++++---- .../android/systemui/statusbar/phone/PanelView.java | 3 ++- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/SwipeHelper.java b/packages/SystemUI/src/com/android/systemui/SwipeHelper.java index f206e56338199..33f6564b948a4 100644 --- a/packages/SystemUI/src/com/android/systemui/SwipeHelper.java +++ b/packages/SystemUI/src/com/android/systemui/SwipeHelper.java @@ -453,7 +453,8 @@ public class SwipeHelper implements Gefingerpoken { && !mTouchAboveFalsingThreshold; boolean dismissChild = mCallback.canChildBeDismissed(mCurrView) - && !falsingDetected && (childSwipedFastEnough || childSwipedFarEnough); + && !falsingDetected && (childSwipedFastEnough || childSwipedFarEnough) + && ev.getActionMasked() == MotionEvent.ACTION_UP; if (dismissChild) { // flingadingy diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java index b531c681bca6e..9d7d310903385 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -523,7 +523,8 @@ public class NotificationPanelView extends PanelView implements case MotionEvent.ACTION_UP: trackMovement(event); if (mQsTracking) { - flingQsWithCurrentVelocity(); + flingQsWithCurrentVelocity( + event.getActionMasked() == MotionEvent.ACTION_CANCEL); mQsTracking = false; } mIntercepting = false; @@ -558,9 +559,9 @@ public class NotificationPanelView extends PanelView implements super.requestDisallowInterceptTouchEvent(disallowIntercept); } - private void flingQsWithCurrentVelocity() { + private void flingQsWithCurrentVelocity(boolean isCancelMotionEvent) { float vel = getCurrentVelocity(); - flingSettings(vel, flingExpandsQs(vel)); + flingSettings(vel, flingExpandsQs(vel) && !isCancelMotionEvent); } private boolean flingExpandsQs(float vel) { @@ -729,7 +730,8 @@ public class NotificationPanelView extends PanelView implements float fraction = getQsExpansionFraction(); if ((fraction != 0f || y >= mInitialTouchY) && (fraction != 1f || y <= mInitialTouchY)) { - flingQsWithCurrentVelocity(); + flingQsWithCurrentVelocity( + event.getActionMasked() == MotionEvent.ACTION_CANCEL); } else { mScrollYOverride = -1; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java index c706ef095cfa0..47ce6032c9b7f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java @@ -330,7 +330,8 @@ public abstract class PanelView extends FrameLayout { vectorVel = (float) Math.hypot( mVelocityTracker.getXVelocity(), mVelocityTracker.getYVelocity()); } - boolean expand = flingExpands(vel, vectorVel); + boolean expand = flingExpands(vel, vectorVel) + || event.getActionMasked() == MotionEvent.ACTION_CANCEL; onTrackingStopped(expand); DozeLog.traceFling(expand, mTouchAboveFalsingThreshold, mStatusBar.isFalsingThresholdNeeded(),