Fix 3511340: Exit widget resize mode when home or back clicked

Also add an optimization to drastically reduce the number of
posted events when a widget is currently being resized.

Change-Id: I8839d4bba564028a67fb0355d35b7dd52465b199
diff --git a/src/com/android/launcher2/DragLayer.java b/src/com/android/launcher2/DragLayer.java
index 37bbb05..2e72f62 100644
--- a/src/com/android/launcher2/DragLayer.java
+++ b/src/com/android/launcher2/DragLayer.java
@@ -63,12 +63,13 @@
         // dismiss any visible resize frames.
         final Workspace w = (Workspace) findViewById(R.id.workspace);
         final CellLayout currentPage = (CellLayout) w.getChildAt(w.getCurrentPage());
+        final CellLayoutChildren childrenLayout = currentPage.getChildrenLayout();
 
-        if (currentPage.getChildrenLayout().hasResizeFrames()) {
+        if (childrenLayout.hasResizeFrames() && !childrenLayout.isWidgetBeingResized()) {
             post(new Runnable() {
                 public void run() {
-                    if (!currentPage.getChildrenLayout().isWidgetBeingResized()) {
-                        currentPage.getChildrenLayout().clearAllResizeFrames();
+                    if (!childrenLayout.isWidgetBeingResized()) {
+                        childrenLayout.clearAllResizeFrames();
                     }
                 }
             });
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 3e0fcd5..994c3b8 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -1482,6 +1482,7 @@
                 mWorkspace.unshrink(alreadyOnHome);
             }
 
+            mWorkspace.exitWidgetResizeMode();
             if (alreadyOnHome && mState == State.WORKSPACE && !mWorkspace.isTouchActive()) {
                 mWorkspace.moveToDefaultScreen(true);
             }
@@ -2020,6 +2021,8 @@
             dismissPreview(mPreviousView);
             dismissPreview(mNextView);
         } else {
+            mWorkspace.exitWidgetResizeMode();
+
             // Back button is a no-op here, but give at least some feedback for the button press
             mWorkspace.showOutlinesTemporarily();
         }
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index 88233c1..123ab1e 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -1790,6 +1790,11 @@
         }
     }
 
+    public void exitWidgetResizeMode() {
+        final CellLayout currentLayout = (CellLayout) getChildAt(getCurrentPage());
+        currentLayout.getChildrenLayout().clearAllResizeFrames();
+    }
+
     void unshrink(boolean animated) {
         unshrink(animated, false);
     }