Don't auto-add when in suggest-only mode. Bug: 2521344

Also don't highlight quickfixes when in suggest-only mode
In general, reduce the situations where words are auto-added. It was
too eagerly adding even words that were in the dictionary.
main
Amith Yamasani 2010-03-24 16:44:31 -07:00
parent 4ff60be170
commit 0c05902e33
2 changed files with 14 additions and 8 deletions

View File

@ -1438,7 +1438,7 @@ public class LatinIME extends InputMethodService
((LatinKeyboard) mInputView.getKeyboard()).setPreferredLetters(nextLettersFrequencies); ((LatinKeyboard) mInputView.getKeyboard()).setPreferredLetters(nextLettersFrequencies);
boolean correctionAvailable = mSuggest.hasMinimalCorrection(); boolean correctionAvailable = !mInputTypeNoAutoCorrect && mSuggest.hasMinimalCorrection();
//|| mCorrectionMode == mSuggest.CORRECTION_FULL; //|| mCorrectionMode == mSuggest.CORRECTION_FULL;
CharSequence typedWord = mWord.getTypedWord(); CharSequence typedWord = mWord.getTypedWord();
// If we're in basic correct // If we're in basic correct
@ -1519,7 +1519,9 @@ public class LatinIME extends InputMethodService
mJustAccepted = true; mJustAccepted = true;
pickSuggestion(suggestion); pickSuggestion(suggestion);
// Add the word to the auto dictionary if it's not a known word // Add the word to the auto dictionary if it's not a known word
checkAddToDictionary(suggestion, AutoDictionary.FREQUENCY_FOR_PICKED); if (index == 0) {
checkAddToDictionary(suggestion, AutoDictionary.FREQUENCY_FOR_PICKED);
}
TextEntryState.acceptedSuggestion(mComposing.toString(), suggestion); TextEntryState.acceptedSuggestion(mComposing.toString(), suggestion);
// Follow it with a space // Follow it with a space
if (mAutoSpace) { if (mAutoSpace) {
@ -1565,8 +1567,13 @@ public class LatinIME extends InputMethodService
} }
private void checkAddToDictionary(CharSequence suggestion, int frequencyDelta) { private void checkAddToDictionary(CharSequence suggestion, int frequencyDelta) {
// Only auto-add to dictionary if auto-correct is ON. Otherwise we'll be
// adding words in situations where the user or application really didn't
// want corrections enabled or learned.
if (!(mCorrectionMode == Suggest.CORRECTION_FULL)) return;
if (mAutoDictionary.isValidWord(suggestion) if (mAutoDictionary.isValidWord(suggestion)
|| !mSuggest.isValidWord(suggestion.toString().toLowerCase())) { || (!mSuggest.isValidWord(suggestion.toString())
&& !mSuggest.isValidWord(suggestion.toString().toLowerCase()))) {
mAutoDictionary.addWord(suggestion.toString(), frequencyDelta); mAutoDictionary.addWord(suggestion.toString(), frequencyDelta);
} }
} }

View File

@ -346,11 +346,10 @@ public class Suggest implements Dictionary.WordCallback {
if (word == null || word.length() == 0) { if (word == null || word.length() == 0) {
return false; return false;
} }
return (mCorrectionMode == CORRECTION_FULL && mMainDict.isValidWord(word)) return mMainDict.isValidWord(word)
|| (mCorrectionMode > CORRECTION_NONE && || (mUserDictionary != null && mUserDictionary.isValidWord(word))
((mUserDictionary != null && mUserDictionary.isValidWord(word))) || (mAutoDictionary != null && mAutoDictionary.isValidWord(word))
|| (mAutoDictionary != null && mAutoDictionary.isValidWord(word)) || (mContactsDictionary != null && mContactsDictionary.isValidWord(word));
|| (mContactsDictionary != null && mContactsDictionary.isValidWord(word)));
} }
private void collectGarbage() { private void collectGarbage() {