diff options
| author | 2017-05-04 23:40:58 +0000 | |
|---|---|---|
| committer | 2017-05-04 23:40:58 +0000 | |
| commit | cda41c6bcdb1d0f3da04158e60110b271f42e50c (patch) | |
| tree | 75cb1d10b9a12e7397d4948e07329aae0563ee3d | |
| parent | 06b8324d02a593a56a34d34ef93d576c6f0d1402 (diff) | |
| parent | b2edabadeee704566917447249888597216c9306 (diff) | |
Merge "Stack is visible if behind docked which is behind pinned stack (1/2)" into oc-dev
am: b2edabadee
Change-Id: I91abd7cfa4889adf289966024aad4d0d2460dbf0
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityStack.java | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 912b22c84946..d348224df377 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -1659,21 +1659,13 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai } if (mStackId == DOCKED_STACK_ID) { - final ActivityRecord r = topStack.topRunningActivityLocked(); - // If the assistant stack is focused and translucent, then the docked stack is always // visible if (topStack.isAssistantStack()) { return (topStack.isStackTranslucent(starting, DOCKED_STACK_ID)) ? STACK_VISIBLE : STACK_INVISIBLE; } - - // Otherwise, the docked stack is always visible, except in the case where the top - // running activity task in the focus stack doesn't support any form of resizing but we - // show it for the home task even though it's not resizable. - final TaskRecord task = r != null ? r.getTask() : null; - return task == null || task.supportsSplitScreen() || task.isHomeTask() ? STACK_VISIBLE - : STACK_INVISIBLE; + return STACK_VISIBLE; } // Set home stack to invisible when it is below but not immediately below the docked stack @@ -1692,15 +1684,18 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai mStacks.get(stackBehindTopIndex).topRunningActivityLocked() == null) { stackBehindTopIndex--; } + final int stackBehindTopId = (stackBehindTopIndex >= 0) + ? mStacks.get(stackBehindTopIndex).mStackId : INVALID_STACK_ID; if ((topStackId == DOCKED_STACK_ID || topStackId == PINNED_STACK_ID) - && stackIndex == stackBehindTopIndex) { + && (stackIndex == stackBehindTopIndex + || (stackBehindTopId == DOCKED_STACK_ID + && stackIndex == stackBehindTopIndex - 1))) { // Stacks directly behind the docked or pinned stack are always visible. + // Also this stack is visible if behind docked stack and the docked stack is behind the + // top-most pinned stack return STACK_VISIBLE; } - final int stackBehindTopId = (stackBehindTopIndex >= 0) - ? mStacks.get(stackBehindTopIndex).mStackId : INVALID_STACK_ID; - if (StackId.isBackdropToTranslucentActivity(topStackId) && topStack.isStackTranslucent(starting, stackBehindTopId)) { // Stacks behind the fullscreen or assistant stack with a translucent activity are |