Disable the folder cling in two cases
-> When the user creates a new folder
-> When the user drags an existing folder
-> The folder cling gets cut off in certain instances
and until we make it more extensible (not worth
it right now), we're disabling it in the problematic
cases. Also, in the problematic cases, the user
is demonstrating some advanced knowledge, so
it's somewhat justifiable.
issue 14491765
Change-Id: Ib15d2f097c51a9b755f04b95ed6ef468d3bacc60
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 3636107..1823451 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -4429,7 +4429,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,