Keep the desks order inside overview by its deskId
Bug: 400723456
Test: m
Flag: com.android.window.flags.enable_multiple_desktops_frontend
Flag: com.android.window.flags.enable_multiple_desktops_backend
Change-Id: Ib86e1260620587293ababfaa94aacef5846a8479
diff --git a/quickstep/src/com/android/quickstep/views/RecentsViewUtils.kt b/quickstep/src/com/android/quickstep/views/RecentsViewUtils.kt
index 037bef6..29601ef 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsViewUtils.kt
+++ b/quickstep/src/com/android/quickstep/views/RecentsViewUtils.kt
@@ -25,7 +25,7 @@
import com.android.launcher3.statehandlers.DesktopVisibilityController
import com.android.launcher3.statehandlers.DesktopVisibilityController.Companion.INACTIVE_DESK_ID
import com.android.launcher3.util.IntArray
-import com.android.quickstep.util.DesksUtils
+import com.android.quickstep.util.DesksUtils.Companion.areMultiDesksFlagsEnabled
import com.android.quickstep.util.DesktopTask
import com.android.quickstep.util.GroupTask
import com.android.quickstep.util.isExternalDisplay
@@ -57,7 +57,7 @@
*/
fun sortDesktopTasksToFront(tasks: List<GroupTask>): List<GroupTask> {
var (desktopTasks, otherTasks) = tasks.partition { it.taskViewType == TaskViewType.DESKTOP }
- if (DesksUtils.areMultiDesksFlagsEnabled()) {
+ if (areMultiDesksFlagsEnabled()) {
// Desk IDs of newer desks are larger than those of older desks, hence we can use them
// to sort desks from old to new.
desktopTasks = desktopTasks.sortedBy { (it as DesktopTask).deskId }
@@ -165,6 +165,17 @@
private fun getDeviceProfile() = (recentsView.mContainer as RecentsViewContainer).deviceProfile
fun getRunningTaskExpectedIndex(runningTaskView: TaskView): Int {
+ if (areMultiDesksFlagsEnabled() && runningTaskView is DesktopTaskView) {
+ // Use the [deskId] to keep desks in the order of their creation, as a newer desk
+ // always has a larger [deskId] than the older desks.
+ val desktopTaskView =
+ taskViews.firstOrNull {
+ it is DesktopTaskView &&
+ it.deskId != INACTIVE_DESK_ID &&
+ it.deskId <= runningTaskView.deskId
+ }
+ if (desktopTaskView != null) return recentsView.indexOfChild(desktopTaskView)
+ }
val firstTaskViewIndex = recentsView.indexOfChild(getFirstTaskView())
return if (getDeviceProfile().isTablet) {
var index = firstTaskViewIndex