DO NOT MERGE Uses equals to compare the old/new subtypes.
In case of additional subtypes, which are provided by IME app at
runtime, the subtype instances may be re-created but remains the
identical hash codes.
So when an IME provided subtypes {A,B} with current subtype A and
then provides {A,B,C} later, the IME don't expect to be notified
by InputMethodService#onCurrentInputMethodSubtypeChanged.
Bug: 269546663
Test: locally verify the bug.
Change-Id: Ib23e5883af4b99845e80b370c245999fa10d7f57
(cherry picked from commit e4244a4f21)
This commit is contained in:
@@ -3245,7 +3245,7 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
|
|||||||
notifyInputMethodSubtypeChangedLocked(userId, info, null);
|
notifyInputMethodSubtypeChangedLocked(userId, info, null);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (newSubtype != oldSubtype) {
|
if (!newSubtype.equals(oldSubtype)) {
|
||||||
setSelectedInputMethodAndSubtypeLocked(info, subtypeId, true);
|
setSelectedInputMethodAndSubtypeLocked(info, subtypeId, true);
|
||||||
IInputMethodInvoker curMethod = getCurMethodLocked();
|
IInputMethodInvoker curMethod = getCurMethodLocked();
|
||||||
if (curMethod != null) {
|
if (curMethod != null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user