From 2bf63d520576baa433a53a77e4e24386e40c1cda Mon Sep 17 00:00:00 2001 From: Adam Cohen Date: Sun, 29 Sep 2013 17:46:49 -0700 Subject: Fixing issue where you couldn't drag an item multiple pages (issue 10754544) -> This was caused by a strange race condition. The page snap time was equal to the delay to recheck whether to snap (in DragController). This meant that scrollRight()/Left() would get called, and the scroller would be finished however, the final computeScrollHelper() hadn't been called, so the mCurrentPage hadn't yet been incremented. -> Fixed the underlying race condition. -> Added suitable gap (150 ms) between the two delays. Change-Id: If700eb9e14d77a174e4395ca6933119bdb0da768 --- src/com/android/launcher3/DragController.java | 2 +- src/com/android/launcher3/PagedView.java | 12 ++---------- src/com/android/launcher3/Workspace.java | 12 ++---------- 3 files changed, 5 insertions(+), 21 deletions(-) (limited to 'src/com/android') diff --git a/src/com/android/launcher3/DragController.java b/src/com/android/launcher3/DragController.java index 3c1a04c2a..5b5c35c5a 100644 --- a/src/com/android/launcher3/DragController.java +++ b/src/com/android/launcher3/DragController.java @@ -50,7 +50,7 @@ public class DragController { public static int DRAG_ACTION_COPY = 1; private static final int SCROLL_DELAY = 500; - private static final int RESCROLL_DELAY = 750; + private static final int RESCROLL_DELAY = PagedView.PAGE_SNAP_ANIMATION_DURATION + 150; private static final boolean PROFILE_DRAWING_DURING_DRAG = false; diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java index 8cdd8e2cc..9cfb3d911 100644 --- a/src/com/android/launcher3/PagedView.java +++ b/src/com/android/launcher3/PagedView.java @@ -2153,19 +2153,11 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc } public void scrollLeft() { - if (mScroller.isFinished()) { - if (mCurrentPage > 0) snapToPage(mCurrentPage - 1); - } else { - if (mNextPage > 0) snapToPage(mNextPage - 1); - } + if (getNextPage() > 0) snapToPage(getNextPage() - 1); } public void scrollRight() { - if (mScroller.isFinished()) { - if (mCurrentPage < getChildCount() -1) snapToPage(mCurrentPage + 1); - } else { - if (mNextPage < getChildCount() -1) snapToPage(mNextPage + 1); - } + if (getNextPage() < getChildCount() -1) snapToPage(getNextPage() + 1); } public int getPageForView(View v) { diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 7f6964f0f..baddc2dab 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -1748,25 +1748,17 @@ public class Workspace extends SmoothPagedView protected void onStartReordering() { super.onStartReordering(); - int count = getChildCount(); - for (int i = 0; i < count; i++) { - ((CellLayout) getChildAt(i)).setUseActiveGlowBackground(true); - } showOutlines(); - // Reordering handles its own animations, disable the automatic ones. setLayoutTransition(null); } protected void onEndReordering() { super.onEndReordering(); - int count = getChildCount(); - for (int i = 0; i < count; i++) { - ((CellLayout) getChildAt(i)).setUseActiveGlowBackground(false); - } - hideOutlines(); + hideOutlines(); mScreenOrder.clear(); + int count = getChildCount(); for (int i = 0; i < count; i++) { CellLayout cl = ((CellLayout) getChildAt(i)); mScreenOrder.add(getIdForScreen(cl)); -- cgit v1.2.3