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);
}