Merge "Fix Proguard flags."
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index ebcdea5..ffedec7 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -94,11 +94,6 @@
             </intent-filter>
         </activity>
 
-        <!-- Enable system-default search mode for any activity in Home -->
-        <meta-data
-            android:name="android.app.default_searchable"
-            android:value="*" />
-
         <!-- Intent received used to install shortcuts from other applications -->
         <receiver
             android:name=".InstallShortcutReceiver"
diff --git a/res/drawable-hdpi/box_launcher_bottom.9.png b/res/drawable-hdpi/box_launcher_bottom.9.png
index f08c7a2..9708e73 100644
--- a/res/drawable-hdpi/box_launcher_bottom.9.png
+++ b/res/drawable-hdpi/box_launcher_bottom.9.png
Binary files differ
diff --git a/res/raw/allapps.rs b/res/raw/allapps.rs
index 1d4aed3..4f6e284 100644
--- a/res/raw/allapps.rs
+++ b/res/raw/allapps.rs
@@ -93,6 +93,7 @@
     g_LastTouchDown = 0;
     g_LastPositionX = 0;
     g_Zoom = 0;
+    g_Animation = 1.f;
     g_SpecialHWWar = 1;
     g_MoveToTime = 0;
     g_MoveToOldPos = 0;
@@ -312,7 +313,7 @@
 
             if (iconNum >= 0) {
                 float x = colWidth * col + (colWidth / 2);
-                vpConstants->Position.x = x;
+                vpConstants->Position.x = x + 0.2f;
 
                 if (state->selectedIconIndex == iconNum && !p) {
                     bindProgramFragment(NAMED_PFTexNearest);
@@ -326,14 +327,14 @@
                 bindProgramFragment(NAMED_PFTexMip);
                 vpConstants->ImgSize.x = ICON_TEXTURE_WIDTH_PX;
                 vpConstants->ImgSize.y = ICON_TEXTURE_HEIGHT_PX;
-                vpConstants->Position.y = y;
+                vpConstants->Position.y = y - 0.2f;
                 bindTexture(NAMED_PFTexMip, 0, loadI32(ALLOC_ICON_IDS, iconNum));
                 drawSimpleMesh(NAMED_SMCell);
 
                 bindProgramFragment(NAMED_PFTexMipAlpha);
                 vpConstants->ImgSize.x = 120.f;
                 vpConstants->ImgSize.y = 64.f;
-                vpConstants->Position.y = y - 64.f;
+                vpConstants->Position.y = y - 64.f - 0.2f;
                 bindTexture(NAMED_PFTexMipAlpha, 0, loadI32(ALLOC_LABEL_IDS, iconNum));
                 drawSimpleMesh(NAMED_SMCell);
             }
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 1c846b8..9157436 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -33,7 +33,7 @@
     <string name="group_folder" msgid="5143593791798929193">"Neuer Ordner"</string>
     <string name="group_live_folders" msgid="2664945399140647217">"Ordner"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgets"</string>
-    <string name="group_wallpapers" msgid="1568191644272224858">"Hintergrundbilder"</string>
+    <string name="group_wallpapers" msgid="1568191644272224858">"Hintergründe"</string>
     <string name="add_folder" msgid="3521088587367839879">"Ordner"</string>
     <string name="add_clock" msgid="2337943840175865746">"Uhr"</string>
     <string name="add_photo_frame" msgid="3154058437359487954">"Bildrahmen"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 1d3e3dd..696d846 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -27,7 +27,7 @@
     <string name="rename_folder_title" msgid="4544573104191526550">"Cambiar nombre de carpeta"</string>
     <string name="rename_action" msgid="6016003384693240896">"Aceptar"</string>
     <string name="cancel_action" msgid="3811860427489435048">"Cancelar"</string>
-    <string name="menu_item_add_item" msgid="6233177331075781114">"Añadir a pantalla de página principal"</string>
+    <string name="menu_item_add_item" msgid="6233177331075781114">"Añadir a pantalla de inicio"</string>
     <string name="group_applications" msgid="4118484163419674240">"Aplicaciones"</string>
     <string name="group_shortcuts" msgid="9133529424900391877">"Accesos directos"</string>
     <string name="group_folder" msgid="5143593791798929193">"Nueva carpeta"</string>
@@ -37,14 +37,14 @@
     <string name="add_folder" msgid="3521088587367839879">"Carpeta"</string>
     <string name="add_clock" msgid="2337943840175865746">"Reloj"</string>
     <string name="add_photo_frame" msgid="3154058437359487954">"Picture frame"</string>
-    <string name="out_of_space" msgid="8365249326091984698">"No queda espacio en esta pantalla de página principal."</string>
+    <string name="out_of_space" msgid="8365249326091984698">"No queda espacio en esta pantalla de inicio."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Se ha creado el acceso directo \"<xliff:g id="NAME">%s</xliff:g>\"."</string>
     <string name="shortcut_uninstalled" msgid="2129499669449749995">"Se ha eliminado el acceso directo \"<xliff:g id="NAME">%s</xliff:g>\"."</string>
     <string name="shortcut_duplicate" msgid="4757756326465060694">"El acceso directo \"<xliff:g id="NAME">%s</xliff:g>\" ya existe."</string>
     <string name="title_select_shortcut" msgid="2858897527672831763">"Seleccionar acceso directo"</string>
     <string name="title_select_live_folder" msgid="3753447798805166749">"Seleccionar carpeta"</string>
     <string name="all_apps_button_label" msgid="3953036962111614813">"Todas las aplicaciones"</string>
-    <string name="all_apps_home_button_label" msgid="1022222300329398558">"Página principal"</string>
+    <string name="all_apps_home_button_label" msgid="1022222300329398558">"Inicio"</string>
     <string name="menu_add" msgid="3065046628354640854">"Añadir"</string>
     <string name="menu_wallpaper" msgid="5837429080911269832">"Fondo de pantalla"</string>
     <string name="menu_search" msgid="4826514464423239041">"Buscar con Google"</string>
@@ -55,9 +55,9 @@
     <string name="permdesc_install_shortcut" msgid="7429365847558984148">"Permite que una aplicación añada accesos directos sin intervención del usuario."</string>
     <string name="permlab_uninstall_shortcut" msgid="7696645932555926449">"desinstalar accesos directos"</string>
     <string name="permdesc_uninstall_shortcut" msgid="959972195916090900">"Permite que una aplicación elimine accesos directos sin intervención del usuario."</string>
-    <string name="permlab_read_settings" msgid="3452408290738106747">"leer información de accesos directos y de configuración de la página principal"</string>
-    <string name="permdesc_read_settings" msgid="8377434937176025492">"Permite que una aplicación lea la información de configuración y accesos directos de la página principal."</string>
-    <string name="permlab_write_settings" msgid="1360567537236705628">"escribir información de accesos directos y de configuración de la página principal"</string>
-    <string name="permdesc_write_settings" msgid="1098648778383349818">"Permite que una aplicación modifique la configuración y los accesos directos de la página principal."</string>
+    <string name="permlab_read_settings" msgid="3452408290738106747">"leer información de accesos directos y de configuración de la página de inicio"</string>
+    <string name="permdesc_read_settings" msgid="8377434937176025492">"Permite que una aplicación lea la información de configuración y accesos directos de la página de inicio."</string>
+    <string name="permlab_write_settings" msgid="1360567537236705628">"escribir información de accesos directos y de configuración de la página de inicio"</string>
+    <string name="permdesc_write_settings" msgid="1098648778383349818">"Permite que una aplicación modifique la configuración y los accesos directos de la página de inicio."</string>
     <string name="gadget_error_text" msgid="8359351016167075858">"Problema al cargar el widget"</string>
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 2b19e26..f37cfef 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -44,7 +44,7 @@
     <string name="title_select_shortcut" msgid="2858897527672831763">"Sélectionner un raccourci"</string>
     <string name="title_select_live_folder" msgid="3753447798805166749">"Sélectionner le dossier"</string>
     <string name="all_apps_button_label" msgid="3953036962111614813">"Toutes les applications"</string>
-    <string name="all_apps_home_button_label" msgid="1022222300329398558">"Domicile"</string>
+    <string name="all_apps_home_button_label" msgid="1022222300329398558">"Page d\'accueil"</string>
     <string name="menu_add" msgid="3065046628354640854">"Ajouter"</string>
     <string name="menu_wallpaper" msgid="5837429080911269832">"Fond d\'écran"</string>
     <string name="menu_search" msgid="4826514464423239041">"Rechercher"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 0998818..2e8dd98 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -20,8 +20,7 @@
     <string name="folder_name" msgid="4588446541914685904">"Pasta"</string>
     <string name="chooser_wallpaper" msgid="5988031014201479733">"Seleccionar imagem de fundo a partir de"</string>
     <string name="wallpaper_instructions" msgid="4215640646180727542">"Definir imagem de fundo"</string>
-    <!-- no translation found for pick_wallpaper (5630222540525626723) -->
-    <skip />
+    <string name="pick_wallpaper" msgid="5630222540525626723">"Imagens de fundo"</string>
     <string name="activity_not_found" msgid="3571057450431950427">"A aplicação não está instalada no telefone."</string>
     <string name="configure_wallpaper" msgid="2820186271419674623">"Configurar..."</string>
     <string name="rename_folder_label" msgid="5646236631298452787">"Nome da pasta"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 08686c1..d7b3553 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -20,8 +20,7 @@
     <string name="folder_name" msgid="4588446541914685904">"Pasta"</string>
     <string name="chooser_wallpaper" msgid="5988031014201479733">"Selecionar papel de parede de"</string>
     <string name="wallpaper_instructions" msgid="4215640646180727542">"Definir papel de parede"</string>
-    <!-- no translation found for pick_wallpaper (5630222540525626723) -->
-    <skip />
+    <string name="pick_wallpaper" msgid="5630222540525626723">"Papéis de parede"</string>
     <string name="activity_not_found" msgid="3571057450431950427">"O aplicativo não está instalado no seu telefone."</string>
     <string name="configure_wallpaper" msgid="2820186271419674623">"Configurar..."</string>
     <string name="rename_folder_label" msgid="5646236631298452787">"Nome da pasta"</string>
diff --git a/src/com/android/launcher2/AllAppsView.java b/src/com/android/launcher2/AllAppsView.java
index d3503de..cf75250 100644
--- a/src/com/android/launcher2/AllAppsView.java
+++ b/src/com/android/launcher2/AllAppsView.java
@@ -1266,24 +1266,24 @@
          * Send the apps list structures to RS.
          */
         private void saveAppsList() {
-            mRS.contextBindRootScript(null);
+            // WTF: how could mScript be not null but mAllocIconIds null b/2460740.
+            if (mScript != null && mAllocIconIds != null) {
+                mRS.contextBindRootScript(null);
 
-            mAllocIconIds.data(mIconIds);
-            mAllocLabelIds.data(mLabelIds);
+                mAllocIconIds.data(mIconIds);
+                mAllocLabelIds.data(mLabelIds);
 
-            if (mScript != null) { // this happens when we init it
                 mScript.bindAllocation(mAllocIconIds, Defines.ALLOC_ICON_IDS);
                 mScript.bindAllocation(mAllocLabelIds, Defines.ALLOC_LABEL_IDS);
-            }
 
-            mState.save();
+                mState.save();
 
-            // Note: mScript may be null if we haven't initialized it yet.
-            // In that case, this is a no-op.
-            if (mInvokeResetWAR != null) {
-                mInvokeResetWAR.execute();
-            }
-            if (mScript != null) {
+                // Note: mScript may be null if we haven't initialized it yet.
+                // In that case, this is a no-op.
+                if (mInvokeResetWAR != null) {
+                    mInvokeResetWAR.execute();
+                }
+
                 mRS.contextBindRootScript(mScript);
             }
         }
diff --git a/src/com/android/launcher2/Folder.java b/src/com/android/launcher2/Folder.java
index 7c35f79..435004d 100644
--- a/src/com/android/launcher2/Folder.java
+++ b/src/com/android/launcher2/Folder.java
@@ -17,6 +17,7 @@
 package com.android.launcher2;
 
 import android.content.Context;
+import android.graphics.Rect;
 import android.util.AttributeSet;
 import android.view.View;
 import android.view.View.OnClickListener;
@@ -47,7 +48,6 @@
      * Which item is being dragged
      */
     protected ShortcutInfo mDragItem;
-    private boolean mCloneInfo;
 
     /**
      * Used to inflate the Workspace from XML.
@@ -75,6 +75,10 @@
     
     public void onItemClick(AdapterView parent, View v, int position, long id) {
         ShortcutInfo app = (ShortcutInfo) parent.getItemAtPosition(position);
+        int[] pos = new int[2];
+        v.getLocationOnScreen(pos);
+        app.intent.setSourceBounds(new Rect(pos[0], pos[1],
+                pos[0] + v.getWidth(), pos[1] + v.getHeight()));
         mLauncher.startActivitySafely(app.intent);
     }
 
@@ -94,9 +98,6 @@
         }
 
         ShortcutInfo app = (ShortcutInfo) parent.getItemAtPosition(position);
-        if (mCloneInfo) {
-            app = new ShortcutInfo(app);
-        }
 
         mDragController.startDrag(view, this, app, DragController.DRAG_ACTION_COPY);
         mLauncher.closeFolder(this);
@@ -105,10 +106,6 @@
         return true;
     }
 
-    void setCloneInfo(boolean cloneInfo) {
-        mCloneInfo = cloneInfo;
-    }
-
     public void setDragController(DragController dragController) {
         mDragController = dragController;
     }
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index ee92fc7..11b26c5 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -369,7 +369,7 @@
                     completeAddApplication(this, data, mAddItemCellInfo);
                     break;
                 case REQUEST_PICK_SHORTCUT:
-                    processShortcut(data, REQUEST_PICK_APPLICATION, REQUEST_CREATE_SHORTCUT);
+                    processShortcut(data);
                     break;
                 case REQUEST_CREATE_SHORTCUT:
                     completeAddShortcut(data, mAddItemCellInfo);
@@ -1008,7 +1008,7 @@
         }
     }
 
-    void processShortcut(Intent intent, int requestCodeApplication, int requestCodeShortcut) {
+    void processShortcut(Intent intent) {
         // Handle case where user selected "Applications"
         String applicationName = getResources().getString(R.string.group_applications);
         String shortcutName = intent.getStringExtra(Intent.EXTRA_SHORTCUT_NAME);
@@ -1019,9 +1019,9 @@
 
             Intent pickIntent = new Intent(Intent.ACTION_PICK_ACTIVITY);
             pickIntent.putExtra(Intent.EXTRA_INTENT, mainIntent);
-            startActivityForResult(pickIntent, requestCodeApplication);
+            startActivityForResult(pickIntent, REQUEST_PICK_APPLICATION);
         } else {
-            startActivityForResult(intent, requestCodeShortcut);
+            startActivityForResult(intent, REQUEST_CREATE_SHORTCUT);
         }
     }
 
@@ -1258,11 +1258,11 @@
         Object tag = v.getTag();
         if (tag instanceof ShortcutInfo) {
             // Open shortcut
-            final Intent intent = ((ShortcutInfo)tag).intent;
+            final Intent intent = ((ShortcutInfo) tag).intent;
             int[] pos = new int[2];
             v.getLocationOnScreen(pos);
-            intent.setSourceBounds(
-                    new Rect(pos[0], pos[1], pos[0]+v.getWidth(), pos[1]+v.getHeight()));
+            intent.setSourceBounds(new Rect(pos[0], pos[1],
+                    pos[0] + v.getWidth(), pos[1] + v.getHeight()));
             startActivitySafely(intent);
         } else if (tag instanceof FolderInfo) {
             handleFolderClick((FolderInfo) tag);
@@ -1579,7 +1579,7 @@
         showDialog(DIALOG_CREATE_SHORTCUT);
     }
 
-    private void pickShortcut(int requestCode, int title) {
+    private void pickShortcut() {
         Bundle bundle = new Bundle();
 
         ArrayList<String> shortcutNames = new ArrayList<String>();
@@ -1593,10 +1593,10 @@
 
         Intent pickIntent = new Intent(Intent.ACTION_PICK_ACTIVITY);
         pickIntent.putExtra(Intent.EXTRA_INTENT, new Intent(Intent.ACTION_CREATE_SHORTCUT));
-        pickIntent.putExtra(Intent.EXTRA_TITLE, getText(title));
+        pickIntent.putExtra(Intent.EXTRA_TITLE, getText(R.string.title_select_shortcut));
         pickIntent.putExtras(bundle);
 
-        startActivityForResult(pickIntent, requestCode);
+        startActivityForResult(pickIntent, REQUEST_PICK_SHORTCUT);
     }
 
     private class RenameFolder {
@@ -1801,7 +1801,7 @@
             switch (which) {
                 case AddAdapter.ITEM_SHORTCUT: {
                     // Insert extra item to handle picking application
-                    pickShortcut(REQUEST_PICK_SHORTCUT, R.string.title_select_shortcut);
+                    pickShortcut();
                     break;
                 }
 
diff --git a/src/com/android/launcher2/LauncherProvider.java b/src/com/android/launcher2/LauncherProvider.java
index 24b877b..14c83b3 100644
--- a/src/com/android/launcher2/LauncherProvider.java
+++ b/src/com/android/launcher2/LauncherProvider.java
@@ -55,7 +55,8 @@
 
 import org.xmlpull.v1.XmlPullParserException;
 import org.xmlpull.v1.XmlPullParser;
-import com.android.common.XmlUtils;
+
+import com.android.internal.util.XmlUtils;
 import com.android.launcher2.LauncherSettings.Favorites;
 
 public class LauncherProvider extends ContentProvider {
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index de4f051..e64c487 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -29,6 +29,7 @@
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
+import android.os.IBinder;
 import android.os.Parcelable;
 import android.os.Parcel;
 import android.util.AttributeSet;
@@ -377,8 +378,11 @@
     }
 
     private void updateWallpaperOffset(int scrollRange) {
-        mWallpaperManager.setWallpaperOffsetSteps(1.0f / (getChildCount() - 1), 0 );
-        mWallpaperManager.setWallpaperOffsets(getWindowToken(), mScrollX / (float) scrollRange, 0);
+        IBinder token = getWindowToken();
+        if (token != null) {
+            mWallpaperManager.setWallpaperOffsetSteps(1.0f / (getChildCount() - 1), 0 );
+            mWallpaperManager.setWallpaperOffsets(getWindowToken(), mScrollX/(float)scrollRange, 0);
+        }
     }
     
     @Override
@@ -435,6 +439,7 @@
 
     protected void onAttachedToWindow() {
         super.onAttachedToWindow();
+        computeScroll();
         mDragController.setWindowToken(getWindowToken());
     }
 
@@ -953,7 +958,7 @@
         switch (info.itemType) {
         case LauncherSettings.Favorites.ITEM_TYPE_APPLICATION:
         case LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT:
-            if (info.container == NO_ID) {
+            if (info.container == NO_ID && info instanceof ApplicationInfo) {
                 // Came from all apps -- make a copy
                 info = new ShortcutInfo((ApplicationInfo)info);
             }