diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/TaskFragment.java | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/wm/TaskFragment.java b/services/core/java/com/android/server/wm/TaskFragment.java index 24b66ca3ac9c..ae7e96fab1fe 100644 --- a/services/core/java/com/android/server/wm/TaskFragment.java +++ b/services/core/java/com/android/server/wm/TaskFragment.java @@ -822,11 +822,17 @@ class TaskFragment extends WindowContainer<WindowContainer> { if (!adjacentTaskFragments.isEmpty() && !gotTranslucentAdjacent) { // The z-order of this TaskFragment is in middle of two adjacent TaskFragments // and it cannot be visible if the TaskFragment on top is not translucent and - // is fully occluding this one. + // is occluding this one. + mTmpRect.set(getBounds()); for (int j = adjacentTaskFragments.size() - 1; j >= 0; --j) { final TaskFragment taskFragment = adjacentTaskFragments.get(j); - if (!taskFragment.isTranslucent(starting) - && taskFragment.getBounds().contains(this.getBounds())) { + final TaskFragment adjacentTaskFragment = + taskFragment.mAdjacentTaskFragment; + if (adjacentTaskFragment == this) { + continue; + } + if (mTmpRect.intersect(taskFragment.getBounds()) + || mTmpRect.intersect(adjacentTaskFragment.getBounds())) { return TASK_FRAGMENT_VISIBILITY_INVISIBLE; } } |