More drag/drop adjustments:
* Make View.onDragEvent() public instead of protected.
* No longer @hide View.startDrag()
* Properly manage the boundaries of DRAG_STARTED / DRAG_ENDED notifications
to windows (and as a result don't send bogus empty DRAG_STARTED events or
double-recycle pooled DragEvents)
Change-Id: Ib75f5c1417640c82a5b043c555e02d6e6f4b4d9c
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 35b806a..472f7b4 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -9898,11 +9898,10 @@
}
/**
- * Drag and drop. App calls startDrag(), then callbacks to onMeasureDragThumbnail()
- * and onDrawDragThumbnail() happen, then the drag operation is handed over to the
- * OS.
+ * Drag and drop. App calls startDrag(), then callbacks to the thumbnail builder's
+ * onProvideThumbnailMetrics() and onDrawThumbnail() methods happen, then the drag
+ * operation is handed over to the OS.
* !!! TODO: real docs
- * @hide
*/
public final boolean startDrag(ClipData data, DragThumbnailBuilder thumbBuilder,
boolean myWindowOnly) {
@@ -10027,7 +10026,7 @@
* For DRAG_ENDED_EVENT, the 'event' argument may be null. The view should return
* to its normal visual state.
*/
- protected boolean onDragEvent(DragEvent event) {
+ public boolean onDragEvent(DragEvent event) {
return false;
}
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 5ebc981..5b3a091 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -938,11 +938,16 @@
if (ViewDebug.DEBUG_DRAG) Log.d(View.VIEW_LOG_TAG, "Drop event: " + event);
View target = findFrontmostDroppableChildAt(event.mX, event.mY, mLocalPoint);
if (target != null) {
+ if (ViewDebug.DEBUG_DRAG) Log.d(View.VIEW_LOG_TAG, " dispatch drop to " + target);
event.mX = mLocalPoint.x;
event.mY = mLocalPoint.y;
retval = target.dispatchDragEvent(event);
event.mX = tx;
event.mY = ty;
+ } else {
+ if (ViewDebug.DEBUG_DRAG) {
+ Log.d(View.VIEW_LOG_TAG, " not dropped on an accepting view");
+ }
}
} break;
}