From 758a9239f045ff4eb85c421a2f67a720b5b3c621 Mon Sep 17 00:00:00 2001 From: Patrick Dubroy Date: Thu, 3 Mar 2011 19:54:56 -0800 Subject: [PATCH] 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 --- src/com/android/launcher2/DragLayer.java | 7 ++++--- src/com/android/launcher2/Launcher.java | 3 +++ src/com/android/launcher2/Workspace.java | 5 +++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/com/android/launcher2/DragLayer.java b/src/com/android/launcher2/DragLayer.java index 37bbb05afb..2e72f62237 100644 --- a/src/com/android/launcher2/DragLayer.java +++ b/src/com/android/launcher2/DragLayer.java @@ -63,12 +63,13 @@ public class DragLayer extends FrameLayout { // 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 3e0fcd5d29..994c3b8255 100644 --- a/src/com/android/launcher2/Launcher.java +++ b/src/com/android/launcher2/Launcher.java @@ -1482,6 +1482,7 @@ public final class Launcher extends Activity mWorkspace.unshrink(alreadyOnHome); } + mWorkspace.exitWidgetResizeMode(); if (alreadyOnHome && mState == State.WORKSPACE && !mWorkspace.isTouchActive()) { mWorkspace.moveToDefaultScreen(true); } @@ -2020,6 +2021,8 @@ public final class Launcher extends Activity 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 88233c12bd..123ab1e417 100644 --- a/src/com/android/launcher2/Workspace.java +++ b/src/com/android/launcher2/Workspace.java @@ -1790,6 +1790,11 @@ public class Workspace extends SmoothPagedView } } + public void exitWidgetResizeMode() { + final CellLayout currentLayout = (CellLayout) getChildAt(getCurrentPage()); + currentLayout.getChildrenLayout().clearAllResizeFrames(); + } + void unshrink(boolean animated) { unshrink(animated, false); }