Merge "Skip IME show when target is changing."
diff --git a/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java b/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java
index 11f09d0..a0b878c 100644
--- a/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java
+++ b/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java
@@ -92,12 +92,13 @@
// Refer to WindowManagerService#applyImeVisibility(token, false).
// If IMMS's imeTarget is child of DisplayContent's imeTarget and child window
// is above the parent, we will consider it as the same target for now.
+ // Also, if imeTarget is closing, it would be considered as outdated target.
// TODO(b/139861270): Remove the child & sublayer check once IMMS is aware of
// actual IME target.
- return mImeTargetFromIme == mDisplayContent.mInputMethodTarget
- || (mDisplayContent.mInputMethodTarget.getParentWindow() == mImeTargetFromIme
- && mDisplayContent.mInputMethodTarget.mSubLayer
- > mImeTargetFromIme.mSubLayer);
+ final WindowState dcTarget = mDisplayContent.mInputMethodTarget;
+ return (!dcTarget.isClosing() && mImeTargetFromIme == dcTarget)
+ || (dcTarget.getParentWindow() == mImeTargetFromIme
+ && dcTarget.mSubLayer > mImeTargetFromIme.mSubLayer);
}
}