Adding more checks to prevent unsync'd dragging states in customization drawer.

Change-Id: I7e4ed80d9bd5ce1e899827eafd0f44a88cce4346
diff --git a/src/com/android/launcher2/CustomizePagedView.java b/src/com/android/launcher2/CustomizePagedView.java
index 0aef4dd..d9a6612 100644
--- a/src/com/android/launcher2/CustomizePagedView.java
+++ b/src/com/android/launcher2/CustomizePagedView.java
@@ -308,8 +308,8 @@
     }
 
     public void setCustomizationFilter(CustomizationType filterType) {
-        mCustomizationType = filterType;
         cancelDragging();
+        mCustomizationType = filterType;
         if (getChildCount() > 0) {
             setCurrentPage(0);
             updateCurrentPageScroll();
@@ -504,58 +504,64 @@
         mLauncher.lockScreenOrientation();
         switch (mCustomizationType) {
         case WidgetCustomization: {
-            // Get the widget preview as the drag representation
-            final LinearLayout l = (LinearLayout) v;
-            final ImageView i = (ImageView) l.findViewById(R.id.widget_preview);
-            final Drawable icon = i.getDrawable();
-            Bitmap b = drawableToBitmap(icon, i);
-            PendingAddWidgetInfo createWidgetInfo = (PendingAddWidgetInfo) v.getTag();
+            if (v instanceof PagedViewWidget) {
+                // Get the widget preview as the drag representation
+                final LinearLayout l = (LinearLayout) v;
+                final ImageView i = (ImageView) l.findViewById(R.id.widget_preview);
+                final Drawable icon = i.getDrawable();
+                Bitmap b = drawableToBitmap(icon, i);
+                PendingAddWidgetInfo createWidgetInfo = (PendingAddWidgetInfo) v.getTag();
 
-            int[] spanXY = CellLayout.rectToCell(
-                    getResources(), createWidgetInfo.minWidth, createWidgetInfo.minHeight, null);
-            createWidgetInfo.spanX = spanXY[0];
-            createWidgetInfo.spanY = spanXY[1];
-            mLauncher.getWorkspace().onDragStartedWithItemSpans(spanXY[0], spanXY[1], b);
-            mDragController.startDrag(
-                    i, b, this, createWidgetInfo, DragController.DRAG_ACTION_COPY, null);
-            b.recycle();
-            result = true;
+                int[] spanXY = CellLayout.rectToCell(
+                        getResources(), createWidgetInfo.minWidth, createWidgetInfo.minHeight, null);
+                createWidgetInfo.spanX = spanXY[0];
+                createWidgetInfo.spanY = spanXY[1];
+                mLauncher.getWorkspace().onDragStartedWithItemSpans(spanXY[0], spanXY[1], b);
+                mDragController.startDrag(
+                        i, b, this, createWidgetInfo, DragController.DRAG_ACTION_COPY, null);
+                b.recycle();
+                result = true;
+            }
             break;
         }
         case ShortcutCustomization: {
-            // get icon (top compound drawable, index is 1)
-            final TextView tv = (TextView) v;
-            final Drawable icon = tv.getCompoundDrawables()[1];
-            Bitmap b = drawableToBitmap(icon, tv);
-            PendingAddItemInfo createItemInfo = (PendingAddItemInfo) v.getTag();
+            if (v instanceof PagedViewIcon) {
+                // get icon (top compound drawable, index is 1)
+                final TextView tv = (TextView) v;
+                final Drawable icon = tv.getCompoundDrawables()[1];
+                Bitmap b = drawableToBitmap(icon, tv);
+                PendingAddItemInfo createItemInfo = (PendingAddItemInfo) v.getTag();
 
-            mLauncher.getWorkspace().onDragStartedWithItemSpans(1, 1, b);
-            mDragController.startDrag(v, b, this, createItemInfo, DragController.DRAG_ACTION_COPY,
-                    null);
-            b.recycle();
-            result = true;
+                mLauncher.getWorkspace().onDragStartedWithItemSpans(1, 1, b);
+                mDragController.startDrag(v, b, this, createItemInfo, DragController.DRAG_ACTION_COPY,
+                        null);
+                b.recycle();
+                result = true;
+            }
             break;
         }
         case ApplicationCustomization: {
-            // Pick up the application for dropping
-            // get icon (top compound drawable, index is 1)
-            final TextView tv = (TextView) v;
-            final Drawable icon = tv.getCompoundDrawables()[1];
-            Bitmap b = drawableToBitmap(icon, tv);
-            ApplicationInfo app = (ApplicationInfo) v.getTag();
-            app = new ApplicationInfo(app);
+            if (v instanceof PagedViewIcon) {
+                // Pick up the application for dropping
+                // get icon (top compound drawable, index is 1)
+                final TextView tv = (TextView) v;
+                final Drawable icon = tv.getCompoundDrawables()[1];
+                Bitmap b = drawableToBitmap(icon, tv);
+                ApplicationInfo app = (ApplicationInfo) v.getTag();
+                app = new ApplicationInfo(app);
 
-            mLauncher.getWorkspace().onDragStartedWithItemSpans(1, 1, b);
-            mDragController.startDrag(v, b, this, app, DragController.DRAG_ACTION_COPY, null);
-            b.recycle();
-            result = true;
+                mLauncher.getWorkspace().onDragStartedWithItemSpans(1, 1, b);
+                mDragController.startDrag(v, b, this, app, DragController.DRAG_ACTION_COPY, null);
+                b.recycle();
+                result = true;
+            }
             break;
         }
         }
 
         // We toggle the checked state _after_ we create the view for the drag in case toggling the
         // checked state changes the view's look
-        if (v instanceof Checkable) {
+        if (result && (v instanceof Checkable)) {
             // In preparation for drag, we always reset the checked grand children regardless of
             // what choice mode we are in
             resetCheckedGrandchildren();