| Index: chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/eventfilter/OverlayPanelEventFilter.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/eventfilter/OverlayPanelEventFilter.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/eventfilter/OverlayPanelEventFilter.java
|
| index 1c80f918e00e7c36b309220a00d17a787dfd9bb8..2fab8f4b9d995c5c3b7f88cc4033d68e51b73e6d 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/eventfilter/OverlayPanelEventFilter.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/eventfilter/OverlayPanelEventFilter.java
|
| @@ -110,6 +110,9 @@ public class OverlayPanelEventFilter extends GestureEventFilter {
|
| /** The initial Y position of the current gesture. */
|
| private float mInitialEventY;
|
|
|
| + /** Whether or not the superclass has seen a down event. */
|
| + private boolean mFilterHadDownEvent;
|
| +
|
| private class SwipeRecognizerImpl extends SwipeRecognizer {
|
| public SwipeRecognizerImpl(Context context) {
|
| super(context);
|
| @@ -328,6 +331,14 @@ public class OverlayPanelEventFilter extends GestureEventFilter {
|
| */
|
| private void propagateEvent(MotionEvent e, EventTarget target) {
|
| if (target == EventTarget.PANEL) {
|
| + // Make sure the internal gesture detector has seen at least on down event.
|
| + if (e.getActionMasked() == MotionEvent.ACTION_DOWN) mFilterHadDownEvent = true;
|
| + if (!mFilterHadDownEvent) {
|
| + MotionEvent down = MotionEvent.obtain(e);
|
| + down.setAction(MotionEvent.ACTION_DOWN);
|
| + super.onTouchEventInternal(down);
|
| + mFilterHadDownEvent = true;
|
| + }
|
| super.onTouchEventInternal(e);
|
| } else if (target == EventTarget.CONTENT_VIEW) {
|
| propagateEventToContentViewCore(e);
|
|
|