diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java index d76c9a872d..fb59017b8f 100644 --- a/src/com/android/launcher2/Launcher.java +++ b/src/com/android/launcher2/Launcher.java @@ -819,7 +819,7 @@ public final class Launcher extends Activity } void closeSystemDialogs() { - closeAllApps(false); + closeAllApps(true); getWindow().closeAllPanels(); try { @@ -854,11 +854,13 @@ public final class Launcher extends Activity // for example onResume being called when the user pressed the 'back' button. mIsNewIntent = true; + boolean alreadyOnHome = ((intent.getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) + != Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); + boolean allAppsVisible = isAllAppsVisible(); if (!mWorkspace.isDefaultScreenShowing()) { - mWorkspace.moveToDefaultScreen(); + mWorkspace.moveToDefaultScreen(alreadyOnHome && !allAppsVisible); } - - closeAllApps(false); + closeAllApps(alreadyOnHome && allAppsVisible); final View v = getWindow().peekDecorView(); if (v != null && v.getWindowToken() != null) { diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java index d0cec8af1c..ac94ccae8b 100644 --- a/src/com/android/launcher2/Workspace.java +++ b/src/com/android/launcher2/Workspace.java @@ -947,6 +947,10 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag } void snapToScreen(int whichScreen) { + snapToScreen(whichScreen, true); + } + + void snapToScreen(int whichScreen, boolean animate) { //if (!mScroller.isFinished()) return; whichScreen = Math.max(0, Math.min(whichScreen, getChildCount() - 1)); @@ -970,7 +974,8 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag final int delta = newX - mScrollX; final int duration = screenDelta * 300; awakenScrollBars(duration); - mScroller.startScroll(mScrollX, 0, delta, 0, duration); + // 1ms is close to don't animate + mScroller.startScroll(mScrollX, 0, delta, 0, animate ? duration : 1); invalidate(); } @@ -1420,8 +1425,8 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag } } - void moveToDefaultScreen() { - snapToScreen(mDefaultScreen); + void moveToDefaultScreen(boolean animate) { + snapToScreen(mDefaultScreen, animate); getChildAt(mDefaultScreen).requestFocus(); }