summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Felix Stern <fstern@google.com> 2024-12-27 11:16:30 +0000
committer Felix Stern <fstern@google.com> 2024-12-27 11:16:30 +0000
commitb58f340aa1c0c7ef144e65d6738775d0ab5dab2c (patch)
treea9644e3c65707fa3b3f124c9757385188d69a590
parentee1835d15369ae1050ae1c0c7fef192bc1cdad8d (diff)
Refactor onImeFocusLost part from setCurrentRootViewLocked for better readability
Bug: 378098975 Test: None, only refactor Flag: EXEMPT refactor Change-Id: I2641b5f5ac7bd37da8548bba45735a918d17bd9f
-rw-r--r--core/java/android/view/inputmethod/InputMethodManager.java38
1 files changed, 21 insertions, 17 deletions
diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java
index d5f471edfdd2..c64448a7c17e 100644
--- a/core/java/android/view/inputmethod/InputMethodManager.java
+++ b/core/java/android/view/inputmethod/InputMethodManager.java
@@ -992,23 +992,7 @@ public final class InputMethodManager {
private void setCurrentRootViewLocked(ViewRootImpl rootView) {
final boolean wasEmpty = mCurRootView == null;
if (Flags.refactorInsetsController() && !wasEmpty && mCurRootView != rootView) {
- final int softInputMode = mCurRootView.mWindowAttributes.softInputMode;
- final int state =
- softInputMode & WindowManager.LayoutParams.SOFT_INPUT_MASK_STATE;
- if (state == WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN) {
- // when losing input focus (e.g., by going to another window), we reset the
- // requestedVisibleTypes of WindowInsetsController by hiding the IME
- final var statsToken = ImeTracker.forLogging().onStart(
- ImeTracker.TYPE_HIDE, ImeTracker.ORIGIN_CLIENT,
- SoftInputShowHideReason.HIDE_WINDOW_LOST_FOCUS,
- false /* fromUser */);
- if (DEBUG) {
- Log.d(TAG, "setCurrentRootViewLocked, hiding IME because "
- + "of STATE_ALWAYS_HIDDEN");
- }
- mCurRootView.getInsetsController().hide(WindowInsets.Type.ime(),
- false /* fromIme */, statsToken);
- }
+ onImeFocusLost(mCurRootView);
}
mImeDispatcher.switchRootView(mCurRootView, rootView);
@@ -1019,6 +1003,26 @@ public final class InputMethodManager {
}
}
+ private void onImeFocusLost(@NonNull ViewRootImpl previousRootView) {
+ final int softInputMode = previousRootView.mWindowAttributes.softInputMode;
+ final int state =
+ softInputMode & WindowManager.LayoutParams.SOFT_INPUT_MASK_STATE;
+ if (state == WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN) {
+ // when losing input focus (e.g., by going to another window), we reset the
+ // requestedVisibleTypes of WindowInsetsController by hiding the IME
+ final var statsToken = ImeTracker.forLogging().onStart(
+ ImeTracker.TYPE_HIDE, ImeTracker.ORIGIN_CLIENT,
+ SoftInputShowHideReason.HIDE_WINDOW_LOST_FOCUS,
+ false /* fromUser */);
+ if (DEBUG) {
+ Log.d(TAG, "onImeFocusLost, hiding IME because "
+ + "of STATE_ALWAYS_HIDDEN");
+ }
+ previousRootView.getInsetsController().hide(WindowInsets.Type.ime(),
+ false /* fromIme */, statsToken);
+ }
+ }
+
/** @hide */
public DelegateImpl getDelegate() {
return mDelegate;