diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 5ebfae518eade..aa0d23bf33852 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -3552,6 +3552,9 @@
-->
600
+
+ true
+
true
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 3fec918f7ac05..5019ccadd353a 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -396,6 +396,7 @@
+
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 f7160e55012c3..4be9e758bf9b8 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
@@ -55,6 +55,7 @@ import android.window.TransitionRequestInfo;
import android.window.WindowContainerTransaction;
+import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.protolog.common.ProtoLog;
import com.android.wm.shell.RootTaskDisplayAreaOrganizer;
@@ -110,6 +111,11 @@ class StageCoordinator implements SplitLayout.LayoutChangeListener,
private final SplitScreenTransitions mSplitTransitions;
private boolean mExitSplitScreenOnHide = true;
+ // TODO(b/187041611): remove this flag after totally deprecated legacy split
+ /** Whether the device is supporting legacy split or not. */
+ private boolean mUseLegacySplit;
+
+
@SplitScreen.StageType int mDismissTop = NO_DISMISS;
private final Runnable mOnTransitionAnimationComplete = () -> {
// If still playing, let it finish.
@@ -334,10 +340,17 @@ class StageCoordinator implements SplitLayout.LayoutChangeListener,
private void onStageRootTaskAppeared(StageListenerImpl stageListener) {
if (mMainStageListener.mHasRootTask && mSideStageListener.mHasRootTask) {
+ mUseLegacySplit = mContext.getResources().getBoolean(R.bool.config_useLegacySplit);
final WindowContainerTransaction wct = new WindowContainerTransaction();
// Make the stages adjacent to each other so they occlude what's behind them.
wct.setAdjacentRoots(mMainStage.mRootTaskInfo.token, mSideStage.mRootTaskInfo.token);
- wct.setLaunchAdjacentFlagRoot(mSideStage.mRootTaskInfo.token);
+
+ // Only sets side stage as launch-adjacent-flag-root when the device is not using legacy
+ // split to prevent new split behavior confusing users.
+ if (!mUseLegacySplit) {
+ wct.setLaunchAdjacentFlagRoot(mSideStage.mRootTaskInfo.token);
+ }
+
mTaskOrganizer.applyTransaction(wct);
}
}
@@ -347,7 +360,11 @@ class StageCoordinator implements SplitLayout.LayoutChangeListener,
final WindowContainerTransaction wct = new WindowContainerTransaction();
// Deactivate the main stage if it no longer has a root task.
mMainStage.deactivate(wct);
- wct.clearLaunchAdjacentFlagRoot(mSideStage.mRootTaskInfo.token);
+
+ if (!mUseLegacySplit) {
+ wct.clearLaunchAdjacentFlagRoot(mSideStage.mRootTaskInfo.token);
+ }
+
mTaskOrganizer.applyTransaction(wct);
}
}