merge in jb-release history after reset to jb-dev
diff --git a/res/drawable-hdpi/hotseat_bg_panel.9.png b/res/drawable-hdpi/hotseat_bg_panel.9.png
deleted file mode 100644
index 6724b7a..0000000
--- a/res/drawable-hdpi/hotseat_bg_panel.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/search_bg_panel.9.png b/res/drawable-hdpi/search_bg_panel.9.png
deleted file mode 100644
index f2a63f9..0000000
--- a/res/drawable-hdpi/search_bg_panel.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/workspace_bg.9.png b/res/drawable-hdpi/workspace_bg.9.png
new file mode 100644
index 0000000..eeed8e7
--- /dev/null
+++ b/res/drawable-hdpi/workspace_bg.9.png
Binary files differ
diff --git a/res/drawable-land-hdpi/hotseat_bg_panel.9.png b/res/drawable-land-hdpi/hotseat_bg_panel.9.png
deleted file mode 100644
index 90177f8..0000000
--- a/res/drawable-land-hdpi/hotseat_bg_panel.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-land-hdpi/search_bg_panel.9.png b/res/drawable-land-hdpi/search_bg_panel.9.png
deleted file mode 100644
index 78f80c9..0000000
--- a/res/drawable-land-hdpi/search_bg_panel.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-land-hdpi/workspace_bg.9.png b/res/drawable-land-hdpi/workspace_bg.9.png
new file mode 100644
index 0000000..069bb1f
--- /dev/null
+++ b/res/drawable-land-hdpi/workspace_bg.9.png
Binary files differ
diff --git a/res/drawable-land-mdpi/hotseat_bg_panel.9.png b/res/drawable-land-mdpi/hotseat_bg_panel.9.png
deleted file mode 100644
index 83c4a55..0000000
--- a/res/drawable-land-mdpi/hotseat_bg_panel.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-land-mdpi/search_bg_panel.9.png b/res/drawable-land-mdpi/search_bg_panel.9.png
deleted file mode 100644
index 94bcf68..0000000
--- a/res/drawable-land-mdpi/search_bg_panel.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-land-mdpi/workspace_bg.9.png b/res/drawable-land-mdpi/workspace_bg.9.png
new file mode 100644
index 0000000..611bd5b
--- /dev/null
+++ b/res/drawable-land-mdpi/workspace_bg.9.png
Binary files differ
diff --git a/res/drawable-land-xhdpi/hotseat_bg_panel.9.png b/res/drawable-land-xhdpi/hotseat_bg_panel.9.png
deleted file mode 100644
index 8718040..0000000
--- a/res/drawable-land-xhdpi/hotseat_bg_panel.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-land-xhdpi/search_bg_panel.9.png b/res/drawable-land-xhdpi/search_bg_panel.9.png
deleted file mode 100644
index be3a3e8..0000000
--- a/res/drawable-land-xhdpi/search_bg_panel.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-land-xhdpi/workspace_bg.9.png b/res/drawable-land-xhdpi/workspace_bg.9.png
new file mode 100644
index 0000000..a1f60c6
--- /dev/null
+++ b/res/drawable-land-xhdpi/workspace_bg.9.png
Binary files differ
diff --git a/res/drawable-mdpi/hotseat_bg_panel.9.png b/res/drawable-mdpi/hotseat_bg_panel.9.png
deleted file mode 100644
index 75609d8..0000000
--- a/res/drawable-mdpi/hotseat_bg_panel.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/search_bg_panel.9.png b/res/drawable-mdpi/search_bg_panel.9.png
deleted file mode 100644
index 615e9a0..0000000
--- a/res/drawable-mdpi/search_bg_panel.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/workspace_bg.9.png b/res/drawable-mdpi/workspace_bg.9.png
new file mode 100644
index 0000000..a30d992
--- /dev/null
+++ b/res/drawable-mdpi/workspace_bg.9.png
Binary files differ
diff --git a/res/drawable-xhdpi/hotseat_bg_panel.9.png b/res/drawable-xhdpi/hotseat_bg_panel.9.png
deleted file mode 100644
index 748a302..0000000
--- a/res/drawable-xhdpi/hotseat_bg_panel.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/search_bg_panel.9.png b/res/drawable-xhdpi/search_bg_panel.9.png
deleted file mode 100644
index f080337..0000000
--- a/res/drawable-xhdpi/search_bg_panel.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/workspace_bg.9.png b/res/drawable-xhdpi/workspace_bg.9.png
new file mode 100644
index 0000000..ceac4f2
--- /dev/null
+++ b/res/drawable-xhdpi/workspace_bg.9.png
Binary files differ
diff --git a/res/layout-land/hotseat.xml b/res/layout-land/hotseat.xml
index 6802ea0..d759196 100644
--- a/res/layout-land/hotseat.xml
+++ b/res/layout-land/hotseat.xml
@@ -16,7 +16,6 @@
 <com.android.launcher2.Hotseat
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher"
-    android:background="@drawable/hotseat_bg_panel"
     launcher:cellCountX="1"
     launcher:cellCountY="@integer/hotseat_cell_count">
     <com.android.launcher2.CellLayout
diff --git a/res/layout-land/launcher.xml b/res/layout-land/launcher.xml
index 35f1a08..99d4181 100644
--- a/res/layout-land/launcher.xml
+++ b/res/layout-land/launcher.xml
@@ -19,6 +19,7 @@
     xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher"
 
     android:id="@+id/drag_layer"
+    android:background="@drawable/workspace_bg"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
diff --git a/res/layout-port/hotseat.xml b/res/layout-port/hotseat.xml
index b937043..376173a 100644
--- a/res/layout-port/hotseat.xml
+++ b/res/layout-port/hotseat.xml
@@ -16,7 +16,6 @@
 <com.android.launcher2.Hotseat
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher"
-    android:background="@drawable/hotseat_bg_panel"
     launcher:cellCountX="@integer/hotseat_cell_count"
     launcher:cellCountY="1">
     <com.android.launcher2.CellLayout
diff --git a/res/layout-port/launcher.xml b/res/layout-port/launcher.xml
index 6030382..34301a3 100644
--- a/res/layout-port/launcher.xml
+++ b/res/layout-port/launcher.xml
@@ -19,6 +19,7 @@
     xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher"
 
     android:id="@+id/drag_layer"
+    android:background="@drawable/workspace_bg"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 8187f0f..77aeb42 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Панэль запуску"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"На галоўную старонку"</string>
     <string name="uid_name" msgid="3371120195364560632">"Асноўныя прыкладанні для Android"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Выбраць шпалеры"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index e38d62c..93c8a06 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Стартов панел"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Начало"</string>
     <string name="uid_name" msgid="3371120195364560632">"Основни приложения на Android"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Избор на тапет от"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 22d5c63..aae1085 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Barra d\'execució ràpida"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Pàgina d\'inici"</string>
     <string name="uid_name" msgid="3371120195364560632">"Aplicacions principals d\'Android"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Selecciona fons de pantalla de"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index f1bace6..3461b54 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Launcher"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Domovská stránka"</string>
     <string name="uid_name" msgid="3371120195364560632">"Android Core Apps"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Vybrat tapetu z"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 5dc3460..196e6e6 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Übersicht"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Startbildschirm"</string>
     <string name="uid_name" msgid="3371120195364560632">"Android Core Apps"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Hintergrund auswählen von"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index fa1ea16..7129662 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Launcher"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Casa"</string>
     <string name="uid_name" msgid="3371120195364560632">"Aplicaciones del núcleo de Android"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Elegir un fondo de pantalla de"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 7950a60..ddaab8d 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Launcher"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Casa"</string>
     <string name="uid_name" msgid="3371120195364560632">"Aplicaciones básicas de Android"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Seleccionar fondo de pantalla de"</string>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 7f41e14..9cfa7a7 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Käivitaja"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Kodu"</string>
     <string name="uid_name" msgid="3371120195364560632">"Androidi tuumrakendused"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Taustapildi valimiskoht:"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index d381660..2015c54 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"راه انداز"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"صفحه اصلی"</string>
     <string name="uid_name" msgid="3371120195364560632">"برنامه های Android Core"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"انتخاب تصویر زمینه از"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 2d64230..6a6bae7 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Käynnistysohjelma"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Aloitusruutu"</string>
     <string name="uid_name" msgid="3371120195364560632">"Android Core -sovellukset"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Valitse taustakuva"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 77f4b86..71ca811 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"लॉन्चर"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"मुखपृष्ठ"</string>
     <string name="uid_name" msgid="3371120195364560632">"Android मुख्य एप्लिकेशन"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"वॉलपेपर यहां से चुनें:"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 8ff377a..4c8ef1c 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Pokretač"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Početna"</string>
     <string name="uid_name" msgid="3371120195364560632">"Matične aplikacije za Android"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Odabir pozadinske slike iz"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index a085dbe..63d9539 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Indító"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Főoldal"</string>
     <string name="uid_name" msgid="3371120195364560632">"Alap Android-alkalmazások"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Válasszon tapétát innen:"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index de042ba..ff351d4 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Peluncur"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Beranda"</string>
     <string name="uid_name" msgid="3371120195364560632">"Android Core Apps"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Pilih wallpaper dari"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index e8f7a10..6fa6b28 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"ランチャー"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"ホーム"</string>
     <string name="uid_name" msgid="3371120195364560632">"Android Core Apps"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"壁紙の選択"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 06e3fa7..9c6360a 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Launcher"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"홈"</string>
     <string name="uid_name" msgid="3371120195364560632">"Android Core 애플리케이션"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"배경화면 선택"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 778eece..33a0a03 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Paleidimo priemonė"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Pagrindinis"</string>
     <string name="uid_name" msgid="3371120195364560632">"Pagrindinės „Android“ programos"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Pasirinkti darbalaukio foną iš"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index ece00fa..9e2031a 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Palaidējs"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Sākums"</string>
     <string name="uid_name" msgid="3371120195364560632">"Android kodola lietojumprogrammas"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Fona tapetes izvēle:"</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index a66c882..162138b 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Pelancar"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Laman Utama"</string>
     <string name="uid_name" msgid="3371120195364560632">"Apl Teras Android"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Pilih kertas dinding dari"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 038fefe..64cadd4 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Utskytingsrampe"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Home"</string>
     <string name="uid_name" msgid="3371120195364560632">"Android-kjerneapplikasjoner"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Velg bakgrunnsbilde fra"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 83beefb..5b2897d 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Program uruchamiający"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Strona główna"</string>
     <string name="uid_name" msgid="3371120195364560632">"Aplikacje główne systemu Android"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Wybierz tapetę z"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index c3c5a28..792ff13 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Launcher"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Página Inicial"</string>
     <string name="uid_name" msgid="3371120195364560632">"Aplicações Principais do Android"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Escolher imagem de fundo de"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 0449308..b98198e 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Lansator"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Ecran de pornire"</string>
     <string name="uid_name" msgid="3371120195364560632">"Android Core Apps"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Alegeţi imaginea de fundal din"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 8b53be0..f62ff66 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Launcher"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Главный экран"</string>
     <string name="uid_name" msgid="3371120195364560632">"Основные приложения"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Установка обоев"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index cacff8f..52f1128 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Spúšťač"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Plocha"</string>
     <string name="uid_name" msgid="3371120195364560632">"Android Core Apps"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Vybrať tapetu z"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index dfe4a0c..da7069c 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Zaganjalnik"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Začetna stran"</string>
     <string name="uid_name" msgid="3371120195364560632">"Android Core Apps"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Izberite sliko za ozadje"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index a8a2131..783ca57 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Покретач"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Кућни"</string>
     <string name="uid_name" msgid="3371120195364560632">"Основне Android апликације"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Избор позадине из"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 3d0a49c..d3796e8 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"ตัวเรียกใช้งาน"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"หน้าแรก"</string>
     <string name="uid_name" msgid="3371120195364560632">"แอปหลัก Android"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"เลือกวอลเปเปอร์จาก"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 99cd481..a26eea2 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Launcher"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Home"</string>
     <string name="uid_name" msgid="3371120195364560632">"Android Core Apps"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Pumili ng wallpaper mula sa"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 7767660..18036d4 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Launcher"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Ana Ekran"</string>
     <string name="uid_name" msgid="3371120195364560632">"Android Core Apps"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Duvar kağıdı seçin:"</string>
@@ -42,7 +41,7 @@
     <string name="group_shortcuts" msgid="9133529424900391877">"Kısayollar"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widget\'lar"</string>
     <string name="group_wallpapers" msgid="1568191644272224858">"Duvar Kağıtları"</string>
-    <string name="completely_out_of_space" msgid="1759078539443491182">"Ana ekranlarınızda başka yer kalmadı."</string>
+    <string name="completely_out_of_space" msgid="1759078539443491182">"Ana ekranlarınızda yer kalmadı."</string>
     <string name="out_of_space" msgid="8365249326091984698">"Bu Ana Sayfada yer yok."</string>
     <string name="hotseat_out_of_space" msgid="6304886797358479361">"Favori kısayollarda yer yok"</string>
     <string name="invalid_hotseat_item" msgid="6545340627805449250">"Bu widget, hotseat için çok büyük."</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index dd2818f..0e633ed 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Пан. запуску"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Домашня сторінка"</string>
     <string name="uid_name" msgid="3371120195364560632">"Служби Android Core"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Вибрати фоновий малюнок з"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index dc6d7f1..8963c9c 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Trình khởi chạy"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Trang chủ"</string>
     <string name="uid_name" msgid="3371120195364560632">"Ứng dụng Lõi Android"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Chọn hình nền từ"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 5043c22..00e60cd 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"启动器"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"主屏幕"</string>
     <string name="uid_name" msgid="3371120195364560632">"Android 核心应用"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"选择壁纸来源"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index fbb5db7..d6b2a8a 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"啟動器"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"住家"</string>
     <string name="uid_name" msgid="3371120195364560632">"Android 核心應用程式"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"選擇桌布來源"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 37a5cfe..c06b93b 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -20,8 +20,7 @@
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name" msgid="8424725141379931883">"Isiqalisi"</string>
-    <!-- no translation found for home (5921706419368316758) -->
-    <skip />
+    <string name="home" msgid="5921706419368316758">"Ikhaya"</string>
     <string name="uid_name" msgid="3371120195364560632">"I-Android Core Apps"</string>
     <string name="folder_name" msgid="8551881338202938211"></string>
     <string name="chooser_wallpaper" msgid="6063168087625352235">"Khetha iphephalodonga kwi"</string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 6506f95..65b0f31 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -116,7 +116,6 @@
         <item name="android:layout_width">match_parent</item>
         <item name="android:layout_height">@dimen/qsb_bar_height</item>
         <item name="android:layout_gravity">top|center_horizontal</item>
-        <item name="android:background">@drawable/search_bg_panel</item>
         <item name="android:paddingLeft">@dimen/qsb_padding_left</item>
         <item name="android:paddingRight">@dimen/qsb_padding_right</item>
     </style>
diff --git a/src/com/android/launcher2/InstallShortcutReceiver.java b/src/com/android/launcher2/InstallShortcutReceiver.java
index 66b3f5f..6d91602 100644
--- a/src/com/android/launcher2/InstallShortcutReceiver.java
+++ b/src/com/android/launcher2/InstallShortcutReceiver.java
@@ -28,6 +28,7 @@
 
 import java.util.ArrayList;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.Set;
 
 public class InstallShortcutReceiver extends BroadcastReceiver {
@@ -47,16 +48,33 @@
     public static final String SHORTCUT_MIMETYPE =
             "com.android.launcher/shortcut";
 
-    private final int[] mCoordinates = new int[2];
+    // The set of shortcuts that are pending install
+    private static ArrayList<PendingInstallShortcutInfo> mInstallQueue =
+            new ArrayList<PendingInstallShortcutInfo>();
+
+    // Determines whether to defer installing shortcuts immediately until
+    // processAllPendingInstalls() is called.
+    private static boolean mUseInstallQueue = false;
+
+    private static class PendingInstallShortcutInfo {
+        Intent data;
+        Intent launchIntent;
+        String name;
+
+        public PendingInstallShortcutInfo(Intent rawData, String shortcutName,
+                Intent shortcutIntent) {
+            data = rawData;
+            name = shortcutName;
+            launchIntent = shortcutIntent;
+        }
+    }
 
     public void onReceive(Context context, Intent data) {
         if (!ACTION_INSTALL_SHORTCUT.equals(data.getAction())) {
             return;
         }
-        String spKey = LauncherApplication.getSharedPreferencesKey();
-        SharedPreferences sp = context.getSharedPreferences(spKey, Context.MODE_PRIVATE);
 
-        final Intent intent = data.getParcelableExtra(Intent.EXTRA_SHORTCUT_INTENT);
+        Intent intent = data.getParcelableExtra(Intent.EXTRA_SHORTCUT_INTENT);
         if (intent == null) {
             return;
         }
@@ -73,6 +91,36 @@
             }
         }
 
+        PendingInstallShortcutInfo info = new PendingInstallShortcutInfo(data, name, intent);
+        if (mUseInstallQueue) {
+            mInstallQueue.add(info);
+        } else {
+            processInstallShortcut(context, info);
+        }
+    }
+
+    static void enableInstallQueue() {
+        mUseInstallQueue = true;
+    }
+
+    static void disableAndFlushInstallQueue(Context context) {
+        mUseInstallQueue = false;
+        Iterator<PendingInstallShortcutInfo> iter = mInstallQueue.iterator();
+        while (iter.hasNext()) {
+            processInstallShortcut(context, iter.next());
+            iter.remove();
+        }
+    }
+
+    private static void processInstallShortcut(Context context,
+            PendingInstallShortcutInfo pendingInfo) {
+        String spKey = LauncherApplication.getSharedPreferencesKey();
+        SharedPreferences sp = context.getSharedPreferences(spKey, Context.MODE_PRIVATE);
+
+        final Intent data = pendingInfo.data;
+        final Intent intent = pendingInfo.launchIntent;
+        final String name = pendingInfo.name;
+
         // Lock on the app so that we don't try and get the items while apps are being added
         LauncherApplication app = (LauncherApplication) context.getApplicationContext();
         final int[] result = {INSTALL_SHORTCUT_SUCCESSFUL};
@@ -106,10 +154,11 @@
         }
     }
 
-    private boolean installShortcut(Context context, Intent data, ArrayList<ItemInfo> items,
+    private static boolean installShortcut(Context context, Intent data, ArrayList<ItemInfo> items,
             String name, Intent intent, final int screen, boolean shortcutExists,
             final SharedPreferences sharedPrefs, int[] result) {
-        if (findEmptyCell(context, items, mCoordinates, screen)) {
+        int[] tmpCoordinates = new int[2];
+        if (findEmptyCell(context, items, tmpCoordinates, screen)) {
             if (intent != null) {
                 if (intent.getAction() == null) {
                     intent.setAction(Intent.ACTION_VIEW);
@@ -145,7 +194,7 @@
                     LauncherApplication app = (LauncherApplication) context.getApplicationContext();
                     ShortcutInfo info = app.getModel().addShortcut(context, data,
                             LauncherSettings.Favorites.CONTAINER_DESKTOP, screen,
-                            mCoordinates[0], mCoordinates[1], true);
+                            tmpCoordinates[0], tmpCoordinates[1], true);
                     if (info == null) {
                         return false;
                     }
diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java
index b76df39..ff4abc6 100644
--- a/src/com/android/launcher2/LauncherModel.java
+++ b/src/com/android/launcher2/LauncherModel.java
@@ -1675,6 +1675,24 @@
     }
 
     /**
+     * Returns all the Workspace ShortcutInfos associated with a particular package.
+     * @param intent
+     * @return
+     */
+    ArrayList<ShortcutInfo> getShortcutInfosForPackage(String packageName) {
+        ArrayList<ShortcutInfo> infos = new ArrayList<ShortcutInfo>();
+        for (ItemInfo i : sWorkspaceItems) {
+            if (i instanceof ShortcutInfo) {
+                ShortcutInfo info = (ShortcutInfo) i;
+                if (info.intent.getPackage().equals(packageName)) {
+                    infos.add(info);
+                }
+            }
+        }
+        return infos;
+    }
+
+    /**
      * This is called from the code that adds shortcuts from the intent receiver.  This
      * doesn't have a Cursor, but
      */
diff --git a/src/com/android/launcher2/UninstallShortcutReceiver.java b/src/com/android/launcher2/UninstallShortcutReceiver.java
index 3f6de7c..84b1ad5 100644
--- a/src/com/android/launcher2/UninstallShortcutReceiver.java
+++ b/src/com/android/launcher2/UninstallShortcutReceiver.java
@@ -17,38 +17,83 @@
 package com.android.launcher2;
 
 import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
-import android.content.ContentResolver;
 import android.content.SharedPreferences;
 import android.database.Cursor;
 import android.net.Uri;
 import android.widget.Toast;
 
-import java.net.URISyntaxException;
-import java.util.HashSet;
-import java.util.Set;
-
 import com.android.launcher.R;
 
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
 public class UninstallShortcutReceiver extends BroadcastReceiver {
     private static final String ACTION_UNINSTALL_SHORTCUT =
             "com.android.launcher.action.UNINSTALL_SHORTCUT";
 
+    // The set of shortcuts that are pending uninstall
+    private static ArrayList<PendingUninstallShortcutInfo> mUninstallQueue =
+            new ArrayList<PendingUninstallShortcutInfo>();
+
+    // Determines whether to defer uninstalling shortcuts immediately until
+    // disableAndFlushUninstallQueue() is called.
+    private static boolean mUseUninstallQueue = false;
+
+    private static class PendingUninstallShortcutInfo {
+        Intent data;
+
+        public PendingUninstallShortcutInfo(Intent rawData) {
+            data = rawData;
+        }
+    }
+
     public void onReceive(Context context, Intent data) {
         if (!ACTION_UNINSTALL_SHORTCUT.equals(data.getAction())) {
             return;
         }
+
+        PendingUninstallShortcutInfo info = new PendingUninstallShortcutInfo(data);
+        if (mUseUninstallQueue) {
+            mUninstallQueue.add(info);
+        } else {
+            processUninstallShortcut(context, info);
+        }
+    }
+
+    static void enableUninstallQueue() {
+        mUseUninstallQueue = true;
+    }
+
+    static void disableAndFlushUninstallQueue(Context context) {
+        mUseUninstallQueue = false;
+        Iterator<PendingUninstallShortcutInfo> iter = mUninstallQueue.iterator();
+        while (iter.hasNext()) {
+            processUninstallShortcut(context, iter.next());
+            iter.remove();
+        }
+    }
+
+    private static void processUninstallShortcut(Context context,
+            PendingUninstallShortcutInfo pendingInfo) {
         String spKey = LauncherApplication.getSharedPreferencesKey();
         SharedPreferences sharedPrefs = context.getSharedPreferences(spKey, Context.MODE_PRIVATE);
 
+        final Intent data = pendingInfo.data;
+
         LauncherApplication app = (LauncherApplication) context.getApplicationContext();
         synchronized (app) {
             removeShortcut(context, data, sharedPrefs);
         }
     }
 
-    private void removeShortcut(Context context, Intent data, final SharedPreferences sharedPrefs) {
+    private static void removeShortcut(Context context, Intent data,
+            final SharedPreferences sharedPrefs) {
         Intent intent = data.getParcelableExtra(Intent.EXTRA_SHORTCUT_INTENT);
         String name = data.getStringExtra(Intent.EXTRA_SHORTCUT_NAME);
         boolean duplicate = data.getBooleanExtra(Launcher.EXTRA_SHORTCUT_DUPLICATE, true);
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index ec18fb3..e946095 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -29,6 +29,7 @@
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
+import android.content.SharedPreferences;
 import android.content.res.Resources;
 import android.content.res.TypedArray;
 import android.graphics.Bitmap;
@@ -38,8 +39,6 @@
 import android.graphics.Paint;
 import android.graphics.Point;
 import android.graphics.PointF;
-import android.graphics.PorterDuff;
-import android.graphics.PorterDuffColorFilter;
 import android.graphics.Rect;
 import android.graphics.Region.Op;
 import android.graphics.drawable.Drawable;
@@ -60,8 +59,11 @@
 import com.android.launcher2.FolderIcon.FolderRingAnimator;
 import com.android.launcher2.LauncherSettings.Favorites;
 
+import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
 
 /**
  * The workspace is a wide area with a wallpaper and a finite number of pages.
@@ -381,12 +383,20 @@
         mIsDragOccuring = true;
         updateChildrenLayersEnabled();
         mLauncher.lockScreenOrientation();
+
+        // Prevent any Un/InstallShortcutReceivers from updating the db while we are dragging
+        InstallShortcutReceiver.enableInstallQueue();
+        UninstallShortcutReceiver.enableUninstallQueue();
     }
 
     public void onDragEnd() {
         mIsDragOccuring = false;
         updateChildrenLayersEnabled();
         mLauncher.unlockScreenOrientation(false);
+
+        // Re-enable any Un/InstallShortcutReceiver and now process any queued items
+        InstallShortcutReceiver.disableAndFlushInstallQueue(getContext());
+        UninstallShortcutReceiver.disableAndFlushUninstallQueue(getContext());
     }
 
     /**
@@ -3614,11 +3624,9 @@
                             final ComponentName name = intent.getComponent();
 
                             if (name != null) {
-                                for (String packageName: packageNames) {
-                                    if (packageName.equals(name.getPackageName())) {
-                                        LauncherModel.deleteItemFromDatabase(mLauncher, info);
-                                        childrenToRemove.add(view);
-                                    }
+                                if (packageNames.contains(name.getPackageName())) {
+                                    LauncherModel.deleteItemFromDatabase(mLauncher, info);
+                                    childrenToRemove.add(view);
                                 }
                             }
                         } else if (tag instanceof FolderInfo) {
@@ -3634,10 +3642,8 @@
                                 final ComponentName name = intent.getComponent();
 
                                 if (name != null) {
-                                    for (String packageName: packageNames) {
-                                        if (packageName.equals(name.getPackageName())) {
-                                            appsToRemoveFromFolder.add(appInfo);
-                                        }
+                                    if (packageNames.contains(name.getPackageName())) {
+                                        appsToRemoveFromFolder.add(appInfo);
                                     }
                                 }
                             }
@@ -3649,11 +3655,9 @@
                             final LauncherAppWidgetInfo info = (LauncherAppWidgetInfo) tag;
                             final ComponentName provider = info.providerName;
                             if (provider != null) {
-                                for (String packageName: packageNames) {
-                                    if (packageName.equals(provider.getPackageName())) {
-                                        LauncherModel.deleteItemFromDatabase(mLauncher, info);
-                                        childrenToRemove.add(view);
-                                    }
+                                if (packageNames.contains(provider.getPackageName())) {
+                                    LauncherModel.deleteItemFromDatabase(mLauncher, info);
+                                    childrenToRemove.add(view);
                                 }
                             }
                         }
@@ -3677,6 +3681,42 @@
                 }
             });
         }
+
+        // It is no longer the case the BubbleTextViews correspond 1:1 with the workspace items in
+        // the database (and LauncherModel) since shortcuts are not added and animated in until
+        // the user returns to launcher.  As a result, we really should be cleaning up the Db
+        // regardless of whether the item was added or not (unlike the logic above).  This is only
+        // relevant for direct workspace items.
+        post(new Runnable() {
+            @Override
+            public void run() {
+                String spKey = LauncherApplication.getSharedPreferencesKey();
+                SharedPreferences sp = getContext().getSharedPreferences(spKey,
+                        Context.MODE_PRIVATE);
+                Set<String> newApps = sp.getStringSet(InstallShortcutReceiver.NEW_APPS_LIST_KEY,
+                        null);
+
+                for (String packageName: packageNames) {
+                    // Remove all items that have the same package, but were not removed above
+                    ArrayList<ShortcutInfo> infos =
+                            mLauncher.getModel().getShortcutInfosForPackage(packageName);
+                    for (ShortcutInfo info : infos) {
+                        LauncherModel.deleteItemFromDatabase(mLauncher, info);
+                    }
+                    // Remove all queued items that match the same package
+                    if (newApps != null) {
+                        for (String intentStr : newApps) {
+                            try {
+                                Intent intent = Intent.parseUri(intentStr, 0);
+                                if (packageNames.contains(intent.getPackage())) {
+                                    newApps.remove(intentStr);
+                                }
+                            } catch (URISyntaxException e) {}
+                        }
+                    }
+                }
+            }
+        });
     }
 
     void updateShortcuts(ArrayList<ApplicationInfo> apps) {