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

Change-Id: Idc16ae64b1a0e7f79b8a3ff5da6854fbab7867d2
This commit is contained in:
Winson Chung
2013-10-08 17:00:19 -07:00
parent 82a9bd2c03
commit 69737c3e49
2 changed files with 11 additions and 14 deletions
+3 -13
View File
@@ -115,7 +115,6 @@ public class CellLayout extends ViewGroup {
// 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 @@ public class CellLayout extends ViewGroup {
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 @@ public class CellLayout extends ViewGroup {
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 @@ public class CellLayout extends ViewGroup {
// 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)
@@ -123,6 +123,13 @@ public class ShortcutAndWidgetContainer extends ViewGroup {
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 @@ public class ShortcutAndWidgetContainer extends ViewGroup {
// 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);