From d8dbb46468e0a8860468661a6edfb7969bfdf0a7 Mon Sep 17 00:00:00 2001 From: Adam Cohen Date: Wed, 27 Nov 2013 11:55:48 -0800 Subject: [PATCH] Fix binding problem with no screens (issue 11768766) Change-Id: I0a296892d4964913f38bf6d7bd2c2b17e1e0e8e0 --- src/com/android/launcher3/LauncherModel.java | 28 +++++--------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java index 6a6cb35383..4d9dff93a4 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -2041,12 +2041,6 @@ public class LauncherModel extends BroadcastReceiver { } } - // If we aren't filtering on a screen, then the set of items to load is the full set of - // items given. - if (currentScreenId < 0) { - throw new RuntimeException("Unexpected screen id"); - } - // Order the set of items by their containers first, this allows use to walk through the // list sequentially, build up a list of containers that are in the specified screen, // as well as all items in those containers. @@ -2084,11 +2078,6 @@ public class LauncherModel extends BroadcastReceiver { ArrayList appWidgets, ArrayList currentScreenWidgets, ArrayList otherScreenWidgets) { - // If we aren't filtering on a screen, then the set of items to load is the full set of - // widgets given. - if (currentScreenId < 0) { - throw new RuntimeException("Unexpected screen id"); - } for (LauncherAppWidgetInfo widget : appWidgets) { if (widget == null) continue; @@ -2107,11 +2096,6 @@ public class LauncherModel extends BroadcastReceiver { HashMap folders, HashMap currentScreenFolders, HashMap otherScreenFolders) { - // If we aren't filtering on a screen, then the set of items to load is the full set of - // widgets given. - if (currentScreenId < 0) { - throw new RuntimeException("Unexpected screen id"); - } for (long id : folders.keySet()) { ItemInfo info = itemsIdMap.get(id); @@ -2261,13 +2245,15 @@ public class LauncherModel extends BroadcastReceiver { } final boolean isLoadingSynchronously = (synchronizeBindPage > -1); - final int currentScreen = isLoadingSynchronously ? synchronizeBindPage : + int currScreen = isLoadingSynchronously ? synchronizeBindPage : oldCallbacks.getCurrentWorkspaceScreen(); - if (currentScreen >= orderedScreenIds.size()) { - Log.w(TAG, "Invalid screen id to synchronously load"); - return; + if (currScreen >= orderedScreenIds.size()) { + // There may be no workspace screens (just hotseat items and an empty page). + currScreen = -1; } - final long currentScreenId = orderedScreenIds.get(currentScreen); + final int currentScreen = currScreen; + final long currentScreenId = + currentScreen < 0 ? -1 : orderedScreenIds.get(currentScreen); // Load all the items that are on the current page first (and in the process, unbind // all the existing workspace items before we call startBinding() below.