Queueing up items for adding later if Launcher is unavailable. (Bug 6457412)
Change-Id: Ia66a6411a54397543db4122a80ebca6a50b6360c
diff --git a/src/com/android/launcher2/InstallShortcutReceiver.java b/src/com/android/launcher2/InstallShortcutReceiver.java
index 6d91602..e05127b 100644
--- a/src/com/android/launcher2/InstallShortcutReceiver.java
+++ b/src/com/android/launcher2/InstallShortcutReceiver.java
@@ -22,6 +22,7 @@
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
+import android.os.Debug;
import android.widget.Toast;
import com.android.launcher.R;
@@ -90,9 +91,12 @@
return;
}
}
+ // Queue the item up for adding if launcher has not loaded properly yet
+ boolean launcherNotLoaded = LauncherModel.getCellCountX() <= 0 ||
+ LauncherModel.getCellCountY() <= 0;
PendingInstallShortcutInfo info = new PendingInstallShortcutInfo(data, name, intent);
- if (mUseInstallQueue) {
+ if (mUseInstallQueue || launcherNotLoaded) {
mInstallQueue.add(info);
} else {
processInstallShortcut(context, info);
@@ -102,9 +106,11 @@
static void enableInstallQueue() {
mUseInstallQueue = true;
}
-
static void disableAndFlushInstallQueue(Context context) {
mUseInstallQueue = false;
+ flushInstallQueue(context);
+ }
+ static void flushInstallQueue(Context context) {
Iterator<PendingInstallShortcutInfo> iter = mInstallQueue.iterator();
while (iter.hasNext()) {
processInstallShortcut(context, iter.next());
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index d0f4b86..6025c70 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -649,6 +649,9 @@
protected void onResume() {
super.onResume();
+ // Process any items that were added while Launcher was away
+ InstallShortcutReceiver.flushInstallQueue(this);
+
mPaused = false;
if (mRestoring || mOnResumeNeedsLoad) {
mWorkspaceLoading = true;