From fe411c8e31f44a5a977d76885e9b20dece57962d Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Thu, 26 Sep 2013 16:07:17 -0700 Subject: Fixing issue where incorrect min/max widths/heights were being reported to widgets. (Bug 10940505) --- src/com/android/launcher3/CellLayout.java | 2 ++ src/com/android/launcher3/DynamicGrid.java | 3 ++- src/com/android/launcher3/Workspace.java | 22 ++++++++++++++-------- 3 files changed, 18 insertions(+), 9 deletions(-) (limited to 'src/com') diff --git a/src/com/android/launcher3/CellLayout.java b/src/com/android/launcher3/CellLayout.java index 22492ac31..a114ec383 100644 --- a/src/com/android/launcher3/CellLayout.java +++ b/src/com/android/launcher3/CellLayout.java @@ -927,6 +927,8 @@ public class CellLayout extends ViewGroup { return r; } + /** Return a rect that has the cellWidth/cellHeight (left, top), and + * widthGap/heightGap (right, bottom) */ static void getMetrics(Rect metrics, int paddedMeasureWidth, int paddedMeasureHeight, int countX, int countY) { LauncherAppState app = LauncherAppState.getInstance(); diff --git a/src/com/android/launcher3/DynamicGrid.java b/src/com/android/launcher3/DynamicGrid.java index 495e930f9..0756c88b7 100644 --- a/src/com/android/launcher3/DynamicGrid.java +++ b/src/com/android/launcher3/DynamicGrid.java @@ -290,7 +290,8 @@ class DeviceProfile { Rect getWorkspacePadding(int orientation) { Rect padding = new Rect(); - if (isVerticalBarLayout()) { + if (orientation == CellLayout.LANDSCAPE && + transposeLayoutWithOrientation) { // Pad the left and right of the workspace with search/hotseat bar sizes padding.set(searchBarSpaceHeightPx, edgeMarginPx, hotseatBarHeightPx, edgeMarginPx); diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 1425f7ff5..0eca3af8b 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -2747,6 +2747,8 @@ public class Workspace extends SmoothPagedView } } + /** Return a rect that has the cellWidth/cellHeight (left, top), and + * widthGap/heightGap (right, bottom) */ static Rect getCellLayoutMetrics(Launcher launcher, int orientation) { LauncherAppState app = LauncherAppState.getInstance(); DeviceProfile grid = app.getDynamicGrid().getDeviceProfile(); @@ -2758,24 +2760,28 @@ public class Workspace extends SmoothPagedView display.getCurrentSizeRange(smallestSize, largestSize); int countX = (int) grid.numColumns; int countY = (int) grid.numRows; + int constrainedLongEdge = largestSize.y; + int constrainedShortEdge = smallestSize.y; if (orientation == CellLayout.LANDSCAPE) { if (mLandscapeCellLayoutMetrics == null) { Rect padding = grid.getWorkspacePadding(CellLayout.LANDSCAPE); - int width = largestSize.x - padding.left - padding.right; - int height = smallestSize.y - padding.top - padding.bottom; + int width = constrainedLongEdge - padding.left - padding.right; + int height = constrainedShortEdge - padding.top - padding.bottom; mLandscapeCellLayoutMetrics = new Rect(); - CellLayout.getMetrics(mLandscapeCellLayoutMetrics, width, height, - countX, countY); + mLandscapeCellLayoutMetrics.set( + grid.calculateCellWidth(width, countX), + grid.calculateCellHeight(height, countY), 0, 0); } return mLandscapeCellLayoutMetrics; } else if (orientation == CellLayout.PORTRAIT) { if (mPortraitCellLayoutMetrics == null) { Rect padding = grid.getWorkspacePadding(CellLayout.PORTRAIT); - int width = smallestSize.x - padding.left - padding.right; - int height = largestSize.y - padding.top - padding.bottom; + int width = constrainedShortEdge - padding.left - padding.right; + int height = constrainedLongEdge - padding.top - padding.bottom; mPortraitCellLayoutMetrics = new Rect(); - CellLayout.getMetrics(mPortraitCellLayoutMetrics, width, height, - countX, countY); + mPortraitCellLayoutMetrics.set( + grid.calculateCellWidth(width, countX), + grid.calculateCellHeight(height, countY), 0, 0); } return mPortraitCellLayoutMetrics; } -- cgit v1.2.3