diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 2873d37332..7ad858cca4 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -1614,7 +1614,10 @@ public class Launcher extends Activity // processing a multi-step drop if (mAppsView != null && mWidgetsView != null && mPendingAddInfo.container == ItemInfo.NO_ID) { - showWorkspace(false); + if (!showWorkspace(false)) { + // If we are already on the workspace, then manually reset all apps + mAppsView.reset(); + } } } else if (Intent.ACTION_USER_PRESENT.equals(action)) { mUserPresent = true; @@ -3259,20 +3262,32 @@ public class Launcher extends Activity } } - public void showWorkspace(boolean animated) { - showWorkspace(WorkspaceStateTransitionAnimation.SCROLL_TO_CURRENT_PAGE, animated, null); + /** + * @return whether or not the Launcher state changed. + */ + public boolean showWorkspace(boolean animated) { + return showWorkspace(WorkspaceStateTransitionAnimation.SCROLL_TO_CURRENT_PAGE, animated, null); } - public void showWorkspace(boolean animated, Runnable onCompleteRunnable) { - showWorkspace(WorkspaceStateTransitionAnimation.SCROLL_TO_CURRENT_PAGE, animated, + /** + * @return whether or not the Launcher state changed. + */ + public boolean showWorkspace(boolean animated, Runnable onCompleteRunnable) { + return showWorkspace(WorkspaceStateTransitionAnimation.SCROLL_TO_CURRENT_PAGE, animated, onCompleteRunnable); } - protected void showWorkspace(int snapToPage, boolean animated) { - showWorkspace(snapToPage, animated, null); + /** + * @return whether or not the Launcher state changed. + */ + protected boolean showWorkspace(int snapToPage, boolean animated) { + return showWorkspace(snapToPage, animated, null); } - void showWorkspace(int snapToPage, boolean animated, Runnable onCompleteRunnable) { + /** + * @return whether or not the Launcher state changed. + */ + boolean showWorkspace(int snapToPage, boolean animated, Runnable onCompleteRunnable) { boolean changed = mState != State.WORKSPACE || mWorkspace.getState() != Workspace.State.NORMAL; if (changed) { @@ -3298,6 +3313,7 @@ public class Launcher extends Activity getWindow().getDecorView() .sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); } + return changed; } void showOverviewMode(boolean animated) { diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java index 88c6acadac..564527e28a 100644 --- a/src/com/android/launcher3/allapps/AllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java @@ -290,6 +290,15 @@ public class AllAppsContainerView extends BaseContainerView implements DragSourc } } + /** + * Resets the state of AllApps. + */ + public void reset() { + // Reset the search bar and base recycler view after transitioning home + mSearchBarController.reset(); + mAppsRecyclerView.reset(); + } + @Override protected void onFinishInflate() { super.onFinishInflate(); @@ -555,9 +564,7 @@ public class AllAppsContainerView extends BaseContainerView implements DragSourc @Override public void onLauncherTransitionEnd(Launcher l, boolean animated, boolean toWorkspace) { if (toWorkspace) { - // Reset the search bar and base recycler view after transitioning home - mSearchBarController.reset(); - mAppsRecyclerView.reset(); + reset(); } }