diff options
author | Winson Chung <winsonc@google.com> | 2013-04-02 11:04:07 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-04-02 11:04:07 -0700 |
commit | 5164789faf93604b3a4569366b63f8e34ee1b4a9 (patch) | |
tree | 85f2369be584c47eb3277a117750fa4a3c5dd04a | |
parent | a819b2c526d6abb7b212ee21dc64d4ac832f2c95 (diff) | |
parent | c7322c3146ab96bbc43aac8c5be271e8f97b5124 (diff) | |
download | android_packages_apps_Trebuchet-5164789faf93604b3a4569366b63f8e34ee1b4a9.tar.gz android_packages_apps_Trebuchet-5164789faf93604b3a4569366b63f8e34ee1b4a9.tar.bz2 android_packages_apps_Trebuchet-5164789faf93604b3a4569366b63f8e34ee1b4a9.zip |
am c7322c31: am fe1fe268: Fixing RTL issues with apps ordering and snapping to page. (Bug 8238938, Bug 8374016, Bug 8373578)
* commit 'c7322c3146ab96bbc43aac8c5be271e8f97b5124':
Fixing RTL issues with apps ordering and snapping to page. (Bug 8238938, Bug 8374016, Bug 8373578)
-rw-r--r-- | src/com/android/launcher2/AppsCustomizePagedView.java | 4 | ||||
-rw-r--r-- | src/com/android/launcher2/DragController.java | 16 | ||||
-rw-r--r-- | src/com/android/launcher2/DragLayer.java | 12 |
3 files changed, 24 insertions, 8 deletions
diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java index 83bc1fd40..a4a9ea9da 100644 --- a/src/com/android/launcher2/AppsCustomizePagedView.java +++ b/src/com/android/launcher2/AppsCustomizePagedView.java @@ -998,6 +998,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen public void syncAppsPageItems(int page, boolean immediate) { // ensure that we have the right number of items on the pages + final boolean isRtl = isLayoutRtl(); int numCells = mCellCountX * mCellCountY; int startIndex = page * numCells; int endIndex = Math.min(startIndex + numCells, mApps.size()); @@ -1019,6 +1020,9 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen int index = i - startIndex; int x = index % mCellCountX; int y = index / mCellCountX; + if (isRtl) { + x = mCellCountX - x - 1; + } layout.addViewToCellLayout(icon, -1, i, new PagedViewCellLayout.LayoutParams(x,y, 1,1)); items.add(info); diff --git a/src/com/android/launcher2/DragController.java b/src/com/android/launcher2/DragController.java index 3e586bf61..2eace4166 100644 --- a/src/com/android/launcher2/DragController.java +++ b/src/com/android/launcher2/DragController.java @@ -516,22 +516,26 @@ public class DragController { mLastTouch[0] = x; mLastTouch[1] = y; final int delay = mDistanceSinceScroll < slop ? RESCROLL_DELAY : SCROLL_DELAY; + final DragLayer dragLayer = mLauncher.getDragLayer(); + final boolean isRtl = (dragLayer.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL); + final int forwardDirection = isRtl ? SCROLL_RIGHT : SCROLL_LEFT; + final int backwardsDirection = isRtl ? SCROLL_LEFT : SCROLL_RIGHT; if (x < mScrollZone) { if (mScrollState == SCROLL_OUTSIDE_ZONE) { mScrollState = SCROLL_WAITING_IN_ZONE; - if (mDragScroller.onEnterScrollArea(x, y, SCROLL_LEFT)) { - mLauncher.getDragLayer().onEnterScrollArea(SCROLL_LEFT); - mScrollRunnable.setDirection(SCROLL_LEFT); + if (mDragScroller.onEnterScrollArea(x, y, forwardDirection)) { + dragLayer.onEnterScrollArea(forwardDirection); + mScrollRunnable.setDirection(forwardDirection); mHandler.postDelayed(mScrollRunnable, delay); } } } else if (x > mScrollView.getWidth() - mScrollZone) { if (mScrollState == SCROLL_OUTSIDE_ZONE) { mScrollState = SCROLL_WAITING_IN_ZONE; - if (mDragScroller.onEnterScrollArea(x, y, SCROLL_RIGHT)) { - mLauncher.getDragLayer().onEnterScrollArea(SCROLL_RIGHT); - mScrollRunnable.setDirection(SCROLL_RIGHT); + if (mDragScroller.onEnterScrollArea(x, y, backwardsDirection)) { + dragLayer.onEnterScrollArea(backwardsDirection); + mScrollRunnable.setDirection(backwardsDirection); mHandler.postDelayed(mScrollRunnable, delay); } } diff --git a/src/com/android/launcher2/DragLayer.java b/src/com/android/launcher2/DragLayer.java index e870d0aa1..a819cb7a6 100644 --- a/src/com/android/launcher2/DragLayer.java +++ b/src/com/android/launcher2/DragLayer.java @@ -742,6 +742,13 @@ public class DragLayer extends FrameLayout implements ViewGroup.OnHierarchyChang invalidate(); } + /** + * Note: this is a reimplementation of View.isLayoutRtl() since that is currently hidden api. + */ + private boolean isLayoutRtl() { + return (getLayoutDirection() == LAYOUT_DIRECTION_RTL); + } + @Override protected void dispatchDraw(Canvas canvas) { super.dispatchDraw(canvas); @@ -753,8 +760,9 @@ public class DragLayer extends FrameLayout implements ViewGroup.OnHierarchyChang getDescendantRectRelativeToSelf(workspace.getChildAt(0), childRect); int page = workspace.getNextPage(); - CellLayout leftPage = (CellLayout) workspace.getChildAt(page - 1); - CellLayout rightPage = (CellLayout) workspace.getChildAt(page + 1); + final boolean isRtl = isLayoutRtl(); + CellLayout leftPage = (CellLayout) workspace.getChildAt(isRtl ? page + 1 : page - 1); + CellLayout rightPage = (CellLayout) workspace.getChildAt(isRtl ? page - 1 : page + 1); if (leftPage != null && leftPage.getIsDragOverlapping()) { mLeftHoverDrawable.setBounds(0, childRect.top, |