Merge "Improve scrolling, handle onNestedPreFling" into lmp-dev
diff --git a/src/com/android/dialer/calllog/CallLogFragment.java b/src/com/android/dialer/calllog/CallLogFragment.java
index 2f0ee53..e5c3c58 100644
--- a/src/com/android/dialer/calllog/CallLogFragment.java
+++ b/src/com/android/dialer/calllog/CallLogFragment.java
@@ -601,7 +601,7 @@
                 view.getLocalVisibleRect(localVisibleRect);
                 final int scrollingNeeded = localVisibleRect.top > 0 ? -localVisibleRect.top
                         : view.getMeasuredHeight() - localVisibleRect.height();
-
+                final ListView listView = getListView();
                 animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
 
                     private int mCurrentScroll = 0;
@@ -618,9 +618,11 @@
                         view.requestLayout();
 
                         if (isExpand) {
-                            int scrollBy = (int) (value * scrollingNeeded) - mCurrentScroll;
-                            getListView().smoothScrollBy(scrollBy, /* duration = */ 0);
-                            mCurrentScroll += scrollBy;
+                            if (listView != null) {
+                                int scrollBy = (int) (value * scrollingNeeded) - mCurrentScroll;
+                                listView.smoothScrollBy(scrollBy, /* duration = */ 0);
+                                mCurrentScroll += scrollBy;
+                            }
                         }
                     }
                 });
diff --git a/src/com/android/dialer/dialpad/DialpadFragment.java b/src/com/android/dialer/dialpad/DialpadFragment.java
index 9eb6884..7faed07 100644
--- a/src/com/android/dialer/dialpad/DialpadFragment.java
+++ b/src/com/android/dialer/dialpad/DialpadFragment.java
@@ -225,7 +225,7 @@
         public void onCallStateChanged(int state, String incomingNumber) {
             // Log.i(TAG, "PhoneStateListener.onCallStateChanged: "
             //       + state + ", '" + incomingNumber + "'");
-            if ((state == TelephonyManager.CALL_STATE_IDLE) && dialpadChooserVisible()) {
+            if ((state == TelephonyManager.CALL_STATE_IDLE) && isDialpadChooserVisible()) {
                 // Log.i(TAG, "Call ended with dialpad chooser visible!  Taking it down...");
                 // Note there's a race condition in the UI here: the
                 // dialpad chooser could conceivably disappear (on its
@@ -838,7 +838,6 @@
             }
             mPressedDialpadKeys.add(view);
         } else {
-            view.jumpDrawablesToCurrentState();
             mPressedDialpadKeys.remove(view);
             if (mPressedDialpadKeys.isEmpty()) {
                 stopTone();
@@ -1211,7 +1210,7 @@
         }
 
         if (enabled) {
-            // Log.i(TAG, "Showing dialpad chooser!");
+            Log.i(TAG, "Showing dialpad chooser!");
             if (mDialpadView != null) {
                 mDialpadView.setVisibility(View.GONE);
             }
@@ -1226,7 +1225,7 @@
             }
             mDialpadChooser.setAdapter(mDialpadChooserAdapter);
         } else {
-            // Log.i(TAG, "Displaying normal Dialer UI.");
+            Log.i(TAG, "Displaying normal Dialer UI.");
             if (mDialpadView != null) {
                 mDialpadView.setVisibility(View.VISIBLE);
             } else {
@@ -1241,7 +1240,7 @@
     /**
      * @return true if we're currently showing the "dialpad chooser" UI.
      */
-    private boolean dialpadChooserVisible() {
+    private boolean isDialpadChooserVisible() {
         return mDialpadChooser.getVisibility() == View.VISIBLE;
     }
 
@@ -1604,7 +1603,7 @@
         final DialtactsActivity activity = (DialtactsActivity) getActivity();
         final DialpadView dialpadView = (DialpadView) getView().findViewById(R.id.dialpad_view);
         if (activity == null) return;
-        if (!hidden) {
+        if (!hidden && !isDialpadChooserVisible()) {
             if (mAnimate) {
                 dialpadView.animateShow();
             }