From 88c5d2d8eb895904f4626fb5d2f3e693327de650 Mon Sep 17 00:00:00 2001 From: Adam Cohen Date: Wed, 9 May 2012 21:34:33 -0700 Subject: [PATCH] Fix NPE when dragging widget with preview not yet loaded (issue 6282761) Change-Id: I95638884bd6548f391135427a20566933ab757c0 --- .../android/launcher2/AppsCustomizePagedView.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java index 54af0803ef..21872b9147 100644 --- a/src/com/android/launcher2/AppsCustomizePagedView.java +++ b/src/com/android/launcher2/AppsCustomizePagedView.java @@ -641,12 +641,19 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen } } - private void beginDraggingWidget(View v) { + private boolean beginDraggingWidget(View v) { mDraggingWidget = true; // Get the widget preview as the drag representation ImageView image = (ImageView) v.findViewById(R.id.widget_preview); PendingAddItemInfo createItemInfo = (PendingAddItemInfo) v.getTag(); + // If the ImageView doesn't have a drawable yet, the widget preview hasn't been loaded and + // we abort the drag. + if (image.getDrawable() == null) { + mDraggingWidget = false; + return false; + } + // Compose the drag image Bitmap preview; Bitmap outline; @@ -712,6 +719,7 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen DragController.DRAG_ACTION_COPY, null, scale); outline.recycle(); preview.recycle(); + return true; } @Override @@ -721,7 +729,9 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen if (v instanceof PagedViewIcon) { beginDraggingApplication(v); } else if (v instanceof PagedViewWidget) { - beginDraggingWidget(v); + if (!beginDraggingWidget(v)) { + return false; + } } // We delay entering spring-loaded mode slightly to make sure the UI