am 738b4c00: Merge change 8773 into donut
Merge commit '738b4c000bab8414fa2969db489d7abce20e0af6'
* commit '738b4c000bab8414fa2969db489d7abce20e0af6':
Only dismiss search on suggestion click in in-app search
diff --git a/core/java/android/app/SearchDialog.java b/core/java/android/app/SearchDialog.java
index dd70130..34429fa 100644
--- a/core/java/android/app/SearchDialog.java
+++ b/core/java/android/app/SearchDialog.java
@@ -244,7 +244,12 @@
}
return success;
}
-
+
+ private boolean isInRealAppSearch() {
+ return !mGlobalSearchMode
+ && (mPreviousComponents == null || mPreviousComponents.isEmpty());
+ }
+
/**
* Called in response to a press of the hard search button in
* {@link #onKeyDown(int, KeyEvent)}, this method toggles between in-app
@@ -535,7 +540,7 @@
// we dismiss the entire dialog instead
mSearchAutoComplete.setDropDownDismissedOnCompletion(false);
- if (mGlobalSearchMode) {
+ if (!isInRealAppSearch()) {
mSearchAutoComplete.setDropDownAlwaysVisible(true); // fill space until results come in
} else {
mSearchAutoComplete.setDropDownAlwaysVisible(false);
@@ -1259,10 +1264,13 @@
launchGlobalSearchIntent(intent);
} else {
getContext().startActivity(intent);
- // in global search mode, SearchDialogWrapper#performActivityResuming
+ // If the search switches to a different activity,
+ // SearchDialogWrapper#performActivityResuming
// will handle hiding the dialog when the next activity starts, but for
- // in-app search, we still need to dismiss the dialog.
- dismiss();
+ // real in-app search, we still need to dismiss the dialog.
+ if (isInRealAppSearch()) {
+ dismiss();
+ }
}
} catch (RuntimeException ex) {
Log.e(LOG_TAG, "Failed launch activity: " + intent, ex);
@@ -1401,13 +1409,13 @@
return;
}
if (DBG) Log.d(LOG_TAG, "Switching to " + componentName);
-
- ComponentName previous = mLaunchComponent;
+
+ pushPreviousComponent(mLaunchComponent);
if (!show(componentName, mAppSearchData, false)) {
Log.w(LOG_TAG, "Failed to switch to source " + componentName);
+ popPreviousComponent();
return;
}
- pushPreviousComponent(previous);
String query = intent.getStringExtra(SearchManager.QUERY);
setUserQuery(query);