From 110486f932510fb49bfeff978b0b0e0237ee0656 Mon Sep 17 00:00:00 2001 From: Adam Powell Date: Tue, 22 Jun 2010 17:14:44 -0700 Subject: Fix a bug where requestDisallowInterceptTouchEvent does not get called when scrolling is resumed after stopping a fling. Change-Id: I6796c5082cb81b3116de5baf1f27fe3addb40d00 --- core/java/android/view/ViewGroup.java | 3 ++- core/java/android/widget/AbsListView.java | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index eca583f..e7b6c50 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -223,8 +223,9 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager /** * When set, this ViewGroup should not intercept touch events. + * {@hide} */ - private static final int FLAG_DISALLOW_INTERCEPT = 0x80000; + protected static final int FLAG_DISALLOW_INTERCEPT = 0x80000; /** * Indicates which types of drawing caches are to be kept in memory. diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index fcfecb3..6cfeb68 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -2056,6 +2056,14 @@ public abstract class AbsListView extends AdapterView implements Te } if (y != mLastY) { + // We may be here after stopping a fling and continuing to scroll. + // If so, we haven't disallowed intercepting touch events yet. + // Make sure that we do so in case we're in a parent that can intercept. + if ((mGroupFlags & FLAG_DISALLOW_INTERCEPT) == 0 && + Math.abs(deltaY) > mTouchSlop) { + requestDisallowInterceptTouchEvent(true); + } + deltaY -= mMotionCorrection; int incrementalDeltaY = mLastY != Integer.MIN_VALUE ? y - mLastY : deltaY; -- cgit v1.1