Minor fixes to Launcher

- Tweaking the AllApps tab padding
- Fixing issue where the cling punch out might be in the wrong location
- Removing unused dragging code related to drop/scroll area overlap
- Tweaking padding so that picking up an icon on the top row does not automatically hover over delete (Bug 5636264)
- Fixing issue where multiple bgs in AllApps tab bar line makes it look blurry (Bug 5523822)

Change-Id: I707397c231188a9feee8c0856374e0483cf37296
diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java
index 2cdd16a..0189d6c 100644
--- a/src/com/android/launcher2/AppsCustomizePagedView.java
+++ b/src/com/android/launcher2/AppsCustomizePagedView.java
@@ -193,6 +193,7 @@
     private ArrayList<Object> mWidgets;
 
     // Cling
+    private boolean mHasShownAllAppsCling;
     private int mClingFocusedX;
     private int mClingFocusedY;
 
@@ -396,14 +397,33 @@
         int page = getPageForComponent(mSaveInstanceStateItemIndex);
         invalidatePageData(Math.max(0, page));
 
-        // Calculate the position for the cling punch through
-        int[] offset = new int[2];
-        int[] pos = mWidgetSpacingLayout.estimateCellPosition(mClingFocusedX, mClingFocusedY);
-        mLauncher.getDragLayer().getLocationInDragLayer(this, offset);
-        pos[0] += (getMeasuredWidth() - mWidgetSpacingLayout.getMeasuredWidth()) / 2 + offset[0];
-        pos[1] += (getMeasuredHeight() - mWidgetSpacingLayout.getMeasuredHeight()) / 2 + offset[1];
-        mLauncher.showFirstRunAllAppsCling(pos);
+        // Show All Apps cling if we are finished transitioning, otherwise, we will try again when
+        // the transition completes in AppsCustomizeTabHost (otherwise the wrong offsets will be
+        // returned while animating)
+        AppsCustomizeTabHost host = (AppsCustomizeTabHost) getTabHost();
+        if (!host.isTransitioning()) {
+            post(new Runnable() {
+                @Override
+                public void run() {
+                    showAllAppsCling();
+                }
+            });
+        }
+    }
 
+    void showAllAppsCling() {
+        if (!mHasShownAllAppsCling && isDataReady() && testDataReady()) {
+            mHasShownAllAppsCling = true;
+            // Calculate the position for the cling punch through
+            int[] offset = new int[2];
+            int[] pos = mWidgetSpacingLayout.estimateCellPosition(mClingFocusedX, mClingFocusedY);
+            mLauncher.getDragLayer().getLocationInDragLayer(this, offset);
+            // PagedViews are centered horizontally but top aligned
+            pos[0] += (getMeasuredWidth() - mWidgetSpacingLayout.getMeasuredWidth()) / 2 +
+                    offset[0];
+            pos[1] += offset[1];
+            mLauncher.showFirstRunAllAppsCling(pos);
+        }
     }
 
     @Override
diff --git a/src/com/android/launcher2/AppsCustomizeTabHost.java b/src/com/android/launcher2/AppsCustomizeTabHost.java
index 897a7fb..778d6bc 100644
--- a/src/com/android/launcher2/AppsCustomizeTabHost.java
+++ b/src/com/android/launcher2/AppsCustomizeTabHost.java
@@ -388,8 +388,9 @@
         }
 
         if (!toWorkspace) {
-            // Dismiss the cling if necessary
+            // Dismiss the workspace cling and show the all apps cling (if not already shown)
             l.dismissWorkspaceCling(null);
+            mAppsCustomizePane.showAllAppsCling();
 
             if (!LauncherApplication.isScreenLarge()) {
                 mAppsCustomizePane.hideScrollingIndicator(false);
diff --git a/src/com/android/launcher2/DragController.java b/src/com/android/launcher2/DragController.java
index ee054ab..286e2fe 100644
--- a/src/com/android/launcher2/DragController.java
+++ b/src/com/android/launcher2/DragController.java
@@ -101,7 +101,6 @@
     private int mScrollState = SCROLL_OUTSIDE_ZONE;
     private ScrollRunnable mScrollRunnable = new ScrollRunnable();
 
-    private RectF mDeleteRegion;
     private DropTarget mLastDropTarget;
 
     private InputMethodManager mInputMethodManager;
@@ -486,12 +485,6 @@
         }
         mLastDropTarget = dropTarget;
 
-        // Scroll, maybe, but not if we're in the delete region.
-        boolean inDeleteRegion = false;
-        if (mDeleteRegion != null) {
-            inDeleteRegion = mDeleteRegion.contains(x, y);
-        }
-
         // After a scroll, the touch point will still be in the scroll region.
         // Rather than scrolling immediately, require a bit of twiddling to scroll again
         final int slop = ViewConfiguration.get(mLauncher).getScaledWindowTouchSlop();
@@ -500,7 +493,7 @@
         mLastTouch[0] = x;
         mLastTouch[1] = y;
 
-        if (!inDeleteRegion && x < mScrollZone) {
+        if (x < mScrollZone) {
             if (mScrollState == SCROLL_OUTSIDE_ZONE && mDistanceSinceScroll > slop) {
                 mScrollState = SCROLL_WAITING_IN_ZONE;
                 if (mDragScroller.onEnterScrollArea(x, y, SCROLL_LEFT)) {
@@ -508,7 +501,7 @@
                     mHandler.postDelayed(mScrollRunnable, SCROLL_DELAY);
                 }
             }
-        } else if (!inDeleteRegion && x > mScrollView.getWidth() - mScrollZone) {
+        } else if (x > mScrollView.getWidth() - mScrollZone) {
             if (mScrollState == SCROLL_OUTSIDE_ZONE && mDistanceSinceScroll > slop) {
                 mScrollState = SCROLL_WAITING_IN_ZONE;
                 if (mDragScroller.onEnterScrollArea(x, y, SCROLL_RIGHT)) {
@@ -669,15 +662,6 @@
         mScrollView = v;
     }
 
-    /**
-     * Specifies the delete region.  We won't scroll on touch events over the delete region.
-     *
-     * @param region The rectangle in DragLayer coordinates of the delete region.
-     */
-    void setDeleteRegion(RectF region) {
-        mDeleteRegion = region;
-    }
-
     DragView getDragView() {
         return mDragObject.dragView;
     }