diff options
| -rw-r--r-- | core/java/android/app/SearchDialog.java | 6 | ||||
| -rw-r--r-- | core/java/android/widget/AutoCompleteTextView.java | 12 |
2 files changed, 15 insertions, 3 deletions
diff --git a/core/java/android/app/SearchDialog.java b/core/java/android/app/SearchDialog.java index 34429fae876f..dd24a75a9fd8 100644 --- a/core/java/android/app/SearchDialog.java +++ b/core/java/android/app/SearchDialog.java @@ -1709,6 +1709,12 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS if (mSearchDialog.backToPreviousComponent()) { return true; } + // 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()) { + mSearchDialog.cancel(); + return true; + } return false; // will dismiss soft keyboard if necessary } return false; diff --git a/core/java/android/widget/AutoCompleteTextView.java b/core/java/android/widget/AutoCompleteTextView.java index 6848a5555d57..a99807284b44 100644 --- a/core/java/android/widget/AutoCompleteTextView.java +++ b/core/java/android/widget/AutoCompleteTextView.java @@ -209,8 +209,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe private void onClickImpl() { // If the dropdown is showing, bring it back in front of the soft // keyboard when the user touches the text field. - if (mPopup.isShowing() && - mPopup.getInputMethodMode() == PopupWindow.INPUT_METHOD_NOT_NEEDED) { + if (mPopup.isShowing() && isInputMethodNotNeeded()) { ensureImeVisible(); } } @@ -1103,6 +1102,13 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe } /** + * @hide internal used only here and SearchDialog + */ + public boolean isInputMethodNotNeeded() { + return mPopup.getInputMethodMode() == PopupWindow.INPUT_METHOD_NOT_NEEDED; + } + + /** * <p>Displays the drop down on screen.</p> */ public void showDropDown() { @@ -1111,7 +1117,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe int widthSpec = 0; int heightSpec = 0; - boolean noInputMethod = mPopup.getInputMethodMode() == PopupWindow.INPUT_METHOD_NOT_NEEDED; + boolean noInputMethod = isInputMethodNotNeeded(); if (mPopup.isShowing()) { if (mDropDownWidth == ViewGroup.LayoutParams.FILL_PARENT) { |