Merge "Bring home task to front when desktop tasks are moved to front" into tm-qpr-dev am: 0be2efdb92 am: a5d5257dec
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21342997 Change-Id: I05d470de0036c23956dfa6f50b50fee81a93c91e Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -253,7 +253,8 @@ public class DesktopModeController implements RemoteCallable<DesktopModeControll
|
||||
*/
|
||||
void showDesktopApps() {
|
||||
// Bring apps to front, ignoring their visibility status to always ensure they are on top.
|
||||
WindowContainerTransaction wct = bringDesktopAppsToFront(true /* ignoreVisibility */);
|
||||
WindowContainerTransaction wct = new WindowContainerTransaction();
|
||||
bringDesktopAppsToFront(wct);
|
||||
|
||||
if (Transitions.ENABLE_SHELL_TRANSITIONS) {
|
||||
mTransitions.startTransition(TRANSIT_TO_FRONT, wct, null /* handler */);
|
||||
@@ -267,9 +268,7 @@ public class DesktopModeController implements RemoteCallable<DesktopModeControll
|
||||
return mDesktopModeTaskRepository.getVisibleTaskCount();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
private WindowContainerTransaction bringDesktopAppsToFront(boolean force) {
|
||||
final WindowContainerTransaction wct = new WindowContainerTransaction();
|
||||
private void bringDesktopAppsToFront(WindowContainerTransaction wct) {
|
||||
final ArraySet<Integer> activeTasks = mDesktopModeTaskRepository.getActiveTasks();
|
||||
ProtoLog.d(WM_SHELL_DESKTOP_MODE, "bringDesktopAppsToFront: tasks=%s", activeTasks.size());
|
||||
|
||||
@@ -282,18 +281,11 @@ public class DesktopModeController implements RemoteCallable<DesktopModeControll
|
||||
}
|
||||
|
||||
if (taskInfos.isEmpty()) {
|
||||
return wct;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!force) {
|
||||
final boolean allActiveTasksAreVisible = taskInfos.stream()
|
||||
.allMatch(info -> mDesktopModeTaskRepository.isVisibleTask(info.taskId));
|
||||
if (allActiveTasksAreVisible) {
|
||||
ProtoLog.d(WM_SHELL_DESKTOP_MODE,
|
||||
"bringDesktopAppsToFront: active tasks are already in front, skipping.");
|
||||
return wct;
|
||||
}
|
||||
}
|
||||
moveHomeTaskToFront(wct);
|
||||
|
||||
ProtoLog.d(WM_SHELL_DESKTOP_MODE,
|
||||
"bringDesktopAppsToFront: reordering all active tasks to the front");
|
||||
final List<Integer> allTasksInZOrder =
|
||||
@@ -304,7 +296,15 @@ public class DesktopModeController implements RemoteCallable<DesktopModeControll
|
||||
for (RunningTaskInfo task : taskInfos) {
|
||||
wct.reorder(task.token, true);
|
||||
}
|
||||
return wct;
|
||||
}
|
||||
|
||||
private void moveHomeTaskToFront(WindowContainerTransaction wct) {
|
||||
for (RunningTaskInfo task : mShellTaskOrganizer.getRunningTasks(mContext.getDisplayId())) {
|
||||
if (task.getActivityType() == ACTIVITY_TYPE_HOME) {
|
||||
wct.reorder(task.token, true /* onTop */);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -363,7 +363,7 @@ public class DesktopModeController implements RemoteCallable<DesktopModeControll
|
||||
if (wct == null) {
|
||||
wct = new WindowContainerTransaction();
|
||||
}
|
||||
wct.merge(bringDesktopAppsToFront(false /* ignoreVisibility */), true /* transfer */);
|
||||
bringDesktopAppsToFront(wct);
|
||||
wct.reorder(request.getTriggerTask().token, true /* onTop */);
|
||||
|
||||
return wct;
|
||||
|
||||
Reference in New Issue
Block a user