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

Commit f590a497 authored by Amith Yamasani's avatar Amith Yamasani
Browse files

Fix for 2295810: Auto-correction of English results in Englishman

Comparisons were always happening with lowercase version of the typed
word, which wouldn't match the uppercase word in the dictionary, so it
became an unrecognized word when typed in full. Highlight was then going
to the next word in the list.

Fix compares the lowercase and uppercase versions of the word for
validity.
parent 6aa7f592
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -36,7 +36,6 @@ public class BinaryDictionary extends Dictionary {

    private int mNativeDict;
    private int[] mInputCodes = new int[MAX_WORD_LENGTH * MAX_ALTERNATIVES];
    private WordCallback mWordCallback;
    private char[] mOutputChars = new char[MAX_WORD_LENGTH * MAX_WORDS];
    private int[] mFrequencies = new int[MAX_WORDS];

@@ -75,7 +74,6 @@ public class BinaryDictionary extends Dictionary {

    @Override
    public void getWords(final WordComposer codes, final WordCallback callback) {
        mWordCallback = callback;
        final int codesSize = codes.size();
        // Wont deal with really long words.
        if (codesSize > MAX_WORD_LENGTH - 1) return;
@@ -123,7 +121,7 @@ public class BinaryDictionary extends Dictionary {
    @Override
    public boolean isValidWord(CharSequence word) {
        if (word == null) return false;
        char[] chars = word.toString().toLowerCase().toCharArray();
        char[] chars = word.toString().toCharArray();
        return isValidWordNative(mNativeDict, chars, chars.length);
    }

+2 −1
Original line number Diff line number Diff line
@@ -809,7 +809,8 @@ public class LatinIME extends InputMethodService
        //|| mCorrectionMode == mSuggest.CORRECTION_FULL;
        CharSequence typedWord = mWord.getTypedWord();
        // If we're in basic correct
        boolean typedWordValid = mSuggest.isValidWord(typedWord);
        boolean typedWordValid = mSuggest.isValidWord(typedWord) ||
                (preferCapitalization() && mSuggest.isValidWord(typedWord.toString().toLowerCase()));
        if (mCorrectionMode == Suggest.CORRECTION_FULL) {
            correctionAvailable |= typedWordValid;
        }