Add stub task when matching TaskView is grouped while runningTasks is not grouped

- Completely rewrote shouldAddStubTaskView to simplify the logic

Fix: 333844287
Test: With 2 split tasks, unsplit one, go to Overview, launch the other split, unsplit, go to Overview
Flag: None
Change-Id: I2f33f91956d485957cedf43ccd684f16d42803be
This commit is contained in:
Alex Chau
2024-04-20 11:19:05 +01:00
parent 3c8762f88a
commit 492965326e
@@ -2734,18 +2734,20 @@ public abstract class RecentsView<CONTAINER_TYPE extends Context & RecentsViewCo
* Returns true if we should add a stub taskView for the running task id
*/
protected boolean shouldAddStubTaskView(Task[] runningTasks) {
if (runningTasks.length > 1) {
TaskView primaryTaskView = getTaskViewByTaskId(runningTasks[0].key.id);
TaskView secondaryTaskView = getTaskViewByTaskId(runningTasks[1].key.id);
int leftTopTaskViewId =
(primaryTaskView == null) ? -1 : primaryTaskView.getTaskViewId();
int rightBottomTaskViewId =
(secondaryTaskView == null) ? -1 : secondaryTaskView.getTaskViewId();
// Add a new stub view if both taskIds don't match any taskViews
return leftTopTaskViewId != rightBottomTaskViewId || leftTopTaskViewId == -1;
TaskView taskView = getTaskViewByTaskId(runningTasks[0].key.id);
if (taskView == null) {
// No TaskView found, add a stub task.
return true;
}
if (runningTasks.length > 1) {
// Ensure all taskIds matches the TaskView, otherwise add a stub task.
return Arrays.stream(runningTasks).anyMatch(
runningTask -> !taskView.containsTaskId(runningTask.key.id));
} else {
// Ensure the TaskView only contains a single taskId, otherwise add a stub task.
return taskView.containsMultipleTasks();
}
Task runningTaskInfo = runningTasks[0];
return runningTaskInfo != null && getTaskViewByTaskId(runningTaskInfo.key.id) == null;
}
/**