summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Wale Ogunwale <ogunwale@google.com> 2015-09-22 22:08:37 -0700
committer Wale Ogunwale <ogunwale@google.com> 2015-09-23 12:32:00 -0700
commitbd26d2a5a834454c44d2723e1ceff5874cae4cb4 (patch)
tree38c47767d4e7288cc2478677ef8ff3d6d4758182
parent9477229fe85523cc52f410d95600c1f1b5af1290 (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.java25
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) {