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
This commit is contained in:
Adam Cohen
2013-09-29 17:46:49 -07:00
parent 4ef75f523c
commit 2bf63d5205
3 changed files with 5 additions and 21 deletions

View File

@@ -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) {