Ignore down touches in QS while animating

This prevents touches inside the QS bounds from putting NPVC in a
bad state that causes subsequent touches to be mishandled.

Bug: 261156369
Test: manual and atest
Change-Id: Ia5cab8c4104b1314bfca7189f0eba2e1175fed9b
This commit is contained in:
Justin Weir
2023-01-09 16:50:11 -05:00
parent e4cfc06683
commit ea18d20913

View File

@@ -2421,7 +2421,7 @@ public final class NotificationPanelViewController implements Dumpable {
mInitialTouchY = event.getY();
mInitialTouchX = event.getX();
}
if (!isFullyCollapsed()) {
if (!isFullyCollapsed() && !isShadeOrQsHeightAnimationRunning()) {
handleQsDown(event);
}
// defer touches on QQS to shade while shade is collapsing. Added margin for error
@@ -5211,6 +5211,11 @@ public final class NotificationPanelViewController implements Dumpable {
}
}
/** Returns whether a shade or QS expansion animation is running */
private boolean isShadeOrQsHeightAnimationRunning() {
return mHeightAnimator != null && !mHintAnimationRunning && !mIsSpringBackAnimation;
}
/**
* Phase 2: Bounce down.
*/
@@ -6228,8 +6233,7 @@ public final class NotificationPanelViewController implements Dumpable {
mCollapsedAndHeadsUpOnDown =
isFullyCollapsed() && mHeadsUpManager.hasPinnedHeadsUp();
addMovement(event);
boolean regularHeightAnimationRunning = mHeightAnimator != null
&& !mHintAnimationRunning && !mIsSpringBackAnimation;
boolean regularHeightAnimationRunning = isShadeOrQsHeightAnimationRunning();
if (!mGestureWaitForTouchSlop || regularHeightAnimationRunning) {
mTouchSlopExceeded = regularHeightAnimationRunning
|| mTouchSlopExceededBeforeDown;