diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index f53583a801..d17dfb831f 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -3908,6 +3908,22 @@ public abstract class RecentsView< // the only invariant point in landscape split screen. snapToLastTask = true; } + if (mUtils.getGridTaskCount() == 1 && dismissedTaskView.isGridTask()) { + TaskView lastLargeTile = mUtils.getLastLargeTaskView(); + if (lastLargeTile != null) { + // Calculate the distance to put last large tile back to middle of the screen. + int primaryScroll = getPagedOrientationHandler().getPrimaryScroll(this); + int lastLargeTileScroll = getScrollForPage(indexOfChild(lastLargeTile)); + longGridRowWidthDiff = primaryScroll - lastLargeTileScroll; + + if (!isClearAllHidden) { + // If ClearAllButton is visible, reduce the distance by scroll difference + // between ClearAllButton and the last task. + longGridRowWidthDiff += getLastTaskScroll(/*clearAllScroll=*/0, + getPagedOrientationHandler().getPrimarySize(mClearAllButton)); + } + } + } // If we need to animate the grid to compensate the clear all gap, we split the second // half of the dismiss pending animation (in which the non-dismissed tasks slide into diff --git a/quickstep/src/com/android/quickstep/views/RecentsViewUtils.kt b/quickstep/src/com/android/quickstep/views/RecentsViewUtils.kt index 8df743053c..67318acc74 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsViewUtils.kt +++ b/quickstep/src/com/android/quickstep/views/RecentsViewUtils.kt @@ -85,6 +85,9 @@ class RecentsViewUtils(private val recentsView: RecentsView<*, *>) { /** Counts [TaskView]s that are large tiles. */ fun getLargeTileCount(): Int = taskViews.count { it.isLargeTile } + /** Counts [TaskView]s that are grid tasks. */ + fun getGridTaskCount(): Int = taskViews.count { it.isGridTask } + /** Returns the first TaskView that should be displayed as a large tile. */ fun getFirstLargeTaskView(): TaskView? = taskViews.firstOrNull {