Transition from back to showing widget tray if shortcut/Widget configure activity
was cancelled.
Recent refactoring of the State inside Launcher introduced a check
of which state can show widget tray (only workspace) that was too agressive.
b/21201908
Change-Id: Iaccb44d23485aa101d7720b29335645a74f4dcdc
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 72472b9..a828b1a 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -809,7 +809,7 @@
}
boolean isWidgetDrop = (requestCode == REQUEST_PICK_APPWIDGET ||
- requestCode == REQUEST_CREATE_APPWIDGET);
+ requestCode == REQUEST_CREATE_APPWIDGET || requestCode == REQUEST_CREATE_SHORTCUT);
final boolean workspaceLocked = isWorkspaceLocked();
// We have special handling for widgets
@@ -3447,10 +3447,19 @@
/**
* Sets up the transition to show the apps/widgets view.
+ *
+ * @return whether the current from and to state allowed this operation
*/
- private void showAppsOrWidgets(boolean animated, State toState) {
- if (mState != State.WORKSPACE) return;
- if (toState != State.APPS && toState != State.WIDGETS) return;
+ // TODO: calling method should use the return value so that when {@code false} is returned
+ // the workspace transition doesn't fall into invalid state.
+ private boolean showAppsOrWidgets(boolean animated, State toState) {
+ if (mState != State.WORKSPACE && mState != State.APPS_SPRING_LOADED &&
+ mState != State.WIDGETS_SPRING_LOADED) {
+ return false;
+ }
+ if (toState != State.APPS && toState != State.WIDGETS) {
+ return false;
+ }
if (toState == State.APPS) {
mStateTransitionAnimation.startAnimationToAllApps(animated);
@@ -3472,6 +3481,7 @@
// Send an accessibility event to announce the context change
getWindow().getDecorView()
.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
+ return true;
}
/**