diff options
| author | 2016-06-10 17:48:52 -0700 | |
|---|---|---|
| committer | 2016-06-10 19:05:08 -0700 | |
| commit | 21893824c1d15a1a46cb75725ad951620569c3c6 (patch) | |
| tree | 1f0a3819db57d9433747f9139cbc0d2c1845d5c9 | |
| parent | d25c718a12725c9721dfc79deb0c27f15aa65d58 (diff) | |
Don't update task to return to type for last task over home
Resizing docked stack to fullscreen size results in dismissal
of docked stack and moving of tasks to fullscreen stack.
When tasks, which were originally launched from home or recents,
are inserted on top of fullscreen stack, their mTaskToReturnTo
value was overwritten.
This CL doesn't allow to overwrite this field of task if there
is no next task in stack and it was launched from home or recents.
Bug: 29237751
Change-Id: If56cd3f68b6b400c2d5c945431371acfe6269682
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityStack.java | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index d83a750ccbb3..df85cfa939e3 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -2581,11 +2581,14 @@ final class ActivityStack { } private void insertTaskAtTop(TaskRecord task, ActivityRecord newActivity) { + boolean isLastTaskOverHome = false; // If the moving task is over home stack, transfer its return type to next task if (task.isOverHomeStack()) { final TaskRecord nextTask = getNextTask(task); if (nextTask != null) { nextTask.setTaskToReturnTo(task.getTaskToReturnTo()); + } else { + isLastTaskOverHome = true; } } @@ -2595,7 +2598,10 @@ final class ActivityStack { ActivityStack lastStack = mStackSupervisor.getLastStack(); final boolean fromHome = lastStack.isHomeStack(); if (!isHomeStack() && (fromHome || topTask() != task)) { - int returnToType = APPLICATION_ACTIVITY_TYPE; + // If it's a last task over home - we default to keep its return to type not to + // make underlying task focused when this one will be finished. + int returnToType = isLastTaskOverHome + ? task.getTaskToReturnTo() : APPLICATION_ACTIVITY_TYPE; if (fromHome && StackId.allowTopTaskToReturnHome(mStackId)) { returnToType = lastStack.topTask() == null ? HOME_ACTIVITY_TYPE : lastStack.topTask().taskType; |