From 34f354cf66dd4e777422019ae77346b02440b59d Mon Sep 17 00:00:00 2001 From: Ricardo Cerqueira Date: Sat, 4 Dec 2010 03:56:01 +0000 Subject: Make sure overscroll isn't applied in views it shouldn't be These checks should've been there in the first place. If overscroll can't be applied, touchMode can never be OVERSCROLL nor OVERFLING. Change-Id: I7f60ee456c0109f792883fcfdfdecce8339830c0 --- core/java/android/widget/AbsListView.java | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index 39d2387..f52e00b 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -1967,7 +1967,7 @@ public abstract class AbsListView extends AdapterView implements Te // Check if we have moved far enough that it looks more like a // scroll than a tap final int distance = Math.abs(deltaY); - final boolean overscroll = mScrollY != 0; + final boolean overscroll = mScrollY != 0 && (getOverscrollMode() != OVERSCROLL_NEVER); if (overscroll || distance > mTouchSlop) { createScrollingCache(); mTouchMode = overscroll ? TOUCH_MODE_OVERSCROLL : TOUCH_MODE_SCROLL; @@ -2147,15 +2147,17 @@ public abstract class AbsListView extends AdapterView implements Te int motionPosition = findMotionRow(y); if (motionPosition >= 0) { final View motionView = getChildAt(motionPosition - mFirstPosition); - // Apply overscroll - final int motionViewRealTop = motionView.getTop(); - - int overscroll = -incrementalDeltaY - + if (getOverscrollMode() != OVERSCROLL_NEVER) { + // Apply overscroll + final int motionViewRealTop = motionView.getTop(); + + int overscroll = -incrementalDeltaY - (motionViewRealTop - mMotionViewOriginalTop); - overscrollBy(0, overscroll, 0, mScrollY, 0, 0, - 0, getOverscrollMax(), true); - mTouchMode = TOUCH_MODE_OVERSCROLL; - invalidate(); + overscrollBy(0, overscroll, 0, mScrollY, 0, 0, + 0, getOverscrollMax(), true); + mTouchMode = TOUCH_MODE_OVERSCROLL; + invalidate(); + } mMotionViewOriginalTop = motionView.getTop(); } mMotionY = y; -- cgit v1.1