diff options
| -rw-r--r-- | services/core/java/com/android/server/inputmethod/InputMethodManagerService.java | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java index 8e7baf26984a..1ec8b10813cd 100644 --- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java @@ -3275,15 +3275,18 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub } else { // If subtype is null, try to find the most applicable one from // getCurrentInputMethodSubtype. + subtypeId = NOT_A_SUBTYPE_ID; newSubtype = getCurrentInputMethodSubtypeLocked(); + if (newSubtype != null) { + for (int i = 0; i < subtypeCount; ++i) { + if (Objects.equals(newSubtype, info.getSubtypeAt(i))) { + subtypeId = i; + break; + } + } + } } - if (newSubtype == null || oldSubtype == null) { - Slog.w(TAG, "Illegal subtype state: old subtype = " + oldSubtype - + ", new subtype = " + newSubtype); - notifyInputMethodSubtypeChangedLocked(userId, info, null); - return; - } - if (!newSubtype.equals(oldSubtype)) { + if (!Objects.equals(newSubtype, oldSubtype)) { setSelectedInputMethodAndSubtypeLocked(info, subtypeId, true); IInputMethodInvoker curMethod = getCurMethodLocked(); if (curMethod != null) { |