diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java b/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java index 11f09d0f1343..a0b878ca44dc 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 @@ class ImeInsetsSourceProvider extends InsetsSourceProvider { // 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); } } |