diff options
-rw-r--r-- | core/java/android/view/ViewGroup.java | 18 | ||||
-rw-r--r-- | core/java/android/view/ViewRoot.java | 1 | ||||
-rw-r--r-- | services/java/com/android/server/WindowManagerService.java | 2 |
3 files changed, 12 insertions, 9 deletions
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index d1781cc..115431e 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -935,15 +935,17 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } break; case DragEvent.ACTION_DRAG_ENDED: { - // If a child was notified about an ongoing drag, it's told that it's over - for (View child : mDragNotifiedChildren) { - child.dispatchDragEvent(event); - } - // Release the bookkeeping now that the drag lifecycle has ended - mDragNotifiedChildren.clear(); - mCurrentDrag.recycle(); - mCurrentDrag = null; + if (mDragNotifiedChildren != null) { + for (View child : mDragNotifiedChildren) { + // If a child was notified about an ongoing drag, it's told that it's over + child.dispatchDragEvent(event); + } + + mDragNotifiedChildren.clear(); + mCurrentDrag.recycle(); + mCurrentDrag = null; + } // We consider drag-ended to have been handled if one of our children // had offered to handle the drag. diff --git a/core/java/android/view/ViewRoot.java b/core/java/android/view/ViewRoot.java index 961b633..1f15628 100644 --- a/core/java/android/view/ViewRoot.java +++ b/core/java/android/view/ViewRoot.java @@ -2803,6 +2803,7 @@ public final class ViewRoot extends Handler implements ViewParent, // Report the drop result when we're done if (what == DragEvent.ACTION_DROP) { + mDragDescription = null; try { Log.i(TAG, "Reporting drop result: " + result); sWindowSession.reportDropResult(mWindow, result); diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java index 3e930ae..bbb2228 100644 --- a/services/java/com/android/server/WindowManagerService.java +++ b/services/java/com/android/server/WindowManagerService.java @@ -583,7 +583,7 @@ public class WindowManagerService extends IWindowManager.Stub void broadcastDragStartedLw(final float touchX, final float touchY) { // Cache a base-class instance of the clip metadata so that parceling // works correctly in calling out to the apps. - mDataDescription = mData.getDescription(); + mDataDescription = (mData != null) ? mData.getDescription() : null; mNotifiedWindows.clear(); mDragInProgress = true; |