Fixing overlap pane offset when shortcut card disappears.

When the shortcut card was hidden due to the call log being cleared, the
offset for the overlapping pane needed to be recalculated based on the
new height of the top portion of the dialtacts activity.

Bug: 18849546
Change-Id: Ib5953a2a537e9a7520d4f022e43fa974f67eb410
diff --git a/src/com/android/dialer/list/ListsFragment.java b/src/com/android/dialer/list/ListsFragment.java
index 408d5b1..af82e40 100644
--- a/src/com/android/dialer/list/ListsFragment.java
+++ b/src/com/android/dialer/list/ListsFragment.java
@@ -90,6 +90,7 @@
     private ShortcutCardsAdapter mMergedAdapter;
     private CallLogAdapter mCallLogAdapter;
     private CallLogQueryHandler mCallLogQueryHandler;
+    private OverlappingPaneLayout mOverlappingPaneLayout;
 
     private boolean mIsPanelOpen = true;
 
@@ -302,6 +303,7 @@
         mRemoveViewContent = parentView.findViewById(R.id.remove_view_content);
 
         setupPaneLayout((OverlappingPaneLayout) parentView);
+        mOverlappingPaneLayout = (OverlappingPaneLayout) parentView;
 
         return parentView;
     }
@@ -322,6 +324,11 @@
 
         mCallLogAdapter.changeCursor(cursor);
         mMergedAdapter.notifyDataSetChanged();
+
+        // Refresh the overlapping pane to ensure that any changes in the shortcut card height
+        // are appropriately reflected in the overlap position.
+        mOverlappingPaneLayout.refresh();
+
         // Return true; took ownership of cursor
         return true;
     }
diff --git a/src/com/android/dialer/widget/OverlappingPaneLayout.java b/src/com/android/dialer/widget/OverlappingPaneLayout.java
index 8f911c2..167b849 100644
--- a/src/com/android/dialer/widget/OverlappingPaneLayout.java
+++ b/src/com/android/dialer/widget/OverlappingPaneLayout.java
@@ -717,6 +717,22 @@
         return wantTouchEvents;
     }
 
+    /**
+     * Refreshes the {@link OverlappingPaneLayout} be attempting to re-open or re-close the pane.
+     * This ensures that the overlapping pane is repositioned based on any changes to the view
+     * which is being overlapped.
+     * <p>
+     * The {@link #openPane()} and {@link #closePane()} methods do not perform any animation if the
+     * pane has already been positioned appropriately.
+     */
+    public void refresh() {
+        if (isOpen()) {
+            openPane();
+        } else {
+            closePane();
+        }
+    }
+
     private boolean closePane(View pane, int initialVelocity) {
         if (mFirstLayout || smoothSlideTo(0.f, initialVelocity)) {
             mPreservedOpenState = false;