Merge "Disable the folder cling in two cases" into ub-now-nova
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 72cad51..1c37a8c 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -4479,7 +4479,9 @@
     public void dismissFolderCling(View v) {
         mLauncherClings.dismissFolderCling(v);
     }
-
+    public void markFolderClingDismissedIfNecessary() {
+        mLauncherClings.markFolderClingDismissedIfNecessary();
+    }
 
     /**
      * To be overridden by subclasses to indicate that there is an activity to launch
diff --git a/src/com/android/launcher3/LauncherClings.java b/src/com/android/launcher3/LauncherClings.java
index 97138ee..a2cce1a 100644
--- a/src/com/android/launcher3/LauncherClings.java
+++ b/src/com/android/launcher3/LauncherClings.java
@@ -315,12 +315,6 @@
         editor.commit();
     }
 
-    public void markFolderClingDismissed() {
-        SharedPreferences.Editor editor = mLauncher.getSharedPrefs().edit();
-        editor.putBoolean(LauncherClings.FOLDER_CLING_DISMISSED_KEY, true);
-        editor.apply();
-    }
-
     /** Removes the cling outright from the DragLayer */
     private void removeCling(int id) {
         final View cling = mLauncher.findViewById(id);
@@ -415,6 +409,15 @@
         mLauncher.getSearchBar().showSearchBar(true);
     }
 
+    public void markFolderClingDismissedIfNecessary() {
+        SharedPreferences prefs = mLauncher.getSharedPrefs();
+        if (!prefs.getBoolean(FOLDER_CLING_DISMISSED_KEY, false)) {
+            SharedPreferences.Editor editor = prefs.edit();
+            editor.putBoolean(FOLDER_CLING_DISMISSED_KEY, true);
+            editor.apply();
+        }
+    }
+
     public void dismissMigrationClingCopyApps(View v) {
         // Copy the shortcuts from the old database
         LauncherModel model = mLauncher.getModel();
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index 0669f3a..d734abd 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -2719,8 +2719,9 @@
             BubbleTextView icon = (BubbleTextView) child;
             icon.clearPressedOrFocusedBackground();
         } else if (child instanceof FolderIcon) {
-            // Dismiss the folder cling if we haven't already
-            mLauncher.getLauncherClings().markFolderClingDismissed();
+            // The folder cling isn't flexible enough to be shown in non-default workspace positions
+            // Also if they are dragging it a folder, we assume they don't need to see the cling.
+            mLauncher.markFolderClingDismissedIfNecessary();
         }
 
         if (child.getTag() == null || !(child.getTag() instanceof ItemInfo)) {
@@ -3066,6 +3067,10 @@
                 // cell also contains a shortcut, then create a folder with the two shortcuts.
                 if (!mInScrollArea && createUserFolderIfNecessary(cell, container,
                         dropTargetLayout, mTargetCell, distance, false, d.dragView, null)) {
+                    // The folder cling isn't flexible enough to be shown in non-default workspace
+                    // positions. Also if they are creating a folder, we assume they don't need to
+                    // see the cling.
+                    mLauncher.markFolderClingDismissedIfNecessary();
                     return;
                 }
 
@@ -3965,6 +3970,10 @@
                 d.postAnimationRunnable = exitSpringLoadedRunnable;
                 if (createUserFolderIfNecessary(view, container, cellLayout, mTargetCell, distance,
                         true, d.dragView, d.postAnimationRunnable)) {
+                    // The folder cling isn't flexible enough to be shown in non-default workspace
+                    // positions. Also if they are creating a folder, we assume they don't need to
+                    // see the cling.
+                    mLauncher.markFolderClingDismissedIfNecessary();
                     return;
                 }
                 if (addToExistingFolderIfNecessary(view, cellLayout, mTargetCell, distance, d,