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

Commit d15777c5 authored by Vinit Nayak's avatar Vinit Nayak
Browse files

Only add Dim layers to transaction if not in 50/50 split

Bug: 403809480
Test: Added logs, didn't show when in 50/50 split
Flag: EXEMPT bugfix
Change-Id: I42924d6077c1af862c1eaa845ee614efd21c8211
parent e50dd973
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -17,6 +17,10 @@
package com.android.wm.shell.common.split;

import static com.android.wm.shell.shared.split.SplitScreenConstants.NOT_IN_SPLIT;
import static com.android.wm.shell.shared.split.SplitScreenConstants.SNAP_TO_2_10_90;
import static com.android.wm.shell.shared.split.SplitScreenConstants.SNAP_TO_2_90_10;
import static com.android.wm.shell.shared.split.SplitScreenConstants.SNAP_TO_3_10_45_45;
import static com.android.wm.shell.shared.split.SplitScreenConstants.SNAP_TO_3_45_45_10;
import static com.android.wm.shell.shared.split.SplitScreenConstants.SplitScreenState;

import android.graphics.Rect;
@@ -62,4 +66,12 @@ public class SplitState {
    public List<RectF> getCurrentLayout() {
        return getLayout(mState);
    }

    /** @return {@code true} if at least one app is partially offscreen in the current layout. */
    public boolean currentStateSupportsOffscreenApps() {
        return mState == SNAP_TO_2_10_90
                || mState == SNAP_TO_2_90_10
                || mState == SNAP_TO_3_10_45_45
                || mState == SNAP_TO_3_45_45_10;
    }
}
+11 −8
Original line number Diff line number Diff line
@@ -3620,9 +3620,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,

        finishEnterSplitScreen(finishT);
        addDividerBarToTransition(info, true /* show */);
        if (Flags.enableFlexibleTwoAppSplit()) {
        addAllDimLayersToTransition(info, true /* show */);
        }
        return true;
    }

@@ -3873,10 +3871,8 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
        }

        addDividerBarToTransition(info, false /* show */);
        if (Flags.enableFlexibleTwoAppSplit()) {
        addAllDimLayersToTransition(info, false /* show */);
    }
    }

    /** Call this when the recents animation canceled during split-screen. */
    public void onRecentsInSplitAnimationCanceled() {
@@ -4001,8 +3997,15 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
        info.addChange(barChange);
    }

    /** Add dim layers to the transition, so that they can be hidden/shown when animation starts. */
    /**
     * Add dim layers to the transition, so that they can be hidden/shown when animation starts.
     * They're only added if there is at least one offscreen app.
     */
    private void addAllDimLayersToTransition(@NonNull TransitionInfo info, boolean show) {
        if (!mSplitState.currentStateSupportsOffscreenApps()) {
            return;
        }

        if (Flags.enableFlexibleSplit()) {
            List<StageTaskListener> stages = mStageOrderOperator.getActiveStages();
            for (int i = 0; i < stages.size(); i++) {
@@ -4010,7 +4013,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
                mSplitState.getCurrentLayout().get(i).roundOut(mTempRect1);
                addDimLayerToTransition(info, show, stage, mTempRect1);
            }
        } else {
        } else if (enableFlexibleTwoAppSplit()) {
            addDimLayerToTransition(info, show, mMainStage, getMainStageBounds());
            addDimLayerToTransition(info, show, mSideStage, getSideStageBounds());
        }