Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit efa0f1cd authored by Louis Chang's avatar Louis Chang Committed by Automerger Merge Worker
Browse files

Merge "Making activity invisible when occluded by one of the adjacent TF" into...

Merge "Making activity invisible when occluded by one of the adjacent TF" into sc-v2-dev am: e6a32faf am: 3e9d86d9

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16128317

Change-Id: Ib8e29cdd6b36eff26b7fd1ff1e90a65576ec6fad
parents 6edd1084 3e9d86d9
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -774,6 +774,7 @@ class TaskFragment extends WindowContainer<WindowContainer> {
        boolean gotOpaqueSplitScreenPrimary = false;
        boolean gotOpaqueSplitScreenSecondary = false;
        boolean gotTranslucentFullscreen = false;
        boolean gotTranslucentAdjacent = false;
        boolean gotTranslucentSplitScreenPrimary = false;
        boolean gotTranslucentSplitScreenSecondary = false;
        boolean shouldBeVisible = true;
@@ -802,6 +803,18 @@ class TaskFragment extends WindowContainer<WindowContainer> {

            final boolean hasRunningActivities = hasRunningActivity(other);
            if (other == this) {
                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.
                    for (int j = adjacentTaskFragments.size() - 1; j >= 0; --j) {
                        final TaskFragment taskFragment = adjacentTaskFragments.get(j);
                        if (!taskFragment.isTranslucent(starting)
                                && taskFragment.getBounds().contains(this.getBounds())) {
                            return TASK_FRAGMENT_VISIBILITY_INVISIBLE;
                        }
                    }
                }
                // Should be visible if there is no other fragment occluding it, unless it doesn't
                // have any running activities, not starting one and not home stack.
                shouldBeVisible = hasRunningActivities
@@ -871,6 +884,7 @@ class TaskFragment extends WindowContainer<WindowContainer> {
                            || otherTaskFrag.mAdjacentTaskFragment.isTranslucent(starting)) {
                        // Can be visible behind a translucent adjacent TaskFragments.
                        gotTranslucentFullscreen = true;
                        gotTranslucentAdjacent = true;
                        continue;
                    }
                    // Can not be visible behind adjacent TaskFragments.