diff options
author | Adam Cohen <adamcohen@google.com> | 2013-11-04 14:42:52 -0800 |
---|---|---|
committer | Adam Cohen <adamcohen@google.com> | 2013-11-04 14:46:43 -0800 |
commit | cae7f573de57a13972a6a215484356f6b4779382 (patch) | |
tree | 5585a31ee8c7956befb4cec7a6f83fb7991846c4 /src/com/android/launcher3/PagedView.java | |
parent | f72693d907c67a539cdb6643f157fc0ba28c4268 (diff) | |
download | android_packages_apps_Trebuchet-cae7f573de57a13972a6a215484356f6b4779382.tar.gz android_packages_apps_Trebuchet-cae7f573de57a13972a6a215484356f6b4779382.tar.bz2 android_packages_apps_Trebuchet-cae7f573de57a13972a6a215484356f6b4779382.zip |
Fix problem with where PagedView could get stuck (issue 11314889)
-> Also a small code cleanup where something was very weird
Change-Id: I3612e1de924a83d1a91b752f3b9e1e239a8db0ea
Diffstat (limited to 'src/com/android/launcher3/PagedView.java')
-rw-r--r-- | src/com/android/launcher3/PagedView.java | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java index 9b891e45a..121f22d3c 100644 --- a/src/com/android/launcher3/PagedView.java +++ b/src/com/android/launcher3/PagedView.java @@ -151,6 +151,8 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc protected int mTouchState = TOUCH_STATE_REST; protected boolean mForceScreenScrolled = false; + private boolean mScrollAbortedFromIntercept = false; + protected OnLongClickListener mLongClickListener; @@ -1374,6 +1376,7 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc final boolean finishedScrolling = (mScroller.isFinished() || xDist < mTouchSlop); if (finishedScrolling) { mTouchState = TOUCH_STATE_REST; + mScrollAbortedFromIntercept = true; abortScrollerAnimation(false); } else { if (isTouchPointInViewportWithBuffer((int) mDownMotionX, (int) mDownMotionY)) { @@ -1401,6 +1404,9 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: + if (mScrollAbortedFromIntercept) { + snapToDestination(); + } resetTouchState(); break; @@ -1859,15 +1865,6 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc snapToPageWithVelocity(finalPage, velocityX); } else { snapToDestination(); - } } else if (mTouchState == TOUCH_STATE_PREV_PAGE) { - // at this point we have not moved beyond the touch slop - // (otherwise mTouchState would be TOUCH_STATE_SCROLLING), so - // we can just page - int nextPage = Math.max(0, mCurrentPage - 1); - if (nextPage != mCurrentPage) { - snapToPage(nextPage); - } else { - snapToDestination(); } } else { if (!mScroller.isFinished()) { @@ -1882,6 +1879,16 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc getScrollY(), vX, 0, Integer.MIN_VALUE, Integer.MAX_VALUE, 0, 0); invalidate(); } + } else if (mTouchState == TOUCH_STATE_PREV_PAGE) { + // at this point we have not moved beyond the touch slop + // (otherwise mTouchState would be TOUCH_STATE_SCROLLING), so + // we can just page + int nextPage = Math.max(0, mCurrentPage - 1); + if (nextPage != mCurrentPage) { + snapToPage(nextPage); + } else { + snapToDestination(); + } } else if (mTouchState == TOUCH_STATE_NEXT_PAGE) { // at this point we have not moved beyond the touch slop // (otherwise mTouchState would be TOUCH_STATE_SCROLLING), so @@ -1953,6 +1960,7 @@ public abstract class PagedView extends ViewGroup implements ViewGroup.OnHierarc releaseVelocityTracker(); endReordering(); mCancelTap = false; + mScrollAbortedFromIntercept = false; mTouchState = TOUCH_STATE_REST; mActivePointerId = INVALID_POINTER; } |