diff options
author | 2025-03-24 08:49:34 -0700 | |
---|---|---|
committer | 2025-03-24 08:49:34 -0700 | |
commit | 03ec3e805e771ecda4b4775b533d03b0f00f194b (patch) | |
tree | f6d823d70ab512fb85c3681919d52b1c3c6d4876 | |
parent | d6ed80772d1e711d875a1dba336a9ac88d99788d (diff) | |
parent | d15777c584b654fb8bf0236bd3605a0f75291c0e (diff) |
Merge "Only add Dim layers to transaction if not in 50/50 split" into main
-rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitState.java | 12 | ||||
-rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java | 19 |
2 files changed, 23 insertions, 8 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitState.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitState.java index ad0e7fc187e9..394c445787b4 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitState.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitState.java @@ -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; + } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java index 10db5ca03637..d240aca522bb 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java @@ -3618,9 +3618,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, finishEnterSplitScreen(finishT); addDividerBarToTransition(info, true /* show */); - if (Flags.enableFlexibleTwoAppSplit()) { - addAllDimLayersToTransition(info, true /* show */); - } + addAllDimLayersToTransition(info, true /* show */); return true; } @@ -3871,9 +3869,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, } addDividerBarToTransition(info, false /* show */); - if (Flags.enableFlexibleTwoAppSplit()) { - addAllDimLayersToTransition(info, false /* show */); - } + addAllDimLayersToTransition(info, false /* show */); } /** Call this when the recents animation canceled during split-screen. */ @@ -3999,8 +3995,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++) { @@ -4008,7 +4011,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()); } |