diff options
| -rw-r--r-- | core/java/android/app/SearchDialog.java | 9 | ||||
| -rw-r--r-- | core/java/android/widget/AutoCompleteTextView.java | 10 |
2 files changed, 18 insertions, 1 deletions
diff --git a/core/java/android/app/SearchDialog.java b/core/java/android/app/SearchDialog.java index 70aceebad0ae..9c20a4bbba7f 100644 --- a/core/java/android/app/SearchDialog.java +++ b/core/java/android/app/SearchDialog.java @@ -1743,7 +1743,14 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS } // If the drop-down obscures the keyboard, the user wouldn't see anything // happening when pressing back, so we dismiss the entire dialog instead. - if (isInputMethodNotNeeded()) { + // + // also: if there is no text entered, we also want to dismiss the whole dialog, + // not just the soft keyboard. the exception to this is if there are shortcuts + // that aren't displayed (e.g are being obscured by the soft keyboard); in that + // case we want to dismiss the soft keyboard so the user can see the rest of the + // shortcuts. + if (isInputMethodNotNeeded() || + (isEmpty() && getDropDownChildCount() >= getAdapter().getCount())) { mSearchDialog.cancel(); return true; } diff --git a/core/java/android/widget/AutoCompleteTextView.java b/core/java/android/widget/AutoCompleteTextView.java index 456f8ed845a4..02d77d1e0b25 100644 --- a/core/java/android/widget/AutoCompleteTextView.java +++ b/core/java/android/widget/AutoCompleteTextView.java @@ -862,6 +862,16 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe return ListView.INVALID_POSITION; } + + /** + * @hide + * @return {@link android.widget.ListView#getChildCount()} of the drop down if it is showing, + * otherwise 0. + */ + protected int getDropDownChildCount() { + return mDropDownList == null ? 0 : mDropDownList.getChildCount(); + } + /** * <p>Starts filtering the content of the drop down list. The filtering * pattern is the content of the edit box. Subclasses should override this |