am f3df63a9: Update suggestions if user typed word is found in dictionary

* commit 'f3df63a93a8f623e2aca5895ee749bd297b58d12':
  Update suggestions if user typed word is found in dictionary
This commit is contained in:
Tadashi G. Takaoka 2011-01-20 22:56:26 -08:00 committed by Android Git Automerger
commit 14355b786f
2 changed files with 16 additions and 6 deletions

View file

@ -1535,10 +1535,11 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// Basically, we update the suggestion strip only when suggestion count > 1. However,
// there is an exception: We update the suggestion strip whenever typed word's length
// is 1, regardless of suggestion count. Actually, in most cases, suggestion count is 1
// when typed word's length is 1, but we do always need to clear the previous state when
// the user starts typing a word (i.e. typed word's length == 1).
if (typedWord.length() == 1 || builder.size() > 1
// is 1 or typed word is found in dictionary, regardless of suggestion count. Actually,
// in most cases, suggestion count is 1 when typed word's length is 1, but we do always
// need to clear the previous state when the user starts typing a word (i.e. typed word's
// length == 1).
if (builder.size() > 1 || typedWord.length() == 1 || typedWordValid
|| mCandidateView.isShowingAddToDictionaryHint()) {
builder.setTypedWordValid(typedWordValid).setHasMinimalSuggestion(correctionAvailable);
} else {

View file

@ -20,6 +20,7 @@ import android.view.inputmethod.CompletionInfo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
public class SuggestedWords {
@ -128,10 +129,18 @@ public class SuggestedWords {
SuggestedWords previousSuggestions) {
mWords.clear();
mSuggestedWordInfoList.clear();
final HashSet<String> alreadySeen = new HashSet<String>();
addWord(typedWord, null, false);
alreadySeen.add(typedWord.toString());
final int previousSize = previousSuggestions.size();
for (int pos = 1; pos < previousSize; pos++)
addWord(previousSuggestions.getWord(pos), null, true);
for (int pos = 1; pos < previousSize; pos++) {
final String prevWord = previousSuggestions.getWord(pos).toString();
// Filter out duplicate suggestion.
if (!alreadySeen.contains(prevWord)) {
addWord(prevWord, null, true);
alreadySeen.add(prevWord);
}
}
mIsCompletions = false;
mTypedWordValid = false;
mHasMinimalSuggestion = false;