am 18b36f0d: am b6f23a6c: am bbe41b55: Merge change I4bd71b0f into eclair

Merge commit '18b36f0dbaaf7164a9a77dc5a5431d324e36c879'

* commit '18b36f0dbaaf7164a9a77dc5a5431d324e36c879':
  Fix http://b/issue?id=2203681
diff --git a/res/xml/default_workspace.xml b/res/xml/default_workspace.xml
index 2c8b8ff..df7ca1e 100644
--- a/res/xml/default_workspace.xml
+++ b/res/xml/default_workspace.xml
@@ -16,31 +16,28 @@
 
 <favorites xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher2">
 
-com.android.camera
-
     <!--  Left screen [1] -->
-    
     <favorite
         launcher:packageName="com.android.camera"
         launcher:className="com.android.camera.Camera"
         launcher:screen="1"
         launcher:x="1"
         launcher:y="3" />
- 
+
      <favorite
         launcher:packageName="com.android.camera"
         launcher:className="com.android.camera.Camera"
         launcher:screen="1"
         launcher:x="2"
         launcher:y="3" />
-               
+        
     <!--  Middle screen [2] -->
     <search
         launcher:screen="2"
         launcher:x="0"
         launcher:y="0" />
 
-    <favorite
+   <favorite
         launcher:packageName="com.android.contacts"
         launcher:className="com.android.contacts.DialtactsActivity"
         launcher:screen="2"
@@ -83,23 +80,23 @@
         launcher:y="2" />
 
     <!--  Right screen [3] -->
-    
-	<appwidget
-		launcher:packageName="com.android.settings"
-		launcher:className="com.android.settings.widget.SettingsAppWidgetProvider"
-		launcher:screen="3"
-		launcher:x="0"
-		launcher:y="0"
-		launcher:spanX="4"
-		launcher:spanY="1" />
-		
+
+    <appwidget
+        launcher:packageName="com.android.settings"
+        launcher:className="com.android.settings.widget.SettingsAppWidgetProvider"
+        launcher:screen="3"
+        launcher:x="0"
+        launcher:y="0"
+        launcher:spanX="4"
+        launcher:spanY="1" />
+ 
     <favorite
         launcher:packageName="com.google.android.gm"
         launcher:className="com.google.android.gm.ConversationListActivityGmail"
         launcher:screen="3"
         launcher:x="1"
         launcher:y="3" />
-        		
+
     <favorite
         launcher:packageName="com.google.android.talk"
         launcher:className="com.google.android.talk.SigningInActivity"
diff --git a/src/com/android/launcher2/AllAppsView.java b/src/com/android/launcher2/AllAppsView.java
index d96268c..722213d 100644
--- a/src/com/android/launcher2/AllAppsView.java
+++ b/src/com/android/launcher2/AllAppsView.java
@@ -110,6 +110,8 @@
     private int mDownIconIndex = -1;
     private int mCurrentIconIndex = -1;
 
+    private boolean mShouldGainFocus;
+
 
     static class Defines {
         public static final int ALLOC_PARAMS = 0;
@@ -192,6 +194,10 @@
                 mRollo.setApps(mAllAppsList);
                 Log.d(TAG, "surfaceChanged... calling mRollo.setApps");
             }
+            if (mShouldGainFocus) {
+                gainFocus();
+                mShouldGainFocus = false;
+            }
         } else {
             mRollo.mHasSurface = true;
             mRollo.dirtyCheck();
@@ -249,24 +255,36 @@
         }
 
         if (gainFocus) {
-            if (!mArrowNavigation && mRollo.mState.iconCount > 0) {
-                // Select the first icon when we gain keyboard focus
-                mArrowNavigation = true;
-                mRollo.selectIcon(Math.round(mRollo.mMessageProc.mPosX) * Defines.COLUMNS_PER_PAGE,
-                        SELECTED_FOCUSED);
-                mRollo.mState.save();
+            if (mRollo != null) {
+                gainFocus();
+            } else {
+                mShouldGainFocus = true;
             }
         } else {
-            if (mArrowNavigation) {
-                // Clear selection when we lose focus
-                mRollo.clearSelectedIcon();
-                mRollo.setHomeSelected(SELECTED_NONE);
-                mRollo.mState.save();
-                mArrowNavigation = false;
+            if (mRollo != null) {
+                if (mArrowNavigation) {
+                    // Clear selection when we lose focus
+                    mRollo.clearSelectedIcon();
+                    mRollo.setHomeSelected(SELECTED_NONE);
+                    mRollo.mState.save();
+                    mArrowNavigation = false;
+                }
+            } else {
+                mShouldGainFocus = false;
             }
         }
     }
 
+    private void gainFocus() {
+        if (!mArrowNavigation && mRollo.mState.iconCount > 0) {
+            // Select the first icon when we gain keyboard focus
+            mArrowNavigation = true;
+            mRollo.selectIcon(Math.round(mRollo.mMessageProc.mPosX) * Defines.COLUMNS_PER_PAGE,
+                    SELECTED_FOCUSED);
+            mRollo.mState.save();
+        }
+    }
+
     @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {