Stop auto-correcting non-whitelisted one-char strings

Bug: 7134017
Change-Id: I75cf474dedafda3e1683dd8f7740c13aafdcf5ab
main
Jean Chalard 2012-09-10 14:19:41 +09:00
parent 2935276110
commit 8c06a468e0
2 changed files with 7 additions and 5 deletions

View File

@ -73,11 +73,11 @@ public class AutoCorrection {
return maxFreq; return maxFreq;
} }
// Returns true if this isn't in any dictionary. // Returns true if this is in any of the dictionaries.
public static boolean isNotAWord( public static boolean isInTheDictionary(
final ConcurrentHashMap<String, Dictionary> dictionaries, final ConcurrentHashMap<String, Dictionary> dictionaries,
final CharSequence word, final boolean ignoreCase) { final CharSequence word, final boolean ignoreCase) {
return !isValidWord(dictionaries, word, ignoreCase); return isValidWord(dictionaries, word, ignoreCase);
} }
public static boolean suggestionExceedsAutoCorrectionThreshold(SuggestedWordInfo suggestion, public static boolean suggestionExceedsAutoCorrectionThreshold(SuggestedWordInfo suggestion,

View File

@ -214,10 +214,12 @@ public class Suggest {
whitelistedWord = suggestionsSet.first().mWord; whitelistedWord = suggestionsSet.first().mWord;
} }
// The word can be auto-corrected if it has a whitelist entry that is not itself,
// or if it's a 2+ characters non-word (i.e. it's not in the dictionary).
final boolean allowsToBeAutoCorrected = (null != whitelistedWord final boolean allowsToBeAutoCorrected = (null != whitelistedWord
&& !whitelistedWord.equals(consideredWord)) && !whitelistedWord.equals(consideredWord))
|| AutoCorrection.isNotAWord(mDictionaries, consideredWord, || (consideredWord.length() > 1 && !AutoCorrection.isInTheDictionary(mDictionaries,
wordComposer.isFirstCharCapitalized()); consideredWord, wordComposer.isFirstCharCapitalized()));
final boolean hasAutoCorrection; final boolean hasAutoCorrection;
// TODO: using isCorrectionEnabled here is not very good. It's probably useless, because // TODO: using isCorrectionEnabled here is not very good. It's probably useless, because