From 440609453f14fa8ce4bec1d70032f0b7f9614d4e Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Wed, 22 Feb 2017 10:17:49 -0800 Subject: [PATCH] Close Folder when an item is auto added to it. This can happen when items (as part of a Work Profile) are auto added to the Work profile Folder. Bug: 35628160 Change-Id: I29d3b277b0e9cd4bb238fb5aff9a52c6b9e764f8 --- src/com/android/launcher3/FolderInfo.java | 7 +++++++ src/com/android/launcher3/folder/Folder.java | 13 +++++++++++-- src/com/android/launcher3/folder/FolderIcon.java | 4 ++++ src/com/android/launcher3/util/ManagedProfileHeuristic.java | 1 + 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/com/android/launcher3/FolderInfo.java b/src/com/android/launcher3/FolderInfo.java index 2c69d0a69..ffddccf0d 100644 --- a/src/com/android/launcher3/FolderInfo.java +++ b/src/com/android/launcher3/FolderInfo.java @@ -114,11 +114,18 @@ public class FolderInfo extends ItemInfo { } } + public void prepareAutoAdd() { + for (int i = 0; i < listeners.size(); i++) { + listeners.get(i).prepareAutoAdd(); + } + } + public interface FolderListener { public void onAdd(ShortcutInfo item); public void onRemove(ShortcutInfo item); public void onTitleChanged(CharSequence title); public void onItemsChanged(boolean animate); + public void prepareAutoAdd(); } public boolean hasOption(int optionFlag) { diff --git a/src/com/android/launcher3/folder/Folder.java b/src/com/android/launcher3/folder/Folder.java index 4ad13d0ce..269559467 100644 --- a/src/com/android/launcher3/folder/Folder.java +++ b/src/com/android/launcher3/folder/Folder.java @@ -554,7 +554,7 @@ public class Folder extends AbstractFloatingView implements DragSource, View.OnC mFolderIcon.growAndFadeOut(); AnimatorSet anim = LauncherAnimUtils.createAnimatorSet(); - int width = getPaddingLeft() + getPaddingRight() + mContent.getDesiredWidth(); + int width = getFolderWidth(); int height = getFolderHeight(); float transX = - 0.075f * (width / 2 - getPivotX()); @@ -1047,7 +1047,7 @@ public class Folder extends AbstractFloatingView implements DragSource, View.OnC DragLayer.LayoutParams lp = (DragLayer.LayoutParams) getLayoutParams(); DragLayer parent = (DragLayer) mLauncher.findViewById(R.id.drag_layer); - int width = getPaddingLeft() + getPaddingRight() + mContent.getDesiredWidth(); + int width = getFolderWidth(); int height = getFolderHeight(); float scale = parent.getDescendantRectRelativeToSelf(mFolderIcon, sTempRect); @@ -1121,6 +1121,10 @@ public class Folder extends AbstractFloatingView implements DragSource, View.OnC return Math.max(mContent.getDesiredWidth(), MIN_CONTENT_DIMEN); } + private int getFolderWidth() { + return getPaddingLeft() + getPaddingRight() + mContent.getDesiredWidth(); + } + private int getFolderHeight() { return getFolderHeight(getContentAreaHeight()); } @@ -1407,6 +1411,11 @@ public class Folder extends AbstractFloatingView implements DragSource, View.OnC updateTextViewFocus(); } + @Override + public void prepareAutoAdd() { + close(false); + } + public void onTitleChanged(CharSequence title) { } diff --git a/src/com/android/launcher3/folder/FolderIcon.java b/src/com/android/launcher3/folder/FolderIcon.java index 96d56759d..fce902e49 100644 --- a/src/com/android/launcher3/folder/FolderIcon.java +++ b/src/com/android/launcher3/folder/FolderIcon.java @@ -981,6 +981,10 @@ public class FolderIcon extends FrameLayout implements FolderListener { } @Override + public void prepareAutoAdd() { + } + + @Override public void onAdd(ShortcutInfo item) { int oldCount = mBadgeInfo.getNotificationCount(); mBadgeInfo.addBadgeInfo(mLauncher.getPopupDataProvider().getBadgeInfoForItem(item)); diff --git a/src/com/android/launcher3/util/ManagedProfileHeuristic.java b/src/com/android/launcher3/util/ManagedProfileHeuristic.java index 577d19f8c..a1c2f0a05 100644 --- a/src/com/android/launcher3/util/ManagedProfileHeuristic.java +++ b/src/com/android/launcher3/util/ManagedProfileHeuristic.java @@ -163,6 +163,7 @@ public class ManagedProfileHeuristic { @Override public void run() { + workFolder.prepareAutoAdd(); for (ShortcutInfo info : workFolderApps) { workFolder.add(info, false); } -- 2.11.0