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

Commit ed998682 authored by Jean Chalard's avatar Jean Chalard
Browse files

Move some auto-correction logic to where it belongs

Change-Id: I897c5ec3a630a4a6bfc593906df4d3fc7b244482
parent 022ef7d1
Loading
Loading
Loading
Loading
+0 −13
Original line number Diff line number Diff line
@@ -1830,19 +1830,6 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
        // length == 1).
        if (builder.size() > 1 || typedWord.length() == 1 || !builder.allowsToBeAutoCorrected()
                || mSuggestionsView.isShowingAddToDictionaryHint()) {
            boolean autoCorrectionAvailable = builder.hasAutoCorrection();
            if (mCorrectionMode == Suggest.CORRECTION_FULL
                    || mCorrectionMode == Suggest.CORRECTION_FULL_BIGRAM) {
                autoCorrectionAvailable |= !builder.allowsToBeAutoCorrected();
            }
            // Don't auto-correct words with multiple capital letter
            autoCorrectionAvailable &= !mWordComposer.isMostlyCaps();
            builder.setTypedWordValid(!builder.allowsToBeAutoCorrected()).setHasMinimalSuggestion(
                    autoCorrectionAvailable);
            if (Suggest.shouldBlockAutoCorrectionBySafetyNet(builder, mSuggest,
                    mSettingsValues.mAutoCorrectionThreshold)) {
                builder.setShouldBlockAutoCorrectionBySafetyNet();
            }
            showSuggestions(builder.build(), typedWord);
        } else {
            SuggestedWords previousSuggestions = mSuggestionsView.getSuggestions();
+20 −4
Original line number Diff line number Diff line
@@ -411,6 +411,7 @@ public class Suggest implements Dictionary.WordCallback {
        mSuggestions.add(0, typedWord);
        StringUtils.removeDupes(mSuggestions);

        final SuggestedWords.Builder builder;
        if (DBG) {
            final CharSequence autoCorrectionSuggestion = mSuggestions.get(0);
            final int autoCorrectionSuggestionScore = mScores[0];
@@ -435,15 +436,30 @@ public class Suggest implements Dictionary.WordCallback {
            for (int i = mScores.length; i < mSuggestions.size(); ++i) {
                scoreInfoList.add(new SuggestedWords.SuggestedWordInfo("--", false));
            }
            return new SuggestedWords.Builder().addWords(mSuggestions, scoreInfoList)
            builder = new SuggestedWords.Builder().addWords(mSuggestions, scoreInfoList)
                    .setAllowsToBeAutoCorrected(allowsToBeAutoCorrected)
                    .setHasAutoCorrection(hasAutoCorrection);
        }
        return new SuggestedWords.Builder().addWords(mSuggestions, null)
        } else {
            builder = new SuggestedWords.Builder().addWords(mSuggestions, null)
                    .setAllowsToBeAutoCorrected(allowsToBeAutoCorrected)
                    .setHasAutoCorrection(hasAutoCorrection);
        }

        boolean autoCorrectionAvailable = hasAutoCorrection;
        if (correctionMode == Suggest.CORRECTION_FULL
                || correctionMode == Suggest.CORRECTION_FULL_BIGRAM) {
            autoCorrectionAvailable |= !allowsToBeAutoCorrected;
        }
        // Don't auto-correct words with multiple capital letter
        autoCorrectionAvailable &= !wordComposer.isMostlyCaps();
        builder.setTypedWordValid(!allowsToBeAutoCorrected).setHasMinimalSuggestion(
                autoCorrectionAvailable);
        if (Suggest.shouldBlockAutoCorrectionBySafetyNet(builder, this, mAutoCorrectionThreshold)) {
            builder.setShouldBlockAutoCorrectionBySafetyNet();
        }
        return builder;
    }

    @Override
    public boolean addWord(final char[] word, final int offset, final int length, int score,
            final int dicTypeId, final int dataType) {