diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index e4961d6d9..94aff3f3d 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -1831,7 +1831,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar // length == 1). if (builder.size() > 1 || typedWord.length() == 1 || !builder.allowsToBeAutoCorrected() || mSuggestionsView.isShowingAddToDictionaryHint()) { - boolean autoCorrectionAvailable = mSuggest.hasAutoCorrection(); + boolean autoCorrectionAvailable = builder.hasAutoCorrection(); if (mCorrectionMode == Suggest.CORRECTION_FULL || mCorrectionMode == Suggest.CORRECTION_FULL_BIGRAM) { autoCorrectionAvailable |= !builder.allowsToBeAutoCorrected(); diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java index 4773ac55a..c5b311b68 100644 --- a/java/src/com/android/inputmethod/latin/Suggest.java +++ b/java/src/com/android/inputmethod/latin/Suggest.java @@ -83,8 +83,6 @@ public class Suggest implements Dictionary.WordCallback { private static final boolean DBG = LatinImeLogger.sDBG; - private boolean mHasAutoCorrection; - private Dictionary mMainDict; private ContactsDictionary mContactsDict; private WhitelistDictionary mWhiteListDictionary; @@ -351,15 +349,16 @@ public class Suggest implements Dictionary.WordCallback { CharSequence whitelistedWord = capitalizeWord(mIsAllUpperCase, mIsFirstCharCapitalized, mWhiteListDictionary.getWhitelistedWord(consideredWordString)); + final boolean hasAutoCorrection; if (CORRECTION_FULL == correctionMode || CORRECTION_FULL_BIGRAM == correctionMode) { final CharSequence autoCorrection = AutoCorrection.computeAutoCorrectionWord(mUnigramDictionaries, wordComposer, mSuggestions, mScores, consideredWord, mAutoCorrectionThreshold, whitelistedWord); - mHasAutoCorrection = (null != autoCorrection); + hasAutoCorrection = (null != autoCorrection); } else { - mHasAutoCorrection = false; + hasAutoCorrection = false; } if (whitelistedWord != null) { @@ -402,14 +401,12 @@ public class Suggest implements Dictionary.WordCallback { scoreInfoList.add(new SuggestedWords.SuggestedWordInfo("--", false)); } return new SuggestedWords.Builder().addWords(mSuggestions, scoreInfoList) - .setAllowsToBeAutoCorrected(allowsToBeAutoCorrected); + .setAllowsToBeAutoCorrected(allowsToBeAutoCorrected) + .setHasAutoCorrection(hasAutoCorrection); } return new SuggestedWords.Builder().addWords(mSuggestions, null) - .setAllowsToBeAutoCorrected(allowsToBeAutoCorrected); - } - - public boolean hasAutoCorrection() { - return mHasAutoCorrection; + .setAllowsToBeAutoCorrected(allowsToBeAutoCorrected) + .setHasAutoCorrection(hasAutoCorrection); } @Override diff --git a/java/src/com/android/inputmethod/latin/SuggestedWords.java b/java/src/com/android/inputmethod/latin/SuggestedWords.java index c92c72004..9549c79a4 100644 --- a/java/src/com/android/inputmethod/latin/SuggestedWords.java +++ b/java/src/com/android/inputmethod/latin/SuggestedWords.java @@ -91,6 +91,7 @@ public class SuggestedWords { private boolean mIsPunctuationSuggestions; private boolean mShouldBlockAutoCorrectionBySafetyNet; private boolean mAllowsToBeAutoCorrected; + private boolean mHasAutoCorrection; private List mSuggestedWordInfoList = new ArrayList(); @@ -165,6 +166,11 @@ public class SuggestedWords { return this; } + public Builder setHasAutoCorrection(final boolean hasAutoCorrection) { + mHasAutoCorrection = hasAutoCorrection; + return this; + } + // Should get rid of the first one (what the user typed previously) from suggestions // and replace it with what the user currently typed. public Builder addTypedWordAndPreviousSuggestions(CharSequence typedWord, @@ -210,6 +216,10 @@ public class SuggestedWords { return mAllowsToBeAutoCorrected; } + public boolean hasAutoCorrection() { + return mHasAutoCorrection; + } + @Override public String toString() { // Pretty-print method to help debug