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);
boolean correctionAvailable = mSuggest.hasMinimalCorrection();
boolean correctionAvailable = !mInputTypeNoAutoCorrect && mSuggest.hasMinimalCorrection();
//|| mCorrectionMode == mSuggest.CORRECTION_FULL;
CharSequence typedWord = mWord.getTypedWord();
// If we're in basic correct
@ -1519,7 +1519,9 @@ public class LatinIME extends InputMethodService
mJustAccepted = true;
pickSuggestion(suggestion);
// 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);
// Follow it with a space
if (mAutoSpace) {
@ -1565,8 +1567,13 @@ public class LatinIME extends InputMethodService
}
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)
|| !mSuggest.isValidWord(suggestion.toString().toLowerCase())) {
|| (!mSuggest.isValidWord(suggestion.toString())
&& !mSuggest.isValidWord(suggestion.toString().toLowerCase()))) {
mAutoDictionary.addWord(suggestion.toString(), frequencyDelta);
}
}

View File

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