Merge "Fix IME flicker when switching recents tasks"
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user