diff options
| author | Gilles Debunne <debunne@google.com> | 2011-09-14 15:00:51 -0700 |
|---|---|---|
| committer | Gilles Debunne <debunne@google.com> | 2011-09-15 11:03:56 -0700 |
| commit | d513e9746f09611db6478e368207ac7b112a253d (patch) | |
| tree | d4789aeb364eed68824fcb7a2cbdead4d712a520 /core/java/android/widget/AutoCompleteTextView.java | |
| parent | b5dfcb8a3d1e2a4ec39d9f27e185f3eca6910a31 (diff) | |
Bug 5319091: Completions delayed in AutoComplete in landscape
The filtering is an async process. We need to re-update completion
when it is finished.
Changed loogic to mimic the way it was done in GB.
Change-Id: If49048d786b3b9529da55c7247e7ef5f3d0fc8b5
Diffstat (limited to 'core/java/android/widget/AutoCompleteTextView.java')
| -rw-r--r-- | core/java/android/widget/AutoCompleteTextView.java | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/core/java/android/widget/AutoCompleteTextView.java b/core/java/android/widget/AutoCompleteTextView.java index 27610b9fe5c2..9584c2c5792a 100644 --- a/core/java/android/widget/AutoCompleteTextView.java +++ b/core/java/android/widget/AutoCompleteTextView.java @@ -16,8 +16,6 @@ package android.widget; -import com.android.internal.R; - import android.content.Context; import android.content.res.TypedArray; import android.database.DataSetObserver; @@ -38,6 +36,8 @@ import android.view.inputmethod.CompletionInfo; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; +import com.android.internal.R; + /** * <p>An editable text view that shows completion suggestions automatically @@ -744,7 +744,6 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe if (mFilter != null) { mPopupCanBeUpdated = true; performFiltering(getText(), mLastKeyCode); - buildImeCompletions(); } } else { // drop down is automatically dismissed when enough characters @@ -938,7 +937,8 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe */ final boolean dropDownAlwaysVisible = mPopup.isDropDownAlwaysVisible(); - if ((count > 0 || dropDownAlwaysVisible) && enoughToFilter()) { + final boolean enoughToFilter = enoughToFilter(); + if ((count > 0 || dropDownAlwaysVisible) && enoughToFilter) { if (hasFocus() && hasWindowFocus() && mPopupCanBeUpdated) { showDropDown(); } @@ -1049,6 +1049,8 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe * <p>Displays the drop down on screen.</p> */ public void showDropDown() { + buildImeCompletions(); + if (mPopup.getAnchorView() == null) { if (mDropDownAnchorId != View.NO_ID) { mPopup.setAnchorView(getRootView().findViewById(mDropDownAnchorId)); @@ -1064,7 +1066,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe mPopup.show(); mPopup.getListView().setOverScrollMode(View.OVER_SCROLL_ALWAYS); } - + /** * Forces outside touches to be ignored. Normally if {@link #isDropDownAlwaysVisible()} is * false, we allow outside touch to dismiss the dropdown. If this is set to true, then we @@ -1075,7 +1077,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe public void setForceIgnoreOutsideTouch(boolean forceIgnoreOutsideTouch) { mPopup.setForceIgnoreOutsideTouch(forceIgnoreOutsideTouch); } - + private void buildImeCompletions() { final ListAdapter adapter = mAdapter; if (adapter != null) { @@ -1090,8 +1092,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe realCount++; Object item = adapter.getItem(i); long id = adapter.getItemId(i); - completions[i] = new CompletionInfo(id, i, - convertSelectionToString(item)); + completions[i] = new CompletionInfo(id, i, convertSelectionToString(item)); } } |
