Consider folder diff differently
Fixes: 157813770
Test: manual
Change-Id: I0e95f7d9709cacfe1c3b8384dfb15208a4c36914
diff --git a/src/com/android/launcher3/model/GridSizeMigrationTaskV2.java b/src/com/android/launcher3/model/GridSizeMigrationTaskV2.java
index 5ba2c8e..25a2c69 100644
--- a/src/com/android/launcher3/model/GridSizeMigrationTaskV2.java
+++ b/src/com/android/launcher3/model/GridSizeMigrationTaskV2.java
@@ -59,7 +59,6 @@
import java.util.Map;
import java.util.Objects;
import java.util.Set;
-import java.util.stream.Collectors;
/**
* This class takes care of shrinking the workspace (by maximum of one row and one column), as a
@@ -248,12 +247,25 @@
/** Return what's in the src but not in the dest */
private static List<DbEntry> calcDiff(List<DbEntry> src, List<DbEntry> dest) {
- Set<String> destSet = dest.parallelStream().map(DbEntry::getIntentStr).collect(
- Collectors.toSet());
+ Set<String> destIntentSet = new HashSet<>();
+ Set<Set<String>> destFolderIntentSet = new HashSet<>();
+ for (DbEntry entry : dest) {
+ if (entry.itemType == LauncherSettings.Favorites.ITEM_TYPE_FOLDER) {
+ destFolderIntentSet.add(entry.mFolderItems.keySet());
+ } else {
+ destIntentSet.add(entry.mIntent);
+ }
+ }
List<DbEntry> diff = new ArrayList<>();
for (DbEntry entry : src) {
- if (!destSet.contains(entry.mIntent)) {
- diff.add(entry);
+ if (entry.itemType == LauncherSettings.Favorites.ITEM_TYPE_FOLDER) {
+ if (!destFolderIntentSet.contains(entry.mFolderItems.keySet())) {
+ diff.add(entry);
+ }
+ } else {
+ if (!destIntentSet.contains(entry.mIntent)) {
+ diff.add(entry);
+ }
}
}
return diff;