summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWinson Chung <winsonc@google.com>2013-04-02 11:04:07 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-04-02 11:04:07 -0700
commit5164789faf93604b3a4569366b63f8e34ee1b4a9 (patch)
tree85f2369be584c47eb3277a117750fa4a3c5dd04a
parenta819b2c526d6abb7b212ee21dc64d4ac832f2c95 (diff)
parentc7322c3146ab96bbc43aac8c5be271e8f97b5124 (diff)
downloadandroid_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.java4
-rw-r--r--src/com/android/launcher2/DragController.java16
-rw-r--r--src/com/android/launcher2/DragLayer.java12
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,