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

Commit 5e4c4b00 authored by Amith Yamasani's avatar Amith Yamasani Committed by Android Git Automerger
Browse files

am 709d1c61: am bf0f4d9c: Remove dupes from suggestions. Fixes 2213629

Merge commit '709d1c61' into eclair-mr2-plus-aosp

* commit '709d1c61':
  Remove dupes from suggestions. Fixes 2213629
parents 7cb4bef5 709d1c61
Loading
Loading
Loading
Loading
+31 −3
Original line number Diff line number Diff line
@@ -48,9 +48,9 @@ public class Suggest implements Dictionary.WordCallback {
    private int mPrefMaxSuggestions = 12;

    private int[] mPriorities = new int[mPrefMaxSuggestions];
    private List<CharSequence> mSuggestions = new ArrayList<CharSequence>();
    private ArrayList<CharSequence> mSuggestions = new ArrayList<CharSequence>();
    private boolean mIncludeTypedWordIfValid;
    private List<CharSequence> mStringPool = new ArrayList<CharSequence>();
    private ArrayList<CharSequence> mStringPool = new ArrayList<CharSequence>();
    private Context mContext;
    private boolean mHaveCorrection;
    private CharSequence mOriginalWord;
@@ -219,9 +219,37 @@ public class Suggest implements Dictionary.WordCallback {
            i++;
        }

        removeDupes();
        return mSuggestions;
    }

    private void removeDupes() {
        final ArrayList<CharSequence> suggestions = mSuggestions;
        if (suggestions.size() < 2) return;
        int i = 1;
        // Don't cache suggestions.size(), since we may be removing items
        while (i < suggestions.size()) {
            final CharSequence cur = suggestions.get(i);
            // Compare each candidate with each previous candidate
            for (int j = 0; j < i; j++) {
                CharSequence previous = suggestions.get(j);
                if (TextUtils.equals(cur, previous)) {
                    removeFromSuggestions(i);
                    i--;
                    break;
                }
            }
            i++;
        }
    }

    private void removeFromSuggestions(int index) {
        CharSequence garbage = mSuggestions.remove(index);
        if (garbage != null && garbage instanceof StringBuilder) {
            mStringPool.add(garbage);
        }
    }

    public boolean hasMinimalCorrection() {
        return mHaveCorrection;
    }