From d552132d0b98c0acddf816902e1933d4cf4df12d Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Tue, 14 Sep 2021 14:26:50 -0700 Subject: [PATCH] Reset RecentsView#mNextPage when swiping to home This ensures that we don't inadvertently update mCurrentPage to be mNextPage in computeScrollHelper(), which would in turn mess up calculations such as RecentsView#getHorizontalOffsetSize(). Also removed resetNextPage parameter from forceFinishScroller(), as resetNextPage was always passed as true anyway. Test: Swipe up and to the right to home, ensure adjacent page goes all the way off screen Fixes: 199927699 Change-Id: Iee1ffac10e5195f0c3a124a23b06d5411ecd7ba2 --- .../quickstep/util/StaggeredWorkspaceAnim.java | 2 +- .../quickstep/util/WorkspaceRevealAnim.java | 2 +- src/com/android/launcher3/PagedView.java | 14 ++++++++------ 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/quickstep/src/com/android/quickstep/util/StaggeredWorkspaceAnim.java b/quickstep/src/com/android/quickstep/util/StaggeredWorkspaceAnim.java index ccc587cd87..44396faa49 100644 --- a/quickstep/src/com/android/quickstep/util/StaggeredWorkspaceAnim.java +++ b/quickstep/src/com/android/quickstep/util/StaggeredWorkspaceAnim.java @@ -197,7 +197,7 @@ public class StaggeredWorkspaceAnim { launcher.getStateManager().createAtomicAnimation(BACKGROUND_APP, NORMAL, config).start(); // Stop scrolling so that it doesn't interfere with the translation offscreen. - launcher.getOverviewPanel().getScroller().forceFinished(true); + launcher.getOverviewPanel().forceFinishScroller(); if (animateOverviewScrim) { launcher.getWorkspace().getStateTransitionAnimation() diff --git a/quickstep/src/com/android/quickstep/util/WorkspaceRevealAnim.java b/quickstep/src/com/android/quickstep/util/WorkspaceRevealAnim.java index df94d0bee6..7ae6cb7661 100644 --- a/quickstep/src/com/android/quickstep/util/WorkspaceRevealAnim.java +++ b/quickstep/src/com/android/quickstep/util/WorkspaceRevealAnim.java @@ -120,7 +120,7 @@ public class WorkspaceRevealAnim { launcher.getStateManager().createAtomicAnimation(BACKGROUND_APP, NORMAL, config).start(); // Stop scrolling so that it doesn't interfere with the translation offscreen. - launcher.getOverviewPanel().getScroller().forceFinished(true); + launcher.getOverviewPanel().forceFinishScroller(); if (animateOverviewScrim) { launcher.getWorkspace().getStateTransitionAnimation() diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java index 108091c1ee..a7198a80cd 100644 --- a/src/com/android/launcher3/PagedView.java +++ b/src/com/android/launcher3/PagedView.java @@ -254,7 +254,7 @@ public abstract class PagedView extends ViewGrou } mOrientationHandler.set(this, VIEW_SCROLL_TO, newPosition); mScroller.startScroll(mScroller.getCurrX(), 0, newPosition - mScroller.getCurrX(), 0); - forceFinishScroller(true); + forceFinishScroller(); } /** @@ -276,14 +276,16 @@ public abstract class PagedView extends ViewGrou } } - private void forceFinishScroller(boolean resetNextPage) { + /** + * Immediately finishes any in-progress scroll, maintaining the current position. Also sets + * mNextPage = INVALID_PAGE and calls pageEndTransition(). + */ + public void forceFinishScroller() { mScroller.forceFinished(true); // We need to clean up the next page here to avoid computeScrollHelper from // updating current page on the pass. - if (resetNextPage) { - mNextPage = INVALID_PAGE; - pageEndTransition(); - } + mNextPage = INVALID_PAGE; + pageEndTransition(); } private int validateNewPage(int newPage) {