From 39da1f78da02ac09d8e95a6213c156230f821127 Mon Sep 17 00:00:00 2001 From: Alex Chau Date: Thu, 14 Oct 2021 17:10:58 +0100 Subject: [PATCH] Fix TaskView jumping caused by split select - Never apply split select translation to grid overview, instead use dismiss translation to make space to split placeholder to minimize motion and avoid janky double movement - Ensures snapping to last task for end of grid split cases - Adjust mCurrentPageScrollDiff due to coordinate shift - Use longGridRowWidthDiff to shift all task to make space for split placeholder - Also fixed a bug that split translation isn't reset if entering overview immediately after exit Bug: 200537815 Test: manual Change-Id: Ie1b57c34ce4bb079f898ba5b7c3464a714021847 --- .../states/SplitScreenSelectState.java | 2 +- .../fallback/FallbackRecentsView.java | 8 +- .../quickstep/views/LauncherRecentsView.java | 8 +- .../android/quickstep/views/RecentsView.java | 251 ++++++++++-------- 4 files changed, 149 insertions(+), 120 deletions(-) diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/SplitScreenSelectState.java b/quickstep/src/com/android/launcher3/uioverrides/states/SplitScreenSelectState.java index d0d7f3165f..106375a765 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/SplitScreenSelectState.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/SplitScreenSelectState.java @@ -44,7 +44,7 @@ public class SplitScreenSelectState extends OverviewState { public float getSplitSelectTranslation(Launcher launcher) { RecentsView recentsView = launcher.getOverviewPanel(); int splitPosition = recentsView.getSplitPlaceholder().getActiveSplitStagePosition(); - if (!recentsView.shouldShiftThumbnailsForSplitSelect(splitPosition)) { + if (!recentsView.shouldShiftThumbnailsForSplitSelect()) { return 0f; } PagedOrientationHandler orientationHandler = recentsView.getPagedOrientationHandler(); diff --git a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java index 765480c64b..7e8b83e0c9 100644 --- a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java +++ b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java @@ -202,6 +202,10 @@ public class FallbackRecentsView extends RecentsView() { @Override public void accept(Boolean success) { @@ -3004,14 +3040,11 @@ public abstract class RecentsView 2) { + if (finalSnapToLastTask) { + // Last task will be determined after removing dismissed task. + pageToSnapTo = -1; + } else if (taskCount > 2) { pageToSnapTo = indexOfChild(mClearAllButton); - if (isClearAllHidden) { - int clearAllWidth = mOrientationHandler.getPrimarySize( - mClearAllButton); - mCurrentPageScrollDiff = - isRtl() ? clearAllWidth : -clearAllWidth; - } } else if (isClearAllHidden) { // Snap to focused task if clear all is hidden. pageToSnapTo = 0; @@ -3021,13 +3054,19 @@ public abstract class RecentsView