Merge "Fix work tab is gone when leaving search mode" into ub-launcher3-master
diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java
index af7ca51..2e544ec 100644
--- a/src/com/android/launcher3/allapps/AllAppsContainerView.java
+++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java
@@ -27,7 +27,6 @@
 import android.support.v7.widget.RecyclerView;
 import android.text.Selection;
 import android.text.SpannableStringBuilder;
-import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
@@ -149,9 +148,7 @@
      */
     public void setApps(List<AppInfo> apps) {
         boolean hasWorkProfileApp = hasWorkProfileApp(apps);
-        if (mUsingTabs != hasWorkProfileApp) {
-            rebindAdapters(hasWorkProfileApp);
-        }
+        rebindAdapters(hasWorkProfileApp);
         mComponentToAppMap.clear();
         addOrUpdateApps(apps);
     }
@@ -262,7 +259,7 @@
         });
 
         mHeader = findViewById(R.id.all_apps_header);
-        rebindAdapters(mUsingTabs);
+        rebindAdapters(mUsingTabs, true /* force */);
 
         mSearchContainer = findViewById(R.id.search_container_all_apps);
         mSearchUiManager = (SearchUiManager) mSearchContainer;
@@ -396,9 +393,14 @@
     }
 
     private void rebindAdapters(boolean showTabs) {
-        if (showTabs != mUsingTabs) {
-            replaceRVContainer(showTabs);
+        rebindAdapters(showTabs, false /* force */);
+    }
+
+    private void rebindAdapters(boolean showTabs, boolean force) {
+        if (showTabs == mUsingTabs && !force) {
+            return;
         }
+        replaceRVContainer(showTabs);
         mUsingTabs = showTabs;
 
         if (mUsingTabs) {
@@ -540,13 +542,16 @@
         for (int i = 0; i < mAH.length; i++) {
             mAH[i].adapter.setLastSearchQuery(query);
         }
-        boolean hasQuery = !TextUtils.isEmpty(query);
-        if (mUsingTabs && hasQuery) {
+        if (mUsingTabs) {
             mSearchModeWhileUsingTabs = true;
             rebindAdapters(false); // hide tabs
-        } else if (mSearchModeWhileUsingTabs && !hasQuery) {
-            mSearchModeWhileUsingTabs = false;
+        }
+    }
+
+    public void onClearSearchResult() {
+        if (mSearchModeWhileUsingTabs) {
             rebindAdapters(true); // show tabs
+            mSearchModeWhileUsingTabs = false;
         }
     }
 
diff --git a/src/com/android/launcher3/allapps/search/AppsSearchContainerLayout.java b/src/com/android/launcher3/allapps/search/AppsSearchContainerLayout.java
index e65a2c4..ed41f13 100644
--- a/src/com/android/launcher3/allapps/search/AppsSearchContainerLayout.java
+++ b/src/com/android/launcher3/allapps/search/AppsSearchContainerLayout.java
@@ -184,6 +184,7 @@
         mSearchQueryBuilder.clear();
         mSearchQueryBuilder.clearSpans();
         Selection.setSelection(mSearchQueryBuilder, 0);
+        mAppsView.onClearSearchResult();
     }
 
     @Override