Fix cell size calculation in large screen devices
Test: Digital clock widget is no longer cropped.
Bug: 184966000, 194784402
Change-Id: I26c406da1e10232019f34620a4d2bc0dbafcbb31
diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java
index 740bf5a..a2487e4 100644
--- a/src/com/android/launcher3/DeviceProfile.java
+++ b/src/com/android/launcher3/DeviceProfile.java
@@ -302,8 +302,10 @@
: res.getDimensionPixelSize(R.dimen.dynamic_grid_cell_layout_padding);
if (isTwoPanels) {
- cellLayoutPaddingLeftRightPx =
- res.getDimensionPixelSize(R.dimen.two_panel_home_side_padding);
+ cellLayoutPaddingLeftRightPx = res.getDimensionPixelSize(
+ isLandscape
+ ? R.dimen.two_panels_home_side_padding_landscape
+ : R.dimen.two_panels_home_side_padding_portrait);
cellLayoutBottomPaddingPx = 0;
} else if (isLandscape) {
cellLayoutPaddingLeftRightPx = 0;
@@ -752,8 +754,14 @@
// Since we are only concerned with the overall padding, layout direction does
// not matter.
Point padding = getTotalWorkspacePadding();
- result.x = calculateCellWidth(availableWidthPx - padding.x
- - cellLayoutPaddingLeftRightPx * 2, cellLayoutBorderSpacingPx, inv.numColumns);
+ // availableWidthPx is the screen width of the device. In 2 panels mode, each panel should
+ // only have half of the screen width. In addition, there is only cellLayoutPadding in the
+ // left side of the left panel and the right side of the right panel. There is no
+ // cellLayoutPadding in the middle.
+ int screenWidthPx = isTwoPanels
+ ? availableWidthPx / 2 - padding.x - cellLayoutPaddingLeftRightPx
+ : availableWidthPx - padding.x - cellLayoutPaddingLeftRightPx * 2;
+ result.x = calculateCellWidth(screenWidthPx, cellLayoutBorderSpacingPx, inv.numColumns);
result.y = calculateCellHeight(availableHeightPx - padding.y
- cellLayoutBottomPaddingPx, cellLayoutBorderSpacingPx, inv.numRows);
return result;
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index 5200456..9a8b80d 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -327,8 +327,6 @@
int paddingLeftRight = grid.cellLayoutPaddingLeftRightPx;
int paddingBottom = grid.cellLayoutBottomPaddingPx;
- int twoPanelLandscapeSidePadding = paddingLeftRight * 2;
- int twoPanelPortraitSidePadding = paddingLeftRight / 2;
int panelCount = getPanelCount();
for (int i = mWorkspaceScreens.size() - 1; i >= 0; i--) {
@@ -336,13 +334,11 @@
int paddingRight = paddingLeftRight;
if (panelCount > 1) {
if (i % panelCount == 0) { // left side panel
- paddingLeft = grid.isLandscape ? twoPanelLandscapeSidePadding
- : twoPanelPortraitSidePadding;
+ paddingLeft = paddingLeftRight;
paddingRight = 0;
} else if (i % panelCount == panelCount - 1) { // right side panel
paddingLeft = 0;
- paddingRight = grid.isLandscape ? twoPanelLandscapeSidePadding
- : twoPanelPortraitSidePadding;
+ paddingRight = paddingLeftRight;
} else { // middle panel
paddingLeft = 0;
paddingRight = 0;