Fixing issue where migration all apps folder couldn't be picked up.
- Ensuring that we add items to the non-primary home page
- Fixing issue with drop-target touch handling on tablets
Change-Id: Iea5a383dc735a8f6044a00982f05789f8328ab63
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index 0b69a09..07787cc 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -237,7 +237,8 @@
return CellLayout.findVacantCell(xy, 1, 1, xCount, yCount, occupied);
}
static Pair<Long, int[]> findNextAvailableIconSpace(Context context, String name,
- Intent launchIntent) {
+ Intent launchIntent,
+ int firstScreenIndex) {
// Lock on the app so that we don't try and get the items while apps are being added
LauncherAppState app = LauncherAppState.getInstance();
LauncherModel model = app.getModel();
@@ -253,7 +254,9 @@
// Try adding to the workspace screens incrementally, starting at the default or center
// screen and alternating between +1, -1, +2, -2, etc. (using ~ ceil(i/2f)*(-1)^(i-1))
- for (int screen = 0; screen < sBgWorkspaceScreens.size() && !found; screen++) {
+ firstScreenIndex = Math.min(firstScreenIndex, sBgWorkspaceScreens.size());
+ int count = sBgWorkspaceScreens.size();
+ for (int screen = firstScreenIndex; screen < count && !found; screen++) {
int[] tmpCoordinates = new int[2];
if (findNextAvailableIconSpaceInScreen(items, tmpCoordinates,
sBgWorkspaceScreens.get(screen))) {
@@ -287,8 +290,9 @@
}
// Add this icon to the db, creating a new page if necessary
+ int startSearchPageIndex = 1;
Pair<Long, int[]> coords = LauncherModel.findNextAvailableIconSpace(context,
- name, launchIntent);
+ name, launchIntent, startSearchPageIndex);
if (coords == null) {
// If we can't find a valid position, then just add a new screen.
// This takes time so we need to re-queue the add until the new
@@ -303,7 +307,7 @@
addedWorkspaceScreensFinal.add(screenId);
// Find the coordinate again
coords = LauncherModel.findNextAvailableIconSpace(context,
- a.title.toString(), a.intent);
+ a.title.toString(), a.intent, startSearchPageIndex);
}
if (coords == null) {
throw new RuntimeException("Coordinates should not be null");