Dismiss both the soft keyboard and the search dialog on back if there is no text entered and no shortcuts are being obscured by the soft keyboard.

Fixes bug 2039508.  This makes backing out of the search dialog easier when dismissing the soft keyboard doesn't really
add any value.
This commit is contained in:
Karl Rosaen
2009-08-06 16:13:14 -07:00
parent e303d2cf94
commit a7a3b6ef0f
2 changed files with 18 additions and 1 deletions

View File

@@ -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;
}

View File

@@ -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