diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index ad87451fa9..135b88d5b7 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -1169,6 +1169,7 @@ public class Launcher extends StatefulActivity } AbstractFloatingView.closeAllOpenViewsExcept(this, false, TYPE_REBIND_SAFE); + DragView.removeAllViews(this); TraceHelper.INSTANCE.endSection(traceToken); } diff --git a/src/com/android/launcher3/dragndrop/DragView.java b/src/com/android/launcher3/dragndrop/DragView.java index a3945fdba8..0264ae21be 100644 --- a/src/com/android/launcher3/dragndrop/DragView.java +++ b/src/com/android/launcher3/dragndrop/DragView.java @@ -578,4 +578,19 @@ public abstract class DragView extends Fram iv.setImageDrawable(drawable); return iv; } + + /** + * Removes any stray DragView from the DragLayer. + */ + public static void removeAllViews(ActivityContext activity) { + BaseDragLayer dragLayer = activity.getDragLayer(); + // Iterate in reverse order. DragView is added later to the dragLayer, + // and will be one of the last views. + for (int i = dragLayer.getChildCount() - 1; i >= 0; i--) { + View child = dragLayer.getChildAt(i); + if (child instanceof DragView) { + dragLayer.removeView(child); + } + } + } }