Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4ee18692 authored by Jean Chalard's avatar Jean Chalard
Browse files

Remove a method that causes annoying side-effects.

...and replace by a call to a central method.

Change-Id: I93d0a2c2e99963a5b69923d1062d0e01853216b6
parent b8753eb3
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -72,6 +72,7 @@ import com.android.inputmethod.latin.suggestions.SuggestionsView;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

@@ -1782,8 +1783,14 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
            if (previousSuggestions == mSettingsValues.mSuggestPuncList) {
                previousSuggestions = SuggestedWords.EMPTY;
            }
            final ArrayList<SuggestedWords.SuggestedWordInfo> typedWordAndPreviousSuggestions =
                    SuggestedWords.Builder.getTypedWordAndPreviousSuggestions(
                            typedWord, previousSuggestions);
            final SuggestedWords.Builder obsoleteSuggestionsBuilder = new SuggestedWords.Builder()
                    .addTypedWordAndPreviousSuggestions(typedWord, previousSuggestions);
                    .addWords(typedWordAndPreviousSuggestions)
                    .setTypedWordValid(false)
                    .setHasMinimalSuggestion(false);

            showSuggestions(obsoleteSuggestionsBuilder.build(), typedWord);
        }
    }
+6 −14
Original line number Diff line number Diff line
@@ -87,12 +87,6 @@ public class SuggestedWords {
            // 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) {
            final int N = suggestedWordInfoList.size();
            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
        // and replace it with what the user currently typed.
        public Builder addTypedWordAndPreviousSuggestions(CharSequence typedWord,
                SuggestedWords previousSuggestions) {
            mSuggestedWordInfoList.clear();
        public static ArrayList<SuggestedWordInfo> getTypedWordAndPreviousSuggestions(
                final CharSequence typedWord, final SuggestedWords previousSuggestions) {
            final ArrayList<SuggestedWordInfo> suggestionsList = new ArrayList<SuggestedWordInfo>();
            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());
            final int previousSize = previousSuggestions.size();
            for (int pos = 1; pos < previousSize; pos++) {
                final String prevWord = previousSuggestions.getWord(pos).toString();
                // Filter out duplicate suggestion.
                if (!alreadySeen.contains(prevWord)) {
                    addWord(prevWord, new SuggestedWordInfo(prevWord, null, true));
                    suggestionsList.add(new SuggestedWordInfo(prevWord, null, true));
                    alreadySeen.add(prevWord);
                }
            }
            mTypedWordValid = false;
            mHasMinimalSuggestion = false;
            return this;
            return suggestionsList;
        }

        public SuggestedWords build() {