// that modifies the contents of the text field. But if the user then edits
// the suggestion, the resulting string is saved.
private String mUserQuery;
+ // The query passed in when opening the SearchDialog. Used in the browser
+ // case to determine whether the user has edited the query.
+ private String mInitialQuery;
// A weak map of drawables we've gotten from other packages, so we don't load them
// more than once.
return false;
}
+ mInitialQuery = initialQuery == null ? "" : initialQuery;
// finally, load the user's initial text (which may trigger suggestions)
setUserQuery(initialQuery);
if (selectInitialQuery) {
mAppSearchData = null;
mSearchable = null;
mUserQuery = null;
+ mInitialQuery = null;
}
/**
if (mSearchable == null) {
return;
}
- updateWidgetState();
if (!mSearchAutoComplete.isPerformingCompletion()) {
// The user changed the query, remember it.
mUserQuery = s == null ? "" : s.toString();
}
+ updateWidgetState();
// Always want to show the microphone if the context is voice.
+ // Also show the microphone if this is a browser search and the
+ // query matches the initial query.
updateVoiceButton(mSearchAutoComplete.isEmpty()
+ || (isBrowserSearch() && mInitialQuery.equals(mUserQuery))
|| (mAppSearchData != null && mAppSearchData.getBoolean(
SearchManager.CONTEXT_IS_VOICE)));
}
// enable the button if we have one or more non-space characters
boolean enabled = !mSearchAutoComplete.isEmpty();
if (isBrowserSearch()) {
- // In the browser, we hide the search button when there is no text
- if (enabled) {
+ // In the browser, we hide the search button when there is no text,
+ // or if the text matches the initial query.
+ if (enabled && !mInitialQuery.equals(mUserQuery)) {
mSearchAutoComplete.setBackgroundResource(
com.android.internal.R.drawable.textfield_search);
mGoButton.setVisibility(View.VISIBLE);