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(),