OSDN Git Service

Close Folder when an item is auto added to it.
authorJon Miranda <jonmiranda@google.com>
Wed, 22 Feb 2017 18:17:49 +0000 (10:17 -0800)
committerJon Miranda <jonmiranda@google.com>
Wed, 22 Feb 2017 18:55:52 +0000 (10:55 -0800)
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
src/com/android/launcher3/folder/Folder.java
src/com/android/launcher3/folder/FolderIcon.java
src/com/android/launcher3/util/ManagedProfileHeuristic.java

index 2c69d0a..ffddccf 100644 (file)
@@ -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) {
index 4ad13d0..2695594 100644 (file)
@@ -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) {
     }
 
index 96d5675..fce902e 100644 (file)
@@ -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));
index 577d19f..a1c2f0a 100644 (file)
@@ -163,6 +163,7 @@ public class ManagedProfileHeuristic {
 
                     @Override
                     public void run() {
+                        workFolder.prepareAutoAdd();
                         for (ShortcutInfo info : workFolderApps) {
                             workFolder.add(info, false);
                         }