summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
Diffstat (limited to 'libs')
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitState.java12
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java19
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());
}