diff options
Diffstat (limited to 'src/com/android/launcher3/Launcher.java')
-rw-r--r-- | src/com/android/launcher3/Launcher.java | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 74551e662..12a1f9f90 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -2263,10 +2263,12 @@ public class Launcher extends Activity // If we are already on home, then just animate back to the workspace, // otherwise, just wait until onResume to set the state back to Workspace - if (alreadyOnHome) { - showWorkspace(true); - } else { - mOnResumeState = State.WORKSPACE; + if (mWorkspace.getOpenFolder() == null) { + if (alreadyOnHome) { + showWorkspace(true); + } else { + mOnResumeState = State.WORKSPACE; + } } final View v = getWindow().peekDecorView(); @@ -2318,7 +2320,7 @@ public class Launcher extends Activity outState.putInt(RUNTIME_STATE, mState.ordinal()); // We close any open folder since it will not be re-opened, and we need to make sure // this state is reflected. - closeFolder(); + closeFolder(false); if (mPendingAddInfo.container != ItemInfo.NO_ID && mPendingAddInfo.screenId > -1 && mWaitingForResult) { @@ -3437,6 +3439,10 @@ public class Launcher extends Activity Folder folder = folderIcon.getFolder(); FolderInfo info = folder.mInfo; + if (folder.getState() == Folder.STATE_ANIMATING) { + return; + } + if (info.hidden) { folder.startHiddenFolderManager(); return; @@ -3453,8 +3459,7 @@ public class Launcher extends Activity Log.w(TAG, "Opening folder (" + folder + ") which already has a parent (" + folder.getParent() + ")."); } - folder.animateOpen(); - growAndFadeOutFolderIcon(folderIcon); + folder.animateOpen(getWorkspace()); // Notify the accessibility manager that this folder "window" has appeared and occluded // the workspace items @@ -3463,24 +3468,31 @@ public class Launcher extends Activity } public void closeFolder() { + closeFolder(true); + } + + public void closeFolder(boolean animate) { Folder folder = mWorkspace != null ? mWorkspace.getOpenFolder() : null; if (folder != null) { if (folder.isEditingName()) { folder.dismissEditingName(); } - closeFolder(folder); + closeFolder(folder, animate); } } void closeFolder(Folder folder) { - folder.getInfo().opened = false; + closeFolder(folder, true); + } - ViewGroup parent = (ViewGroup) folder.getParent().getParent(); - if (parent != null) { - FolderIcon fi = (FolderIcon) mWorkspace.getViewForTag(folder.mInfo); - shrinkAndFadeInFolderIcon(fi); + void closeFolder(Folder folder, boolean animate) { + if (folder.getState() == Folder.STATE_ANIMATING) { + return; } - folder.animateClosed(); + + folder.getInfo().opened = false; + + folder.animateClosed(animate); // Notify the accessibility manager that this folder "window" has disappeard and no // longer occludeds the workspace items |