Merge "Fix for search UI remaining on screen after call is made" into lmp-preview-dev
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 82b7838..b7772c1 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -263,10 +263,11 @@
                 // no need to do anything here.
                 return;
             }
-            mSearchQuery = newText;
             if (DEBUG) {
                 Log.d(TAG, "onTextChange for mSearchView called with new query: " + newText);
+                Log.d(TAG, "Previous Query: " + mSearchQuery);
             }
+            mSearchQuery = newText;
 
             // Show search fragment only when the query string is changed to non-empty text.
             if (!TextUtils.isEmpty(newText)) {
@@ -687,8 +688,11 @@
     }
 
     private void hideDialpadAndSearchUi() {
-        mSearchView.setText(null);
-        hideDialpadFragment(false, true);
+        if (mIsDialpadShown) {
+            hideDialpadFragment(false, true);
+        } else {
+            exitSearchUi();
+        }
     }
 
     private void hideInputMethod(View view) {
@@ -873,7 +877,6 @@
         setNotInSearchUi();
 
         final FragmentTransaction transaction = getFragmentManager().beginTransaction();
-        transaction.setCustomAnimations(0, android.R.animator.fade_out);
         if (mSmartDialSearchFragment != null) {
             transaction.remove(mSmartDialSearchFragment);
         }
diff --git a/src/com/android/dialer/list/ListsFragment.java b/src/com/android/dialer/list/ListsFragment.java
index 229f7f3..30e0e0f 100644
--- a/src/com/android/dialer/list/ListsFragment.java
+++ b/src/com/android/dialer/list/ListsFragment.java
@@ -52,6 +52,9 @@
 public class ListsFragment extends Fragment implements CallLogQueryHandler.Listener,
         CallLogAdapter.CallFetcher, ViewPager.OnPageChangeListener {
 
+    private static final boolean DEBUG = DialtactsActivity.DEBUG;
+    private static final String TAG = "ListsFragment";
+
     public static final int TAB_INDEX_SPEED_DIAL = 0;
     public static final int TAB_INDEX_RECENTS = 1;
     public static final int TAB_INDEX_ALL_CONTACTS = 2;
@@ -154,11 +157,17 @@
 
         @Override
         public void onPanelOpened(View panel) {
+            if (DEBUG) {
+                Log.d(TAG, "onPanelOpened");
+            }
             mIsPanelOpen = true;
         }
 
         @Override
         public void onPanelClosed(View panel) {
+            if (DEBUG) {
+                Log.d(TAG, "onPanelClosed");
+            }
             mIsPanelOpen = false;
         }
     };
@@ -232,7 +241,6 @@
         // Wipe the cache to refresh the call shortcut item. This is not that expensive because
         // it only contains one item.
         mCallLogAdapter.invalidateCache();
-        mActionBar = null;
         super.onPause();
     }
 
diff --git a/src/com/android/dialer/widget/ActionBarController.java b/src/com/android/dialer/widget/ActionBarController.java
index 49506f4..67037a2 100644
--- a/src/com/android/dialer/widget/ActionBarController.java
+++ b/src/com/android/dialer/widget/ActionBarController.java
@@ -7,6 +7,8 @@
 import android.os.Bundle;
 import android.util.Log;
 
+import com.android.contacts.common.animation.AnimUtils;
+import com.android.contacts.common.animation.AnimUtils.AnimationCallback;
 import com.android.dialer.DialtactsActivity;
 
 /**
@@ -26,6 +28,18 @@
 
     private boolean mIsActionBarSlidUp;
 
+    private final AnimationCallback mFadeOutCallback = new AnimationCallback() {
+        @Override
+        public void onAnimationEnd() {
+            slideActionBarUp(false);
+        }
+
+        @Override
+        public void onAnimationCancel() {
+            slideActionBarUp(false);
+        }
+    };
+
     public interface ActivityUi {
         public boolean isInSearchUi();
         public boolean hasSearchQuery();
@@ -127,7 +141,7 @@
             slideActionBarUp(true);
         } else {
             // From the lists fragment
-            mSearchBox.fadeOut();
+            mSearchBox.fadeOut(mFadeOutCallback);
         }
     }
 
diff --git a/src/com/android/dialer/widget/SearchEditTextLayout.java b/src/com/android/dialer/widget/SearchEditTextLayout.java
index ef3ddcc..311d2af 100644
--- a/src/com/android/dialer/widget/SearchEditTextLayout.java
+++ b/src/com/android/dialer/widget/SearchEditTextLayout.java
@@ -123,7 +123,11 @@
     }
 
     public void fadeOut() {
-        AnimUtils.fadeOut(this, ANIMATION_DURATION);
+        fadeOut(null);
+    }
+
+    public void fadeOut(AnimUtils.AnimationCallback callback) {
+        AnimUtils.fadeOut(this, ANIMATION_DURATION, callback);
         mIsFadedOut = true;
     }