diff --git a/src/com/android/launcher3/model/GridSizeMigrationTaskV2.java b/src/com/android/launcher3/model/GridSizeMigrationTaskV2.java index 0369b217cc..e36d4cf27d 100644 --- a/src/com/android/launcher3/model/GridSizeMigrationTaskV2.java +++ b/src/com/android/launcher3/model/GridSizeMigrationTaskV2.java @@ -395,7 +395,8 @@ public class GridSizeMigrationTaskV2 { mTrgX = trgX; mTrgY = trgY; mNextStartX = 0; - mNextStartY = mTrgY - 1; + mNextStartY = mScreenId == 0 && FeatureFlags.QSB_ON_FIRST_SCREEN + ? 1 /* smartspace */ : 0; List existedEntries = mDestReader.mWorkspaceEntriesByScreenId.get(screenId); if (existedEntries != null) { for (DbEntry entry : existedEntries) { @@ -430,7 +431,7 @@ public class GridSizeMigrationTaskV2 { * to speed up the search. */ private boolean findPlacement(DbEntry entry) { - for (int y = mNextStartY; y >= (mScreenId == 0 ? 1 /* smartspace */ : 0); y--) { + for (int y = mNextStartY; y < mTrgY; y++) { for (int x = mNextStartX; x < mTrgX; x++) { boolean fits = mOccupied.isRegionVacant(x, y, entry.spanX, entry.spanY); boolean minFits = mOccupied.isRegionVacant(x, y, entry.minSpanX, @@ -753,7 +754,7 @@ public class GridSizeMigrationTaskV2 { return Integer.compare(screenId, another.screenId); } if (cellY != another.cellY) { - return -Integer.compare(cellY, another.cellY); + return Integer.compare(cellY, another.cellY); } return Integer.compare(cellX, another.cellX); } diff --git a/tests/src/com/android/launcher3/model/GridSizeMigrationTaskV2Test.kt b/tests/src/com/android/launcher3/model/GridSizeMigrationTaskV2Test.kt index 345016bd9f..90d7b434df 100644 --- a/tests/src/com/android/launcher3/model/GridSizeMigrationTaskV2Test.kt +++ b/tests/src/com/android/launcher3/model/GridSizeMigrationTaskV2Test.kt @@ -101,16 +101,21 @@ class GridSizeMigrationTaskV2Test { modelHelper.addItem(SHORTCUT, 3, HOTSEAT, 0, 0, testPackage3, 3, TMP_CONTENT_URI) modelHelper.addItem(APP_ICON, 4, HOTSEAT, 0, 0, testPackage4, 4, TMP_CONTENT_URI) // Src grid icons - modelHelper.addItem(APP_ICON, 0, DESKTOP, 2, 2, testPackage5, 5, TMP_CONTENT_URI) - modelHelper.addItem(APP_ICON, 0, DESKTOP, 2, 3, testPackage6, 6, TMP_CONTENT_URI) - modelHelper.addItem(APP_ICON, 0, DESKTOP, 4, 1, testPackage8, 8, TMP_CONTENT_URI) - modelHelper.addItem(APP_ICON, 0, DESKTOP, 4, 2, testPackage9, 9, TMP_CONTENT_URI) - modelHelper.addItem(APP_ICON, 0, DESKTOP, 4, 3, testPackage10, 10, TMP_CONTENT_URI) + // _ _ _ _ _ + // _ _ _ _ 5 + // _ _ 6 _ 7 + // _ _ 8 _ 9 + // _ _ _ _ _ + modelHelper.addItem(APP_ICON, 0, DESKTOP, 4, 1, testPackage5, 5, TMP_CONTENT_URI) + modelHelper.addItem(APP_ICON, 0, DESKTOP, 2, 2, testPackage6, 6, TMP_CONTENT_URI) + modelHelper.addItem(APP_ICON, 0, DESKTOP, 4, 2, testPackage7, 7, TMP_CONTENT_URI) + modelHelper.addItem(APP_ICON, 0, DESKTOP, 2, 3, testPackage8, 8, TMP_CONTENT_URI) + modelHelper.addItem(APP_ICON, 0, DESKTOP, 4, 3, testPackage9, 9, TMP_CONTENT_URI) // Dest hotseat icons modelHelper.addItem(SHORTCUT, 1, HOTSEAT, 0, 0, testPackage2) // Dest grid icons - modelHelper.addItem(APP_ICON, 0, DESKTOP, 2, 2, testPackage7) + modelHelper.addItem(APP_ICON, 0, DESKTOP, 2, 2, testPackage10) idp.numDatabaseHotseatIcons = 4 idp.numColumns = 4 @@ -174,13 +179,18 @@ class GridSizeMigrationTaskV2Test { Point(c.getInt(cellXIndex), c.getInt(cellYIndex)) } c.close() + // Expected dest grid icons + // _ _ _ _ + // 5 6 7 8 + // 9 _ 10_ + // _ _ _ _ assertThat(locMap.size.toLong()).isEqualTo(6) - assertThat(locMap[testPackage8]).isEqualTo(Point(0, 2)) - assertThat(locMap[testPackage6]).isEqualTo(Point(0, 3)) - assertThat(locMap[testPackage10]).isEqualTo(Point(1, 3)) - assertThat(locMap[testPackage7]).isEqualTo(Point(2, 2)) - assertThat(locMap[testPackage5]).isEqualTo(Point(2, 3)) - assertThat(locMap[testPackage9]).isEqualTo(Point(3, 3)) + assertThat(locMap[testPackage5]).isEqualTo(Point(0, 1)) + assertThat(locMap[testPackage6]).isEqualTo(Point(1, 1)) + assertThat(locMap[testPackage7]).isEqualTo(Point(2, 1)) + assertThat(locMap[testPackage8]).isEqualTo(Point(3, 1)) + assertThat(locMap[testPackage9]).isEqualTo(Point(0, 2)) + assertThat(locMap[testPackage10]).isEqualTo(Point(2, 2)) } @Test