diff options
author | Ricardo Cerqueira <cyanogenmod@cerqueira.org> | 2010-12-04 03:56:01 +0000 |
---|---|---|
committer | Ricardo Cerqueira <cyanogenmod@cerqueira.org> | 2010-12-04 03:56:01 +0000 |
commit | 34f354cf66dd4e777422019ae77346b02440b59d (patch) | |
tree | dc51f88023dddc91668a50d3d1ee4d10551a7fc4 | |
parent | 04d8fc705dcd80dd0a91f9f811c6aa8fe7329ba6 (diff) | |
download | frameworks_base-34f354cf66dd4e777422019ae77346b02440b59d.zip frameworks_base-34f354cf66dd4e777422019ae77346b02440b59d.tar.gz frameworks_base-34f354cf66dd4e777422019ae77346b02440b59d.tar.bz2 |
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
-rw-r--r-- | core/java/android/widget/AbsListView.java | 20 |
1 files 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<ListAdapter> 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<ListAdapter> 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; |