From 2374abfda3e53f84e005df8923170308e4df8c03 Mon Sep 17 00:00:00 2001 From: Adam Cohen Date: Tue, 16 Apr 2013 14:56:57 -0700 Subject: Making folders work in RTL (issue 8569879) Change-Id: I3c726b96a2181c07be38cd84cf220e29e9b36f78 --- src/com/android/launcher2/CellLayout.java | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) (limited to 'src/com/android/launcher2/CellLayout.java') diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java index ddb9b6418..024bb37af 100644 --- a/src/com/android/launcher2/CellLayout.java +++ b/src/com/android/launcher2/CellLayout.java @@ -283,7 +283,9 @@ public class CellLayout extends ViewGroup { mForegroundRect = new Rect(); mShortcutsAndWidgets = new ShortcutAndWidgetContainer(context); - mShortcutsAndWidgets.setCellDimensions(mCellWidth, mCellHeight, mWidthGap, mHeightGap); + mShortcutsAndWidgets.setCellDimensions(mCellWidth, mCellHeight, mWidthGap, mHeightGap, + mCountX); + addView(mShortcutsAndWidgets); } @@ -331,9 +333,16 @@ public class CellLayout extends ViewGroup { mOccupied = new boolean[mCountX][mCountY]; mTmpOccupied = new boolean[mCountX][mCountY]; mTempRectStack.clear(); + mShortcutsAndWidgets.setCellDimensions(mCellWidth, mCellHeight, mWidthGap, mHeightGap, + mCountX); requestLayout(); } + // Set whether or not to invert the layout horizontally if the layout is in RTL mode. + public void setInvertIfRtl(boolean invert) { + mShortcutsAndWidgets.setInvertIfRtl(invert); + } + private void invalidateBubbleTextView(BubbleTextView icon) { final int padding = icon.getPressedOrFocusedBackgroundPadding(); invalidate(icon.getLeft() + getPaddingLeft() - padding, @@ -985,7 +994,8 @@ public class CellLayout extends ViewGroup { int vFreeSpace = vSpace - (mCountY * mCellHeight); mWidthGap = Math.min(mMaxGap, numWidthGaps > 0 ? (hFreeSpace / numWidthGaps) : 0); mHeightGap = Math.min(mMaxGap,numHeightGaps > 0 ? (vFreeSpace / numHeightGaps) : 0); - mShortcutsAndWidgets.setCellDimensions(mCellWidth, mCellHeight, mWidthGap, mHeightGap); + mShortcutsAndWidgets.setCellDimensions(mCellWidth, mCellHeight, mWidthGap, mHeightGap, + mCountX); } else { mWidthGap = mOriginalWidthGap; mHeightGap = mOriginalHeightGap; @@ -3242,12 +3252,17 @@ out: for (int i = x; i < x + spanX - 1 && x < xCount; i++) { this.cellVSpan = cellVSpan; } - public void setup(int cellWidth, int cellHeight, int widthGap, int heightGap) { + public void setup(int cellWidth, int cellHeight, int widthGap, int heightGap, + boolean invertHorizontally, int colCount) { if (isLockedToGrid) { final int myCellHSpan = cellHSpan; final int myCellVSpan = cellVSpan; - final int myCellX = useTmpCoords ? tmpCellX : cellX; - final int myCellY = useTmpCoords ? tmpCellY : cellY; + int myCellX = useTmpCoords ? tmpCellX : cellX; + int myCellY = useTmpCoords ? tmpCellY : cellY; + + if (invertHorizontally) { + myCellX = colCount - myCellX - cellHSpan; + } width = myCellHSpan * cellWidth + ((myCellHSpan - 1) * widthGap) - leftMargin - rightMargin; -- cgit v1.2.3