Ensuring that we offset cell items by their destination cell padding. (Bug 10881814)

Change-Id: Idc16ae64b1a0e7f79b8a3ff5da6854fbab7867d2
diff --git a/src/com/android/launcher3/CellLayout.java b/src/com/android/launcher3/CellLayout.java
index 5c6a694..b17f5b4 100644
--- a/src/com/android/launcher3/CellLayout.java
+++ b/src/com/android/launcher3/CellLayout.java
@@ -115,7 +115,6 @@
 
     // If we're actively dragging something over this screen, mIsDragOverlapping is true
     private boolean mIsDragOverlapping = false;
-    private final Point mDragCenter = new Point();
     boolean mUseActiveGlowBackground = false;
 
     // These arrays are used to implement the drag visualization on x-large screens.
@@ -1204,12 +1203,6 @@
         final int oldDragCellX = mDragCell[0];
         final int oldDragCellY = mDragCell[1];
 
-        if (v != null && dragOffset == null) {
-            mDragCenter.set(originX + (v.getWidth() / 2), originY + (v.getHeight() / 2));
-        } else {
-            mDragCenter.set(originX, originY);
-        }
-
         if (dragOutline == null && v == null) {
             return;
         }
@@ -1224,11 +1217,6 @@
             int left = topLeft[0];
             int top = topLeft[1];
 
-            // Offset icons by their padding
-            if (v instanceof BubbleTextView) {
-                top += v.getPaddingTop();
-            }
-
             if (v != null && dragOffset == null) {
                 // When drawing the drag outline, it did not account for margin offsets
                 // added by the view's parent.
@@ -1249,7 +1237,9 @@
                     // outline offset
                     left += dragOffset.x + ((mCellWidth * spanX) + ((spanX - 1) * mWidthGap)
                              - dragRegion.width()) / 2;
-                    top += dragOffset.y;
+                    int cHeight = getShortcutsAndWidgets().getCellContentHeight();
+                    int cellPaddingY = (int) Math.max(0, ((mCellHeight - cHeight) / 2f));
+                    top += dragOffset.y + cellPaddingY;
                 } else {
                     // Center the drag outline in the cell
                     left += ((mCellWidth * spanX) + ((spanX - 1) * mWidthGap)
diff --git a/src/com/android/launcher3/ShortcutAndWidgetContainer.java b/src/com/android/launcher3/ShortcutAndWidgetContainer.java
index fcd6f19..1cf4c11 100644
--- a/src/com/android/launcher3/ShortcutAndWidgetContainer.java
+++ b/src/com/android/launcher3/ShortcutAndWidgetContainer.java
@@ -123,6 +123,13 @@
         mIsHotseatLayout = isHotseat;
     }
 
+    int getCellContentHeight() {
+        final LauncherAppState app = LauncherAppState.getInstance();
+        final DeviceProfile grid = app.getDynamicGrid().getDeviceProfile();
+        return Math.min(getMeasuredHeight(), mIsHotseatLayout ?
+                grid.hotseatCellHeightPx : grid.cellHeightPx);
+    }
+
     public void measureChild(View child) {
         final LauncherAppState app = LauncherAppState.getInstance();
         final DeviceProfile grid = app.getDynamicGrid().getDeviceProfile();
@@ -137,7 +144,7 @@
                 // Widgets have their own padding, so skip
             } else {
                 // Otherwise, center the icon
-                int cHeight = mIsHotseatLayout ? grid.hotseatCellHeightPx : Math.min(getMeasuredHeight(), grid.cellHeightPx);
+                int cHeight = getCellContentHeight();
                 int cellPaddingY = (int) Math.max(0, ((lp.height - cHeight) / 2f));
                 int cellPaddingX = (int) (grid.edgeMarginPx / 2f);
                 child.setPadding(cellPaddingX, cellPaddingY, cellPaddingX, 0);