Merge "Fix a bug where requestDisallowInterceptTouchEvent does not get called when scrolling is resumed after stopping a fling." into gingerbread

This commit is contained in:
Adam Powell
2010-06-23 10:26:44 -07:00
committed by Android (Google) Code Review
2 changed files with 10 additions and 1 deletions

View File

@ -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.

View File

@ -2056,6 +2056,14 @@ public abstract class AbsListView extends AdapterView<ListAdapter> 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;