diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index 75d462131aae7..34c083aa8ac15 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -2809,11 +2809,6 @@ class ActivityStarter { } } - if (mPreferredWindowingMode != WINDOWING_MODE_UNDEFINED - && intentTask.getWindowingMode() != mPreferredWindowingMode) { - intentTask.setWindowingMode(mPreferredWindowingMode); - } - // Update the target's launch cookie to those specified in the options if set if (mStartActivity.mLaunchCookie != null) { intentActivity.mLaunchCookie = mStartActivity.mLaunchCookie; diff --git a/services/core/java/com/android/server/wm/TaskDisplayArea.java b/services/core/java/com/android/server/wm/TaskDisplayArea.java index 7a7bf1f877b93..ad1f12119c4b3 100644 --- a/services/core/java/com/android/server/wm/TaskDisplayArea.java +++ b/services/core/java/com/android/server/wm/TaskDisplayArea.java @@ -977,6 +977,11 @@ final class TaskDisplayArea extends DisplayArea { candidateTask.reparent(this, onTop); } } + // Update windowing mode if necessary, e.g. launch into a different windowing mode. + if (windowingMode != WINDOWING_MODE_UNDEFINED && candidateTask.isRootTask() + && candidateTask.getWindowingMode() != windowingMode) { + candidateTask.setWindowingMode(windowingMode); + } return candidateTask.getRootTask(); } return new Task.Builder(mAtmService)