Fixing crash when dropping item in hotseat (issue 6246039)

Change-Id: I50ad5439127adbb29423116bf0471a970f62e1bf
diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java
index fb319fe..5aa39c4 100644
--- a/src/com/android/launcher2/CellLayout.java
+++ b/src/com/android/launcher2/CellLayout.java
@@ -57,6 +57,7 @@
 public class CellLayout extends ViewGroup {
     static final String TAG = "CellLayout";
 
+    private Launcher mLauncher;
     private int mOriginalCellWidth;
     private int mOriginalCellHeight;
     private int mCellWidth;
@@ -175,6 +176,7 @@
         // A ViewGroup usually does not draw, but CellLayout needs to draw a rectangle to show
         // the user where a dragged item will land when dropped.
         setWillNotDraw(false);
+        mLauncher = (Launcher) context;
 
         TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CellLayout, defStyle, 0);
 
@@ -2071,11 +2073,14 @@
             View child = mShortcutsAndWidgets.getChildAt(i);
             LayoutParams lp = (LayoutParams) child.getLayoutParams();
             ItemInfo info = (ItemInfo) child.getTag();
-            info.cellX = lp.cellX = lp.tmpCellX;
-            info.cellY = lp.cellY = lp.tmpCellY;
+            // We do a null check here because the item info can be null in the case of the
+            // AllApps button in the hotseat.
+            if (info != null) {
+                info.cellX = lp.cellX = lp.tmpCellX;
+                info.cellY = lp.cellY = lp.tmpCellY;
+            }
         }
-        Workspace workspace = (Workspace) getParent();
-        workspace.updateItemLocationsInDatabase(this);
+        mLauncher.getWorkspace().updateItemLocationsInDatabase(this);
     }
 
     public void setUseTempCoords(boolean useTempCoords) {
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index 2b69a12..0ef6fd9 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -3353,9 +3353,11 @@
         for (int i = 0; i < count; i++) {
             View v = cl.getShortcutsAndWidgets().getChildAt(i);
             ItemInfo info = (ItemInfo) v.getTag();
-
-            LauncherModel.moveItemInDatabase(mLauncher, info, Favorites.CONTAINER_DESKTOP, screen,
-                        info.cellX, info.cellY);
+            // Null check required as the AllApps button doesn't have an item info
+            if (info != null) {
+                LauncherModel.moveItemInDatabase(mLauncher, info, Favorites.CONTAINER_DESKTOP,
+                        screen, info.cellX, info.cellY);
+            }
         }
     }