Remove a method that causes annoying side-effects.
...and replace by a call to a central method. Change-Id: I93d0a2c2e99963a5b69923d1062d0e01853216b6
This commit is contained in:
parent
b8753eb31c
commit
4ee186920e
2 changed files with 14 additions and 15 deletions
|
@ -72,6 +72,7 @@ import com.android.inputmethod.latin.suggestions.SuggestionsView;
|
||||||
|
|
||||||
import java.io.FileDescriptor;
|
import java.io.FileDescriptor;
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
|
||||||
|
@ -1782,8 +1783,14 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
|
||||||
if (previousSuggestions == mSettingsValues.mSuggestPuncList) {
|
if (previousSuggestions == mSettingsValues.mSuggestPuncList) {
|
||||||
previousSuggestions = SuggestedWords.EMPTY;
|
previousSuggestions = SuggestedWords.EMPTY;
|
||||||
}
|
}
|
||||||
|
final ArrayList<SuggestedWords.SuggestedWordInfo> typedWordAndPreviousSuggestions =
|
||||||
|
SuggestedWords.Builder.getTypedWordAndPreviousSuggestions(
|
||||||
|
typedWord, previousSuggestions);
|
||||||
final SuggestedWords.Builder obsoleteSuggestionsBuilder = new SuggestedWords.Builder()
|
final SuggestedWords.Builder obsoleteSuggestionsBuilder = new SuggestedWords.Builder()
|
||||||
.addTypedWordAndPreviousSuggestions(typedWord, previousSuggestions);
|
.addWords(typedWordAndPreviousSuggestions)
|
||||||
|
.setTypedWordValid(false)
|
||||||
|
.setHasMinimalSuggestion(false);
|
||||||
|
|
||||||
showSuggestions(obsoleteSuggestionsBuilder.build(), typedWord);
|
showSuggestions(obsoleteSuggestionsBuilder.build(), typedWord);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,12 +87,6 @@ public class SuggestedWords {
|
||||||
// Nothing to do here.
|
// Nothing to do here.
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: the following method is a wrapper to satisfy tests. Update tests and remove it.
|
|
||||||
public Builder addWords(final List<CharSequence> words,
|
|
||||||
final List<SuggestedWordInfo> suggestedWordInfoList) {
|
|
||||||
return addWords(suggestedWordInfoList);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Builder addWords(List<SuggestedWordInfo> suggestedWordInfoList) {
|
public Builder addWords(List<SuggestedWordInfo> suggestedWordInfoList) {
|
||||||
final int N = suggestedWordInfoList.size();
|
final int N = suggestedWordInfoList.size();
|
||||||
for (int i = 0; i < N; ++i) {
|
for (int i = 0; i < N; ++i) {
|
||||||
|
@ -161,24 +155,22 @@ public class SuggestedWords {
|
||||||
|
|
||||||
// Should get rid of the first one (what the user typed previously) from suggestions
|
// Should get rid of the first one (what the user typed previously) from suggestions
|
||||||
// and replace it with what the user currently typed.
|
// and replace it with what the user currently typed.
|
||||||
public Builder addTypedWordAndPreviousSuggestions(CharSequence typedWord,
|
public static ArrayList<SuggestedWordInfo> getTypedWordAndPreviousSuggestions(
|
||||||
SuggestedWords previousSuggestions) {
|
final CharSequence typedWord, final SuggestedWords previousSuggestions) {
|
||||||
mSuggestedWordInfoList.clear();
|
final ArrayList<SuggestedWordInfo> suggestionsList = new ArrayList<SuggestedWordInfo>();
|
||||||
final HashSet<String> alreadySeen = new HashSet<String>();
|
final HashSet<String> alreadySeen = new HashSet<String>();
|
||||||
addWord(typedWord, new SuggestedWordInfo(typedWord, null, false));
|
suggestionsList.add(new SuggestedWordInfo(typedWord, null, false));
|
||||||
alreadySeen.add(typedWord.toString());
|
alreadySeen.add(typedWord.toString());
|
||||||
final int previousSize = previousSuggestions.size();
|
final int previousSize = previousSuggestions.size();
|
||||||
for (int pos = 1; pos < previousSize; pos++) {
|
for (int pos = 1; pos < previousSize; pos++) {
|
||||||
final String prevWord = previousSuggestions.getWord(pos).toString();
|
final String prevWord = previousSuggestions.getWord(pos).toString();
|
||||||
// Filter out duplicate suggestion.
|
// Filter out duplicate suggestion.
|
||||||
if (!alreadySeen.contains(prevWord)) {
|
if (!alreadySeen.contains(prevWord)) {
|
||||||
addWord(prevWord, new SuggestedWordInfo(prevWord, null, true));
|
suggestionsList.add(new SuggestedWordInfo(prevWord, null, true));
|
||||||
alreadySeen.add(prevWord);
|
alreadySeen.add(prevWord);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mTypedWordValid = false;
|
return suggestionsList;
|
||||||
mHasMinimalSuggestion = false;
|
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public SuggestedWords build() {
|
public SuggestedWords build() {
|
||||||
|
|
Loading…
Reference in a new issue