Initial changes to allow dragging external shortcuts to launcher using the same InstallShortcut intent.

Change-Id: I21b57115429ed37d604084ae01308d1d3f33ee7e
diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java
index 63da108..3c82290 100644
--- a/src/com/android/launcher2/CellLayout.java
+++ b/src/com/android/launcher2/CellLayout.java
@@ -16,7 +16,7 @@
 
 package com.android.launcher2;
 
-import com.android.launcher.R;
+import java.util.Arrays;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
@@ -26,6 +26,7 @@
 import android.animation.ValueAnimator;
 import android.animation.ValueAnimator.AnimatorUpdateListener;
 import android.app.WallpaperManager;
+import android.content.ClipDescription;
 import android.content.Context;
 import android.content.res.Resources;
 import android.content.res.TypedArray;
@@ -41,6 +42,7 @@
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.ContextMenu;
+import android.view.DragEvent;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewDebug;
@@ -49,7 +51,7 @@
 import android.view.animation.DecelerateInterpolator;
 import android.view.animation.LayoutAnimationController;
 
-import java.util.Arrays;
+import com.android.launcher.R;
 
 public class CellLayout extends ViewGroup implements Dimmable {
     static final String TAG = "CellLayout";
@@ -972,7 +974,11 @@
         final int oldDragCellX = mDragCell[0];
         final int oldDragCellY = mDragCell[1];
         final int[] nearest = findNearestVacantArea(originX, originY, spanX, spanY, v, mDragCell);
-        mDragCenter.set(originX + (v.getWidth() / 2), originY + (v.getHeight() / 2));
+        if (v != null) {
+            mDragCenter.set(originX + (v.getWidth() / 2), originY + (v.getHeight() / 2));
+        } else {
+            mDragCenter.set(originX, originY);
+        }
 
         if (nearest != null && (nearest[0] != oldDragCellX || nearest[1] != oldDragCellY)) {
             // Find the top left corner of the rect the object will occupy
@@ -982,15 +988,17 @@
             int left = topLeft[0];
             int top = topLeft[1];
 
-            if (v.getParent() instanceof CellLayout) {
-                LayoutParams lp = (LayoutParams) v.getLayoutParams();
-                left += lp.leftMargin;
-                top += lp.topMargin;
-            }
+            if (v != null) {
+                if (v.getParent() instanceof CellLayout) {
+                    LayoutParams lp = (LayoutParams) v.getLayoutParams();
+                    left += lp.leftMargin;
+                    top += lp.topMargin;
+                }
 
-            // Offsets due to the size difference between the View and the dragOutline
-            left += (v.getWidth() - dragOutline.getWidth()) / 2;
-            top += (v.getHeight() - dragOutline.getHeight()) / 2;
+                // Offsets due to the size difference between the View and the dragOutline
+                left += (v.getWidth() - dragOutline.getWidth()) / 2;
+                top += (v.getHeight() - dragOutline.getHeight()) / 2;
+            }
 
             final int oldIndex = mDragOutlineCurrent;
             mDragOutlineAnims[oldIndex].animateOut();
@@ -1271,7 +1279,7 @@
      * It may have begun over this layout (in which case onDragChild is called first),
      * or it may have begun on another layout.
      */
-    void onDragEnter(View dragView) {
+    void onDragEnter() {
         if (!mDragging) {
             // Fade in the drag indicators
             if (mCrosshairsAnimator != null) {