Merge branch 'froyo' into froyo-release
diff --git a/src/com/android/launcher2/DragController.java b/src/com/android/launcher2/DragController.java
index daabbcc..b4f972b 100644
--- a/src/com/android/launcher2/DragController.java
+++ b/src/com/android/launcher2/DragController.java
@@ -163,6 +163,11 @@
 
         Bitmap b = getViewBitmap(v);
 
+        if (b == null) {
+            // out of memory?
+            return;
+        }
+
         int[] loc = mCoordinatesTemp;
         v.getLocationOnScreen(loc);
         int screenX = loc[0];
@@ -249,6 +254,10 @@
         }
         v.buildDrawingCache();
         Bitmap cacheBitmap = v.getDrawingCache();
+        if (cacheBitmap == null) {
+            Log.e(TAG, "failed getViewBitmap(" + v + ")", new RuntimeException());
+            return null;
+        }
 
         Bitmap bitmap = Bitmap.createBitmap(cacheBitmap);
 
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 132f0e9..52f1224 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -204,7 +204,6 @@
     private ImageView mNextView;
 
     // Hotseats (quick-launch icons next to AllApps)
-    // TODO: move these intial intents out to Uris in an XML resource
     private static final int NUM_HOTSEATS = 2;
     private String[] mHotseatConfig = null;
     private Intent[] mHotseats = null;
@@ -782,6 +781,8 @@
 
     @SuppressWarnings({"UnusedDeclaration"})
     public void launchHotSeat(View v) {
+        if (isAllAppsVisible()) return;
+
         int index = -1;
         if (v.getId() == R.id.hotseat_left) {
             index = 0;
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index f65d956..c337c30 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -36,6 +36,7 @@
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.AttributeSet;
+import android.util.Log;
 import android.view.MotionEvent;
 import android.view.VelocityTracker;
 import android.view.View;
@@ -363,7 +364,9 @@
      */
     void addInScreen(View child, int screen, int x, int y, int spanX, int spanY, boolean insert) {
         if (screen < 0 || screen >= getChildCount()) {
-            throw new IllegalStateException("The screen must be >= 0 and < " + getChildCount());
+            Log.e(TAG, "The screen must be >= 0 and < " + getChildCount()
+                + " (was " + screen + "); skipping child");
+            return;
         }
 
         clearVacantCache();