From 0394b2127f161ba55300f6e676424d892ec0df10 Mon Sep 17 00:00:00 2001 From: Yorke Lee Date: Thu, 10 Mar 2016 18:20:04 -0800 Subject: [PATCH] Fix for drag start event being incorrectly cached Since DRAG_END is now being delivered only to views that returned true from DRAG_STARTED, make sure to clear mCurrentDragStartEvent when returning false from DRAG_STARTED, to avoid incorrectly sending DRAG_STARTED events to children views on visibility changes. Bug: 27595763 Change-Id: Ic18628b48b474351e2433e871bf545657a6ebf52 --- core/java/android/view/ViewGroup.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index d29bc21ce60b1..56ee478956872 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -1382,6 +1382,13 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager if (mIsInterestedInDrag) { retval = true; } + + if (!retval) { + // Neither us nor any of our children are interested in this drag, so stop tracking + // the current drag event. + mCurrentDragStartEvent.recycle(); + mCurrentDragStartEvent = null; + } } break; case DragEvent.ACTION_DRAG_ENDED: {