diff --git a/src/com/android/launcher3/FolderInfo.java b/src/com/android/launcher3/FolderInfo.java
index 2c69d0a..ffddccf 100644
--- a/src/com/android/launcher3/FolderInfo.java
+++ b/src/com/android/launcher3/FolderInfo.java
@@ -114,11 +114,18 @@
         }
     }
 
+    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 4ad13d0..2695594 100644
--- a/src/com/android/launcher3/folder/Folder.java
+++ b/src/com/android/launcher3/folder/Folder.java
@@ -554,7 +554,7 @@
         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 @@
 
         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 @@
         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 @@
         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 96d5675..fce902e 100644
--- a/src/com/android/launcher3/folder/FolderIcon.java
+++ b/src/com/android/launcher3/folder/FolderIcon.java
@@ -981,6 +981,10 @@
     }
 
     @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 577d19f..a1c2f0a 100644
--- a/src/com/android/launcher3/util/ManagedProfileHeuristic.java
+++ b/src/com/android/launcher3/util/ManagedProfileHeuristic.java
@@ -163,6 +163,7 @@
 
                     @Override
                     public void run() {
+                        workFolder.prepareAutoAdd();
                         for (ShortcutInfo info : workFolderApps) {
                             workFolder.add(info, false);
                         }
