Merge "Stack is visible if behind docked which is behind pinned stack (1/2)" into oc-dev

am: b2edabadee

Change-Id: I91abd7cfa4889adf289966024aad4d0d2460dbf0
This commit is contained in:
Matthew Ng
2017-05-04 23:40:58 +00:00
committed by android-build-merger

View File

@@ -1659,21 +1659,13 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
} }
if (mStackId == DOCKED_STACK_ID) { if (mStackId == DOCKED_STACK_ID) {
final ActivityRecord r = topStack.topRunningActivityLocked();
// If the assistant stack is focused and translucent, then the docked stack is always // If the assistant stack is focused and translucent, then the docked stack is always
// visible // visible
if (topStack.isAssistantStack()) { if (topStack.isAssistantStack()) {
return (topStack.isStackTranslucent(starting, DOCKED_STACK_ID)) ? STACK_VISIBLE return (topStack.isStackTranslucent(starting, DOCKED_STACK_ID)) ? STACK_VISIBLE
: STACK_INVISIBLE; : STACK_INVISIBLE;
} }
return STACK_VISIBLE;
// 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;
} }
// Set home stack to invisible when it is below but not immediately below the docked stack // Set home stack to invisible when it is below but not immediately below the docked stack
@@ -1692,14 +1684,17 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
mStacks.get(stackBehindTopIndex).topRunningActivityLocked() == null) { mStacks.get(stackBehindTopIndex).topRunningActivityLocked() == null) {
stackBehindTopIndex--; stackBehindTopIndex--;
} }
if ((topStackId == DOCKED_STACK_ID || topStackId == PINNED_STACK_ID)
&& stackIndex == stackBehindTopIndex) {
// Stacks directly behind the docked or pinned stack are always visible.
return STACK_VISIBLE;
}
final int stackBehindTopId = (stackBehindTopIndex >= 0) final int stackBehindTopId = (stackBehindTopIndex >= 0)
? mStacks.get(stackBehindTopIndex).mStackId : INVALID_STACK_ID; ? mStacks.get(stackBehindTopIndex).mStackId : INVALID_STACK_ID;
if ((topStackId == DOCKED_STACK_ID || topStackId == PINNED_STACK_ID)
&& (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;
}
if (StackId.isBackdropToTranslucentActivity(topStackId) if (StackId.isBackdropToTranslucentActivity(topStackId)
&& topStack.isStackTranslucent(starting, stackBehindTopId)) { && topStack.isStackTranslucent(starting, stackBehindTopId)) {