Merge change 8759 into donut

* changes:
  Cancel search on BACK if IME is obscured.
This commit is contained in:
Android (Google) Code Review
2009-07-28 10:45:35 -07:00
2 changed files with 15 additions and 3 deletions

View File

@@ -1709,6 +1709,12 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS
if (mSearchDialog.backToPreviousComponent()) { if (mSearchDialog.backToPreviousComponent()) {
return true; 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; // will dismiss soft keyboard if necessary
} }
return false; return false;

View File

@@ -209,8 +209,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe
private void onClickImpl() { private void onClickImpl() {
// If the dropdown is showing, bring it back in front of the soft // If the dropdown is showing, bring it back in front of the soft
// keyboard when the user touches the text field. // keyboard when the user touches the text field.
if (mPopup.isShowing() && if (mPopup.isShowing() && isInputMethodNotNeeded()) {
mPopup.getInputMethodMode() == PopupWindow.INPUT_METHOD_NOT_NEEDED) {
ensureImeVisible(); ensureImeVisible();
} }
} }
@@ -1102,6 +1101,13 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe
showDropDown(); showDropDown();
} }
/**
* @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> * <p>Displays the drop down on screen.</p>
*/ */
@@ -1111,7 +1117,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe
int widthSpec = 0; int widthSpec = 0;
int heightSpec = 0; int heightSpec = 0;
boolean noInputMethod = mPopup.getInputMethodMode() == PopupWindow.INPUT_METHOD_NOT_NEEDED; boolean noInputMethod = isInputMethodNotNeeded();
if (mPopup.isShowing()) { if (mPopup.isShowing()) {
if (mDropDownWidth == ViewGroup.LayoutParams.FILL_PARENT) { if (mDropDownWidth == ViewGroup.LayoutParams.FILL_PARENT) {