diff options
| author | 2015-09-22 22:08:37 -0700 | |
|---|---|---|
| committer | 2015-09-23 12:32:00 -0700 | |
| commit | bd26d2a5a834454c44d2723e1ceff5874cae4cb4 (patch) | |
| tree | 38c47767d4e7288cc2478677ef8ff3d6d4758182 | |
| parent | 9477229fe85523cc52f410d95600c1f1b5af1290 (diff) | |
Allow stacks behind a translucent fullscreen stack to be visible
Stacks behind the fullscreen stack with a translucent activity
are always visible so they can act as a backdrop to the translucent
activity.
Bug: 23626353
Change-Id: I3d76ae6bedbba90736706474dcab53d75b60304a
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityStack.java | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index ee4dbd4ca451..a42fbfecfeb2 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -1335,17 +1335,28 @@ final class ActivityStack { return topHomeActivity == null || !topHomeActivity.isHomeActivity(); } - if (focusedStackId == DOCKED_STACK_ID - && stackIndex == (mStacks.indexOf(focusedStack) - 1)) { + final int belowFocusedIndex = mStacks.indexOf(focusedStack) - 1; + if (focusedStackId == DOCKED_STACK_ID && stackIndex == belowFocusedIndex) { // Stacks directly behind the docked stack are always visible. return true; } - if (mStackId == HOME_STACK_ID && focusedStackId == FULLSCREEN_WORKSPACE_STACK_ID) { - // Home stack is always visible behind the fullscreen stack with a translucent activity. - // This is done so that the home stack can act as a background to the translucent - // activity. - return hasTranslucentActivity(focusedStack); + if (focusedStackId == FULLSCREEN_WORKSPACE_STACK_ID + && hasTranslucentActivity(focusedStack)) { + // Stacks behind the fullscreen stack with a translucent activity are always + // visible so they can act as a backdrop to the translucent activity. + // For example, dialog activities + if (stackIndex == belowFocusedIndex) { + return true; + } + if (belowFocusedIndex >= 0) { + final ActivityStack stack = mStacks.get(belowFocusedIndex); + if (stack.mStackId == DOCKED_STACK_ID && stackIndex == (belowFocusedIndex - 1)) { + // The stack behind the docked stack is also visible so we can have a complete + // backdrop to the translucent activity when the docked stack is up. + return true; + } + } } if (mStackId >= FIRST_STATIC_STACK_ID && mStackId <= LAST_STATIC_STACK_ID) { |