From a48efb33f2000021cf0029535ef80a321ee34eea Mon Sep 17 00:00:00 2001 From: Jordan Silva Date: Tue, 22 Oct 2024 13:17:34 +0100 Subject: [PATCH] Fix swipe up from Desktop Tasks is updated does not show focused task Fixes the condition that defines which task should be the focused task when grid-only is enabled and desktop windowing is the running task. In some cases, when the user adds or removes a task from Desktop Window, the DesktopTaskView does not get updated with the new list of tasks. This causes a mismatch of tasks that are inside the DesktopTaskView and the actual Desktop Windowing. So, RecentsView can't match the previous DesktopTaskView with the current running tasks, entering a specific condition to update the runningTaskViewId. The method called in this condition (showCurrentTask) also updates the focusedTaskViewId for some situations. This CL fixes the conditions which focusedTaskViewId is set to prevent it to replace the focused task id when it's not needed. Fix: 370736395 Flag: com.android.launcher3.enable_large_desktop_windowing_tile Test: Manual Change-Id: I25f5bd67ee0486f6754673eec404832779fc0498 --- .../android/quickstep/views/RecentsView.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index 5458ba1d3d..7b67780a3c 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -1935,6 +1935,9 @@ public abstract class RecentsView< // Keep same previous focused task TaskView newFocusedTaskView = getTaskViewByTaskIds(focusedTaskIds); + if (enableLargeDesktopWindowingTile() && newFocusedTaskView instanceof DesktopTaskView) { + newFocusedTaskView = null; + } // If the list changed, maybe the focused task doesn't exist anymore int newFocusedTaskViewIndex = mUtils.getFocusedTaskIndex(taskGroups); if (newFocusedTaskView == null && getTaskViewCount() > newFocusedTaskViewIndex) { @@ -2975,10 +2978,19 @@ public abstract class RecentsView< boolean runningTaskTileHidden = mRunningTaskTileHidden; setCurrentTask(runningTaskViewId); - boolean shouldFocusRunningTask = !(enableGridOnlyOverview() - || (enableLargeDesktopWindowingTile() - && getRunningTaskView() instanceof DesktopTaskView)); - setFocusedTaskViewId(shouldFocusRunningTask ? runningTaskViewId : INVALID_TASK_ID); + int focusedTaskViewId; + if (enableGridOnlyOverview()) { + focusedTaskViewId = INVALID_TASK_ID; + } else if (enableLargeDesktopWindowingTile() + && getRunningTaskView() instanceof DesktopTaskView) { + TaskView focusedTaskView = getTaskViewAt(getDesktopTaskViewCount()); + focusedTaskViewId = + focusedTaskView != null ? focusedTaskView.getTaskViewId() : INVALID_TASK_ID; + } else { + focusedTaskViewId = runningTaskViewId; + } + setFocusedTaskViewId(focusedTaskViewId); + runOnPageScrollsInitialized(() -> setCurrentPage(getRunningTaskIndex())); setRunningTaskViewShowScreenshot(false); setRunningTaskHidden(runningTaskTileHidden);