diff options
Diffstat (limited to 'src/com/android/launcher3/model/AddWorkspaceItemsTask.java')
-rw-r--r-- | src/com/android/launcher3/model/AddWorkspaceItemsTask.java | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/src/com/android/launcher3/model/AddWorkspaceItemsTask.java b/src/com/android/launcher3/model/AddWorkspaceItemsTask.java index 01b3e6e3ba..a13fa55dff 100644 --- a/src/com/android/launcher3/model/AddWorkspaceItemsTask.java +++ b/src/com/android/launcher3/model/AddWorkspaceItemsTask.java @@ -15,6 +15,8 @@ */ package com.android.launcher3.model; +import static com.android.launcher3.WorkspaceLayoutManager.FIRST_SCREEN_ID; + import android.content.Intent; import android.content.pm.LauncherActivityInfo; import android.content.pm.LauncherApps; @@ -27,6 +29,7 @@ import com.android.launcher3.InvariantDeviceProfile; import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherModel.CallbackTask; import com.android.launcher3.LauncherSettings; +import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.logging.FileLog; import com.android.launcher3.model.BgDataModel.Callbacks; import com.android.launcher3.model.data.AppInfo; @@ -38,6 +41,7 @@ import com.android.launcher3.pm.InstallSessionHelper; import com.android.launcher3.pm.PackageInstallInfo; import com.android.launcher3.util.GridOccupancy; import com.android.launcher3.util.IntArray; +import com.android.launcher3.util.IntSet; import com.android.launcher3.util.PackageManagerHelper; import java.util.ArrayList; @@ -287,28 +291,23 @@ public class AddWorkspaceItemsTask extends BaseModelUpdateTask { // Find appropriate space for the item. int screenId = 0; - int[] cordinates = new int[2]; + int[] coordinates = new int[2]; boolean found = false; int screenCount = workspaceScreens.size(); // First check the preferred screen. - int preferredScreenIndex = workspaceScreens.isEmpty() ? 0 : 1; - if (preferredScreenIndex < screenCount) { - screenId = workspaceScreens.get(preferredScreenIndex); - found = findNextAvailableIconSpaceInScreen( - app, screenItems.get(screenId), cordinates, spanX, spanY); + IntSet screensToExclude = new IntSet(); + if (FeatureFlags.QSB_ON_FIRST_SCREEN) { + screensToExclude.add(FIRST_SCREEN_ID); } - if (!found) { - // Search on any of the screens starting from the first screen. - for (int screen = 1; screen < screenCount; screen++) { - screenId = workspaceScreens.get(screen); - if (findNextAvailableIconSpaceInScreen( - app, screenItems.get(screenId), cordinates, spanX, spanY)) { - // We found a space for it - found = true; - break; - } + for (int screen = 0; screen < screenCount; screen++) { + screenId = workspaceScreens.get(screen); + if (!screensToExclude.contains(screenId) && findNextAvailableIconSpaceInScreen( + app, screenItems.get(screenId), coordinates, spanX, spanY)) { + // We found a space for it + found = true; + break; } } @@ -324,11 +323,11 @@ public class AddWorkspaceItemsTask extends BaseModelUpdateTask { // If we still can't find an empty space, then God help us all!!! if (!findNextAvailableIconSpaceInScreen( - app, screenItems.get(screenId), cordinates, spanX, spanY)) { + app, screenItems.get(screenId), coordinates, spanX, spanY)) { throw new RuntimeException("Can't find space to add the item"); } } - return new int[] {screenId, cordinates[0], cordinates[1]}; + return new int[] {screenId, coordinates[0], coordinates[1]}; } private boolean findNextAvailableIconSpaceInScreen( |