Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ae2388c7 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Fix checking if subtype belongs to this ime

Bug: 6422318
Change-Id: I5779c0e277444315191fa964a976dcb4316cc24a
parent dadcfcf0
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -63,7 +63,8 @@ public class ImfUtils {
        return getInputMethodInfoOfThisIme(context).getId();
    }

    public static boolean checkIfSubtypeBelongsToThisIme(Context context, InputMethodSubtype ims) {
    public static boolean checkIfSubtypeBelongsToThisImeAndEnabled(Context context,
            InputMethodSubtype ims) {
        final InputMethodInfo myImi = getInputMethodInfoOfThisIme(context);
        final InputMethodManager imm = getInputMethodManager(context);
        // TODO: Cache all subtypes of this IME for optimization
@@ -76,6 +77,19 @@ public class ImfUtils {
        return false;
    }

    public static boolean checkIfSubtypeBelongsToThisIme(Context context,
            InputMethodSubtype ims) {
        final InputMethodInfo myImi = getInputMethodInfoOfThisIme(context);
        final int count = myImi.getSubtypeCount();
        for (int i = 0; i < count; i++) {
            final InputMethodSubtype subtype = myImi.getSubtypeAt(i);
            if (subtype.equals(ims)) {
                return true;
            }
        }
        return false;
    }

    public static boolean hasMultipleEnabledIMEsOrSubtypes(Context context,
            final boolean shouldIncludeAuxiliarySubtypes) {
        final InputMethodManager imm = getInputMethodManager(context);
+2 −2
Original line number Diff line number Diff line
@@ -1148,8 +1148,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
        final IBinder token = getWindow().getWindow().getAttributes().token;
        if (mShouldSwitchToLastSubtype) {
            final InputMethodSubtype lastSubtype = mImm.getLastInputMethodSubtype();
            final boolean lastSubtypeBelongsToThisIme = ImfUtils.checkIfSubtypeBelongsToThisIme(
                    this, lastSubtype);
            final boolean lastSubtypeBelongsToThisIme =
                    ImfUtils.checkIfSubtypeBelongsToThisImeAndEnabled(this, lastSubtype);
            if ((includesOtherImes || lastSubtypeBelongsToThisIme)
                    && mImm.switchToLastInputMethod(token)) {
                mShouldSwitchToLastSubtype = false;