diff --git a/services/core/java/com/android/server/inputmethod/ImeVisibilityStateComputer.java b/services/core/java/com/android/server/inputmethod/ImeVisibilityStateComputer.java index 795e4bf9d5cb9..db61e954893e3 100644 --- a/services/core/java/com/android/server/inputmethod/ImeVisibilityStateComputer.java +++ b/services/core/java/com/android/server/inputmethod/ImeVisibilityStateComputer.java @@ -380,7 +380,12 @@ public final class ImeVisibilityStateComputer { } break; case WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED: - // Do nothing. + // Do nothing but preserving the last IME requested visibility state. + final ImeTargetWindowState lastState = + getWindowStateOrNull(mService.mLastImeTargetWindow); + if (lastState != null) { + state.setRequestedImeVisible(lastState.mRequestedImeVisible); + } break; case WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN: if (isForwardNavigation) {