diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 7d9fe21a24d42..241e7e27ffa55 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -4930,6 +4930,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp if (imeTarget != null && !(imeTarget.mActivityRecord != null && imeTarget.mActivityRecord.hasStartingWindow())) { final boolean canImeTargetSetRelativeLayer = imeTarget.getSurfaceControl() != null + && imeTarget == mImeControlTarget && !imeTarget.inMultiWindowMode() && imeTarget.mToken.getActivity(app -> app.isAnimating(TRANSITION | PARENTS, ANIMATION_TYPE_ALL & ~ANIMATION_TYPE_RECENTS)) == null; diff --git a/services/tests/wmtests/src/com/android/server/wm/ZOrderingTests.java b/services/tests/wmtests/src/com/android/server/wm/ZOrderingTests.java index dfbdedee37c46..722aee7a8f6e8 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ZOrderingTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ZOrderingTests.java @@ -297,6 +297,7 @@ public class ZOrderingTests extends WindowTestsBase { final WindowState appAboveImeTarget = createWindow("appAboveImeTarget"); mDisplayContent.setImeLayeringTarget(imeAppTarget); + mDisplayContent.setImeControlTarget(imeAppTarget); mDisplayContent.assignChildLayers(mTransaction); // Ime should be above all app windows except for non-fullscreen app window above it and @@ -343,6 +344,7 @@ public class ZOrderingTests extends WindowTestsBase { @Test public void testAssignWindowLayers_ForStatusBarImeTarget() { mDisplayContent.setImeLayeringTarget(mStatusBarWindow); + mDisplayContent.setImeControlTarget(mStatusBarWindow); mDisplayContent.assignChildLayers(mTransaction); assertWindowHigher(mImeWindow, mChildAppWindowAbove); @@ -408,6 +410,7 @@ public class ZOrderingTests extends WindowTestsBase { mAppWindow.mActivityRecord, "imeAppTarget"); mDisplayContent.setImeInputTarget(imeAppTarget); mDisplayContent.setImeLayeringTarget(imeAppTarget); + mDisplayContent.setImeControlTarget(imeAppTarget); mDisplayContent.updateImeParent(); // Simulate the ime layering target task is animating with recents animation.