diff --git a/res/drawable-hdpi/ic_search_widget.png b/res/drawable-hdpi/ic_search_widget.png
deleted file mode 100644
index 06b9b25..0000000
--- a/res/drawable-hdpi/ic_search_widget.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/search_button_bg.9.png b/res/drawable-hdpi/search_button_bg.9.png
deleted file mode 100644
index 9fba3d1..0000000
--- a/res/drawable-hdpi/search_button_bg.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/search_button_voice.png b/res/drawable-hdpi/search_button_voice.png
deleted file mode 100644
index a60f7d9..0000000
--- a/res/drawable-hdpi/search_button_voice.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/search_floater.9.png b/res/drawable-hdpi/search_floater.9.png
deleted file mode 100644
index 02441d0..0000000
--- a/res/drawable-hdpi/search_floater.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/textfield_searchwidget_default.9.png b/res/drawable-hdpi/textfield_searchwidget_default.9.png
deleted file mode 100644
index 2fe637d..0000000
--- a/res/drawable-hdpi/textfield_searchwidget_default.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/textfield_searchwidget_pressed.9.png b/res/drawable-hdpi/textfield_searchwidget_pressed.9.png
deleted file mode 100644
index 58af9ba..0000000
--- a/res/drawable-hdpi/textfield_searchwidget_pressed.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/textfield_searchwidget_selected.9.png b/res/drawable-hdpi/textfield_searchwidget_selected.9.png
deleted file mode 100644
index 8a84fdc..0000000
--- a/res/drawable-hdpi/textfield_searchwidget_selected.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/textfield_searchwidget.xml b/res/drawable/textfield_searchwidget.xml
deleted file mode 100644
index 80f3dca..0000000
--- a/res/drawable/textfield_searchwidget.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-  
-          http://www.apache.org/licenses/LICENSE-2.0
-  
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    
-﻿   <item android:state_window_focused="false" android:state_enabled="true"
-        android:drawable="@drawable/textfield_searchwidget_default" />
-    
-    <item android:state_pressed="true"
-        android:drawable="@drawable/textfield_searchwidget_pressed" />
-    
-    <item android:state_enabled="true" android:state_focused="true"
-        android:drawable="@drawable/textfield_searchwidget_selected" />
-    
-    <item android:state_enabled="true"
-        android:drawable="@drawable/textfield_searchwidget_default" />
-    
-</selector>
diff --git a/res/layout/widget_search.xml b/res/layout/widget_search.xml
deleted file mode 100644
index a346723..0000000
--- a/res/layout/widget_search.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-  
-          http://www.apache.org/licenses/LICENSE-2.0
-  
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<com.android.launcher2.Search 
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher2"
-    android:id="@+id/widget_search"  
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent"
-    android:orientation="vertical"
-    android:gravity="center">
-
-    <LinearLayout
-        android:id="@+id/search_plate"
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:orientation="horizontal"
-        android:paddingLeft="14dip"
-        android:paddingRight="14dip"
-        android:paddingTop="13dip"
-        android:paddingBottom="12dip"
-        android:background="@drawable/search_floater" >
-
-        <TextView
-            android:id="@+id/search_src_text"
-            android:layout_width="0dip"
-            android:layout_height="42dip"
-            android:layout_weight="1.0"
-            android:editable="false"
-            android:focusable="true"
-            android:inputType="none"
-            android:background="@drawable/textfield_searchwidget"
-            android:textAppearance="?android:attr/textAppearanceMediumInverse"
-            android:textColor="@android:color/primary_text_light"
-        />
-        
-        <ImageButton 
-            android:id="@+id/search_voice_btn"
-            android:layout_width="wrap_content"
-            android:layout_height="42dip"
-            android:layout_marginLeft="4dip"
-            android:background="@*android:drawable/btn_search_dialog_voice"
-            android:src="@*android:drawable/ic_btn_speak_now"
-        />
-
-    </LinearLayout>
-
-</com.android.launcher2.Search>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 815bd10..6890e26 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -15,13 +15,16 @@
 -->
 <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 application_name (4528470563311667177) -->
+    <skip />
     <string name="uid_name" msgid="3371120195364560632">"Android Core Apps"</string>
     <string name="folder_name" msgid="4588446541914685904">"Složka"</string>
     <string name="chooser_wallpaper" msgid="5988031014201479733">"Vybrat tapetu ze složky"</string>
     <string name="wallpaper_instructions" msgid="4215640646180727542">"Nastavit tapetu"</string>
-    <string name="pick_wallpaper" msgid="5630222540525626723">"Tapety"</string>
+    <string name="pick_wallpaper" msgid="2674908923379130941">"Galerie tapet"</string>
     <string name="activity_not_found" msgid="3571057450431950427">"Aplikace není v telefonu nainstalována."</string>
+    <!-- no translation found for live_wallpaper_picker_title (7738370557178100072) -->
+    <skip />
     <string name="configure_wallpaper" msgid="2820186271419674623">"Konfigurace..."</string>
     <string name="rename_folder_label" msgid="5646236631298452787">"Název složky"</string>
     <string name="rename_folder_title" msgid="4544573104191526550">"Přejmenovat složku"</string>
@@ -30,7 +33,6 @@
     <string name="menu_item_add_item" msgid="6233177331075781114">"Přidat na plochu"</string>
     <string name="group_applications" msgid="4118484163419674240">"Aplikace"</string>
     <string name="group_shortcuts" msgid="9133529424900391877">"Zástupce"</string>
-    <string name="group_search" msgid="5905328940867162196">"Hledat"</string>
     <string name="group_folder" msgid="5143593791798929193">"Nová složka"</string>
     <string name="group_live_folders" msgid="2664945399140647217">"Složky"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgety"</string>
@@ -38,15 +40,12 @@
     <string name="add_folder" msgid="3521088587367839879">"Složka"</string>
     <string name="add_clock" msgid="2337943840175865746">"Hodiny"</string>
     <string name="add_photo_frame" msgid="3154058437359487954">"Rámeček fotografie"</string>
-    <string name="add_search" msgid="7104834713685095105">"Vyhledávání"</string>
     <string name="out_of_space" msgid="8365249326091984698">"Na této ploše již není místo."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Zástupce <xliff:g id="NAME">%s</xliff:g> byl vytvořen."</string>
     <string name="shortcut_uninstalled" msgid="2129499669449749995">"Zástupce <xliff:g id="NAME">%s</xliff:g> byl odebrán."</string>
     <string name="shortcut_duplicate" msgid="4757756326465060694">"Zástupce <xliff:g id="NAME">%s</xliff:g> již existuje."</string>
     <string name="title_select_shortcut" msgid="2858897527672831763">"Vyberte zástupce"</string>
     <string name="title_select_live_folder" msgid="3753447798805166749">"Vybrat složku"</string>
-    <string name="all_apps_button_label" msgid="3953036962111614813">"Všechny aplikace"</string>
-    <string name="all_apps_home_button_label" msgid="1022222300329398558">"Plocha"</string>
     <string name="menu_add" msgid="3065046628354640854">"Přidat"</string>
     <string name="menu_wallpaper" msgid="5837429080911269832">"Tapeta"</string>
     <string name="menu_search" msgid="4826514464423239041">"Hledat"</string>
@@ -61,6 +60,9 @@
     <string name="permdesc_read_settings" msgid="8377434937176025492">"Povoluje aplikaci číst nastavení a odkazy plochy."</string>
     <string name="permlab_write_settings" msgid="1360567537236705628">"zápis nastavení a odkazů plochy"</string>
     <string name="permdesc_write_settings" msgid="1098648778383349818">"Povoluje aplikaci změnit nastavení a odkazy plochy."</string>
-    <string name="search_hint" msgid="6974176141372467453">"Vyhledávání Google"</string>
     <string name="gadget_error_text" msgid="8359351016167075858">"Problém s načtením widgetu"</string>
+    <!-- no translation found for live_wallpaper_empty (4278728108785853407) -->
+    <skip />
+    <!-- no translation found for set_live_wallpaper (2381437614949033266) -->
+    <skip />
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 391ec16..6e04539 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -15,13 +15,16 @@
 -->
 <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 application_name (4528470563311667177) -->
+    <skip />
     <string name="uid_name" msgid="3371120195364560632">"Android-kerneprogrammer"</string>
     <string name="folder_name" msgid="4588446541914685904">"Mappe"</string>
     <string name="chooser_wallpaper" msgid="5988031014201479733">"Vælg tapet fra"</string>
     <string name="wallpaper_instructions" msgid="4215640646180727542">"Angiv tapet"</string>
-    <string name="pick_wallpaper" msgid="5630222540525626723">"Tapeter"</string>
+    <string name="pick_wallpaper" msgid="2674908923379130941">"Tapetgalleri"</string>
     <string name="activity_not_found" msgid="3571057450431950427">"Programmet er ikke installeret på din telefon."</string>
+    <!-- no translation found for live_wallpaper_picker_title (7738370557178100072) -->
+    <skip />
     <string name="configure_wallpaper" msgid="2820186271419674623">"Konfigurer ..."</string>
     <string name="rename_folder_label" msgid="5646236631298452787">"Mappenavn"</string>
     <string name="rename_folder_title" msgid="4544573104191526550">"Omdøb mappe"</string>
@@ -30,7 +33,6 @@
     <string name="menu_item_add_item" msgid="6233177331075781114">"Føj til Startskærm"</string>
     <string name="group_applications" msgid="4118484163419674240">"Programmer"</string>
     <string name="group_shortcuts" msgid="9133529424900391877">"Genveje"</string>
-    <string name="group_search" msgid="5905328940867162196">"Søg"</string>
     <string name="group_folder" msgid="5143593791798929193">"Ny mappe"</string>
     <string name="group_live_folders" msgid="2664945399140647217">"Mapper"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgets"</string>
@@ -38,15 +40,12 @@
     <string name="add_folder" msgid="3521088587367839879">"Mappe"</string>
     <string name="add_clock" msgid="2337943840175865746">"Ur"</string>
     <string name="add_photo_frame" msgid="3154058437359487954">"Billedramme"</string>
-    <string name="add_search" msgid="7104834713685095105">"Søg"</string>
     <string name="out_of_space" msgid="8365249326091984698">"Der er ikke mere plads på Startskærmen."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Genvejen \"<xliff:g id="NAME">%s</xliff:g>\" blev oprettet."</string>
     <string name="shortcut_uninstalled" msgid="2129499669449749995">"Genvejen \"<xliff:g id="NAME">%s</xliff:g>\" blev fjernet."</string>
     <string name="shortcut_duplicate" msgid="4757756326465060694">"Genvejen \"<xliff:g id="NAME">%s</xliff:g>\" findes allerede."</string>
     <string name="title_select_shortcut" msgid="2858897527672831763">"Vælg genvej"</string>
     <string name="title_select_live_folder" msgid="3753447798805166749">"Vælg mappe"</string>
-    <string name="all_apps_button_label" msgid="3953036962111614813">"Alle programmer"</string>
-    <string name="all_apps_home_button_label" msgid="1022222300329398558">"Start"</string>
     <string name="menu_add" msgid="3065046628354640854">"Tilføj"</string>
     <string name="menu_wallpaper" msgid="5837429080911269832">"Tapet"</string>
     <string name="menu_search" msgid="4826514464423239041">"Søg"</string>
@@ -54,13 +53,16 @@
     <string name="menu_gestures" msgid="514678675575912237">"Gestus"</string>
     <string name="menu_settings" msgid="6233960148378443661">"Indstillinger"</string>
     <string name="permlab_install_shortcut" msgid="1201690825493376489">"installer genveje"</string>
-    <string name="permdesc_install_shortcut" msgid="7429365847558984148">"Tillader, at et program tilføjer genveje uden brugerindgriben."</string>
+    <string name="permdesc_install_shortcut" msgid="7429365847558984148">"Tillader et program at tilføje genveje uden brugerindgriben."</string>
     <string name="permlab_uninstall_shortcut" msgid="7696645932555926449">"afinstaller genveje"</string>
-    <string name="permdesc_uninstall_shortcut" msgid="959972195916090900">"Tillader, at et program fjerner genveje uden brugerindgriben."</string>
+    <string name="permdesc_uninstall_shortcut" msgid="959972195916090900">"Tillader et program at fjerne genveje uden brugerindgriben."</string>
     <string name="permlab_read_settings" msgid="3452408290738106747">"læs indstillinger og genveje for Start"</string>
-    <string name="permdesc_read_settings" msgid="8377434937176025492">"Tillader, at et program læser indstillingerne og genvejene i Start."</string>
+    <string name="permdesc_read_settings" msgid="8377434937176025492">"Tillader et program at læse indstillingerne og genvejene i Start."</string>
     <string name="permlab_write_settings" msgid="1360567537236705628">"skriv indstillinger og genveje for Start"</string>
-    <string name="permdesc_write_settings" msgid="1098648778383349818">"Tillader, at et program ændrer indstillingerne og genvejene i Start."</string>
-    <string name="search_hint" msgid="6974176141372467453">"Google-søgning"</string>
-    <string name="gadget_error_text" msgid="8359351016167075858">"Der er problemer med indlæsning af widget"</string>
+    <string name="permdesc_write_settings" msgid="1098648778383349818">"Tillader et program at ændre indstillingerne og genvejene i Start."</string>
+    <string name="gadget_error_text" msgid="8359351016167075858">"Der er problemer med at indlæse widget"</string>
+    <!-- no translation found for live_wallpaper_empty (4278728108785853407) -->
+    <skip />
+    <!-- no translation found for set_live_wallpaper (2381437614949033266) -->
+    <skip />
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 522bd4d..d1df5d3 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -15,13 +15,16 @@
 -->
 <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 application_name (4528470563311667177) -->
+    <skip />
     <string name="uid_name" msgid="3371120195364560632">"Android Core Apps"</string>
     <string name="folder_name" msgid="4588446541914685904">"Ordner"</string>
     <string name="chooser_wallpaper" msgid="5988031014201479733">"Hintergrund auswählen"</string>
     <string name="wallpaper_instructions" msgid="4215640646180727542">"Hintergrund festlegen"</string>
-    <string name="pick_wallpaper" msgid="5630222540525626723">"Hintergrundbilder"</string>
+    <string name="pick_wallpaper" msgid="2674908923379130941">"Galerie"</string>
     <string name="activity_not_found" msgid="3571057450431950427">"Anwendung ist nicht auf dem Telefon installiert."</string>
+    <!-- no translation found for live_wallpaper_picker_title (7738370557178100072) -->
+    <skip />
     <string name="configure_wallpaper" msgid="2820186271419674623">"Konfigurieren..."</string>
     <string name="rename_folder_label" msgid="5646236631298452787">"Ordnername"</string>
     <string name="rename_folder_title" msgid="4544573104191526550">"Ordner umbenennen"</string>
@@ -30,7 +33,6 @@
     <string name="menu_item_add_item" msgid="6233177331075781114">"Zum Startbildschirm hinzufügen"</string>
     <string name="group_applications" msgid="4118484163419674240">"Anwendungen"</string>
     <string name="group_shortcuts" msgid="9133529424900391877">"Verknüpfungen"</string>
-    <string name="group_search" msgid="5905328940867162196">"Suchen"</string>
     <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>
@@ -38,15 +40,12 @@
     <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>
-    <string name="add_search" msgid="7104834713685095105">"Suchen"</string>
     <string name="out_of_space" msgid="8365249326091984698">"Auf dem Startbildschirm ist kein Platz mehr vorhanden."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"\"<xliff:g id="NAME">%s</xliff:g>\"-Verknüpfung wurde erstellt."</string>
     <string name="shortcut_uninstalled" msgid="2129499669449749995">"\"<xliff:g id="NAME">%s</xliff:g>\"-Verknüpfung wurde entfernt."</string>
     <string name="shortcut_duplicate" msgid="4757756326465060694">"\"<xliff:g id="NAME">%s</xliff:g>\"-Verknüpfung ist bereits vorhanden."</string>
     <string name="title_select_shortcut" msgid="2858897527672831763">"Tastenkürzel auswählen"</string>
     <string name="title_select_live_folder" msgid="3753447798805166749">"Ordner auswählen"</string>
-    <string name="all_apps_button_label" msgid="3953036962111614813">"Alle Anwendungen"</string>
-    <string name="all_apps_home_button_label" msgid="1022222300329398558">"Startseite"</string>
     <string name="menu_add" msgid="3065046628354640854">"Hinzufügen"</string>
     <string name="menu_wallpaper" msgid="5837429080911269832">"Hintergrund"</string>
     <string name="menu_search" msgid="4826514464423239041">"Suchen"</string>
@@ -54,13 +53,16 @@
     <string name="menu_gestures" msgid="514678675575912237">"Bewegungen"</string>
     <string name="menu_settings" msgid="6233960148378443661">"Einstellungen"</string>
     <string name="permlab_install_shortcut" msgid="1201690825493376489">"Verknüpfungen installieren"</string>
-    <string name="permdesc_install_shortcut" msgid="7429365847558984148">"Ermöglicht einer Anwendung das Hinzufügen von Verknüpfungen ohne Eingriff des Nutzers."</string>
+    <string name="permdesc_install_shortcut" msgid="7429365847558984148">"Ermöglicht einer Anwendung das Hinzufügen von Verknüpfungen ohne Eingriff des Benutzers."</string>
     <string name="permlab_uninstall_shortcut" msgid="7696645932555926449">"Verknüpfungen deinstallieren"</string>
-    <string name="permdesc_uninstall_shortcut" msgid="959972195916090900">"Ermöglicht einer Anwendung das Entfernen von Verknüpfungen ohne Eingriff des Nutzers."</string>
+    <string name="permdesc_uninstall_shortcut" msgid="959972195916090900">"Ermöglicht einer Anwendung das Entfernen von Verknüpfungen ohne Eingriff des Benutzers."</string>
     <string name="permlab_read_settings" msgid="3452408290738106747">"Einstellungen und Shortcuts für Startseite lesen"</string>
     <string name="permdesc_read_settings" msgid="8377434937176025492">"Ermöglicht einer Anwendung, die Einstellungen und Shortcuts auf der Startseite zu lesen."</string>
     <string name="permlab_write_settings" msgid="1360567537236705628">"Einstellungen und Shortcuts für Startseite schreiben"</string>
     <string name="permdesc_write_settings" msgid="1098648778383349818">"Ermöglicht einer Anwendung, die Einstellungen und Shortcuts auf der Startseite zu ändern."</string>
-    <string name="search_hint" msgid="6974176141372467453">"Google-Suche"</string>
     <string name="gadget_error_text" msgid="8359351016167075858">"Problem beim Laden des Widgets"</string>
+    <!-- no translation found for live_wallpaper_empty (4278728108785853407) -->
+    <skip />
+    <!-- no translation found for set_live_wallpaper (2381437614949033266) -->
+    <skip />
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index bb65bf3..6cfa373 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -15,13 +15,16 @@
 -->
 <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 application_name (4528470563311667177) -->
+    <skip />
     <string name="uid_name" msgid="3371120195364560632">"Βασικές εφαρμογές Android"</string>
     <string name="folder_name" msgid="4588446541914685904">"Φάκελος"</string>
     <string name="chooser_wallpaper" msgid="5988031014201479733">"Επιλογή ταπετσαρίας από"</string>
     <string name="wallpaper_instructions" msgid="4215640646180727542">"Ορισμός ταπετσαρίας"</string>
-    <string name="pick_wallpaper" msgid="5630222540525626723">"Ταπετσαρίες"</string>
+    <string name="pick_wallpaper" msgid="2674908923379130941">"Συλλογή ταπετσαριών"</string>
     <string name="activity_not_found" msgid="3571057450431950427">"Η εφαρμογή δεν έχει εγκατασταθεί στο τηλέφωνό σας."</string>
+    <!-- no translation found for live_wallpaper_picker_title (7738370557178100072) -->
+    <skip />
     <string name="configure_wallpaper" msgid="2820186271419674623">"Διαμόρφωση..."</string>
     <string name="rename_folder_label" msgid="5646236631298452787">"Όνομα φακέλου"</string>
     <string name="rename_folder_title" msgid="4544573104191526550">"Μετονομασία φακέλου"</string>
@@ -30,7 +33,6 @@
     <string name="menu_item_add_item" msgid="6233177331075781114">"Προσθήκη στην αρχική οθόνη"</string>
     <string name="group_applications" msgid="4118484163419674240">"Εφαρμογές"</string>
     <string name="group_shortcuts" msgid="9133529424900391877">"Συντομεύσεις"</string>
-    <string name="group_search" msgid="5905328940867162196">"Αναζήτηση"</string>
     <string name="group_folder" msgid="5143593791798929193">"Νέος φάκελος"</string>
     <string name="group_live_folders" msgid="2664945399140647217">"Φάκελοι"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Γραφικά στοιχεία"</string>
@@ -38,15 +40,12 @@
     <string name="add_folder" msgid="3521088587367839879">"Φάκελος"</string>
     <string name="add_clock" msgid="2337943840175865746">"Ρολόι"</string>
     <string name="add_photo_frame" msgid="3154058437359487954">"Πλαίσιο εικόνας"</string>
-    <string name="add_search" msgid="7104834713685095105">"Αναζήτηση"</string>
     <string name="out_of_space" msgid="8365249326091984698">"Δεν υπάρχει χώρος σε αυτήν την αρχική οθόνη."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Δημιουργήθηκε η συντόμευση \"<xliff:g id="NAME">%s</xliff:g>\"."</string>
     <string name="shortcut_uninstalled" msgid="2129499669449749995">"Η συντόμευση \"<xliff:g id="NAME">%s</xliff:g>\" καταργήθηκε."</string>
     <string name="shortcut_duplicate" msgid="4757756326465060694">"Η συντόμευση \"<xliff:g id="NAME">%s</xliff:g>\" υπάρχει ήδη."</string>
     <string name="title_select_shortcut" msgid="2858897527672831763">"Επιλογή συντόμευσης"</string>
     <string name="title_select_live_folder" msgid="3753447798805166749">"Επιλογή φακέλου"</string>
-    <string name="all_apps_button_label" msgid="3953036962111614813">"Όλες οι εφαρμογές"</string>
-    <string name="all_apps_home_button_label" msgid="1022222300329398558">"Αρχική σελίδα"</string>
     <string name="menu_add" msgid="3065046628354640854">"Προσθήκη"</string>
     <string name="menu_wallpaper" msgid="5837429080911269832">"Ταπετσαρία"</string>
     <string name="menu_search" msgid="4826514464423239041">"Αναζήτηση"</string>
@@ -61,6 +60,9 @@
     <string name="permdesc_read_settings" msgid="8377434937176025492">"Επιτρέπει σε μια εφαρμογή την ανάγνωση των ρυθμίσεων και των συντομεύσεων στην αρχική οθόνη."</string>
     <string name="permlab_write_settings" msgid="1360567537236705628">"εγγραφή ρυθμίσεων και συντομεύσεων αρχικής οθόνης"</string>
     <string name="permdesc_write_settings" msgid="1098648778383349818">"Επιτρέπει σε μια εφαρμογή την αλλαγή των ρυθμίσεων και των συντομεύσεων στην αρχική οθόνη."</string>
-    <string name="search_hint" msgid="6974176141372467453">"Αναζήτηση Google"</string>
     <string name="gadget_error_text" msgid="8359351016167075858">"Παρουσιάστηκε πρόβλημα στη φόρτωση του γραφικού στοιχείου"</string>
+    <!-- no translation found for live_wallpaper_empty (4278728108785853407) -->
+    <skip />
+    <!-- no translation found for set_live_wallpaper (2381437614949033266) -->
+    <skip />
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index bee06e3..06dc273 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -15,13 +15,14 @@
 -->
 <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>
+    <string name="application_name" msgid="4528470563311667177">"_Launcher2"</string>
     <string name="uid_name" msgid="3371120195364560632">"Aplicaciones del núcleo de Android"</string>
     <string name="folder_name" msgid="4588446541914685904">"Carpeta"</string>
     <string name="chooser_wallpaper" msgid="5988031014201479733">"Seleccionar papel tapiz desde"</string>
     <string name="wallpaper_instructions" msgid="4215640646180727542">"Definir papel tapiz"</string>
-    <string name="pick_wallpaper" msgid="5630222540525626723">"Papeles tapiz"</string>
+    <string name="pick_wallpaper" msgid="2674908923379130941">"Galería de papel tapiz"</string>
     <string name="activity_not_found" msgid="3571057450431950427">"La aplicación no está instalada en tu computadora."</string>
+    <string name="live_wallpaper_picker_title" msgid="7738370557178100072">"Fondo de pantalla animado"</string>
     <string name="configure_wallpaper" msgid="2820186271419674623">"Configurar..."</string>
     <string name="rename_folder_label" msgid="5646236631298452787">"Nombre de carpeta"</string>
     <string name="rename_folder_title" msgid="4544573104191526550">"Cambiar nombre de carpeta"</string>
@@ -30,7 +31,6 @@
     <string name="menu_item_add_item" msgid="6233177331075781114">"Agregar a la pantalla Página principal"</string>
     <string name="group_applications" msgid="4118484163419674240">"Aplicaciones"</string>
     <string name="group_shortcuts" msgid="9133529424900391877">"Accesos directos"</string>
-    <string name="group_search" msgid="5905328940867162196">"Buscar"</string>
     <string name="group_folder" msgid="5143593791798929193">"Carpeta nueva"</string>
     <string name="group_live_folders" msgid="2664945399140647217">"Carpetas"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Controles"</string>
@@ -38,15 +38,12 @@
     <string name="add_folder" msgid="3521088587367839879">"Carpeta"</string>
     <string name="add_clock" msgid="2337943840175865746">"Reloj"</string>
     <string name="add_photo_frame" msgid="3154058437359487954">"Marco de imagen"</string>
-    <string name="add_search" msgid="7104834713685095105">"Buscar"</string>
     <string name="out_of_space" msgid="8365249326091984698">"No hay más espacio en esta pantalla de la página principal"</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Acceso directo \"<xliff:g id="NAME">%s</xliff:g>\" creado."</string>
     <string name="shortcut_uninstalled" msgid="2129499669449749995">"El acceso directo \"<xliff:g id="NAME">%s</xliff:g>\" ha sido eliminado."</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="menu_add" msgid="3065046628354640854">"Agregar"</string>
     <string name="menu_wallpaper" msgid="5837429080911269832">"Papel tapiz"</string>
     <string name="menu_search" msgid="4826514464423239041">"Buscar"</string>
@@ -61,6 +58,7 @@
     <string name="permdesc_read_settings" msgid="8377434937176025492">"Permite a una aplicación leer la configuración y los accesos directos de la página principal."</string>
     <string name="permlab_write_settings" msgid="1360567537236705628">"escribir configuración y accesos directos de la página principal"</string>
     <string name="permdesc_write_settings" msgid="1098648778383349818">"Permite a una aplicación cambiar la configuración y los accesos directos de la página principal."</string>
-    <string name="search_hint" msgid="6974176141372467453">"Búsqueda de Google"</string>
     <string name="gadget_error_text" msgid="8359351016167075858">"Problema al cargar el widget"</string>
+    <string name="live_wallpaper_empty" msgid="4278728108785853407">"No hay ningún fondo de pantalla animado."</string>
+    <string name="set_live_wallpaper" msgid="2381437614949033266">"Establecer fondo de pantalla"</string>
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 7554c1b..6864f10 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -15,13 +15,16 @@
 -->
 <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 application_name (4528470563311667177) -->
+    <skip />
     <string name="uid_name" msgid="3371120195364560632">"Aplicaciones básicas de Android"</string>
     <string name="folder_name" msgid="4588446541914685904">"Carpeta"</string>
     <string name="chooser_wallpaper" msgid="5988031014201479733">"Seleccionar fondo de pantalla de"</string>
     <string name="wallpaper_instructions" msgid="4215640646180727542">"Establecer fondo de pantalla"</string>
-    <string name="pick_wallpaper" msgid="5630222540525626723">"Fondos de pantalla"</string>
+    <string name="pick_wallpaper" msgid="2674908923379130941">"Galería de fondos de pantalla"</string>
     <string name="activity_not_found" msgid="3571057450431950427">"La aplicación no está instalada en el teléfono."</string>
+    <!-- no translation found for live_wallpaper_picker_title (7738370557178100072) -->
+    <skip />
     <string name="configure_wallpaper" msgid="2820186271419674623">"Configurar..."</string>
     <string name="rename_folder_label" msgid="5646236631298452787">"Nombre de carpeta"</string>
     <string name="rename_folder_title" msgid="4544573104191526550">"Cambiar nombre de carpeta"</string>
@@ -30,7 +33,6 @@
     <string name="menu_item_add_item" msgid="6233177331075781114">"Añadir a pantalla de página principal"</string>
     <string name="group_applications" msgid="4118484163419674240">"Aplicaciones"</string>
     <string name="group_shortcuts" msgid="9133529424900391877">"Accesos directos"</string>
-    <string name="group_search" msgid="5905328940867162196">"Búsqueda"</string>
     <string name="group_folder" msgid="5143593791798929193">"Nueva carpeta"</string>
     <string name="group_live_folders" msgid="2664945399140647217">"Carpetas"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgets"</string>
@@ -38,15 +40,12 @@
     <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="add_search" msgid="7104834713685095105">"Búsqueda de Google"</string>
     <string name="out_of_space" msgid="8365249326091984698">"No queda espacio en esta pantalla de página principal."</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="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>
@@ -61,6 +60,9 @@
     <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="search_hint" msgid="6974176141372467453">"Búsqueda de Google"</string>
     <string name="gadget_error_text" msgid="8359351016167075858">"Problema al cargar el widget"</string>
+    <!-- no translation found for live_wallpaper_empty (4278728108785853407) -->
+    <skip />
+    <!-- no translation found for set_live_wallpaper (2381437614949033266) -->
+    <skip />
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 0d66612..41a3478 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -15,13 +15,16 @@
 -->
 <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">"Lanceur d\'applications"</string>
+    <!-- no translation found for application_name (4528470563311667177) -->
+    <skip />
     <string name="uid_name" msgid="3371120195364560632">"Applications de base Android"</string>
     <string name="folder_name" msgid="4588446541914685904">"Dossier"</string>
     <string name="chooser_wallpaper" msgid="5988031014201479733">"Sélectionner à partir de..."</string>
     <string name="wallpaper_instructions" msgid="4215640646180727542">"Sélectionner"</string>
-    <string name="pick_wallpaper" msgid="5630222540525626723">"Fonds d\'écran"</string>
+    <string name="pick_wallpaper" msgid="2674908923379130941">"Galerie"</string>
     <string name="activity_not_found" msgid="3571057450431950427">"L\'application n\'est pas installée sur votre téléphone."</string>
+    <!-- no translation found for live_wallpaper_picker_title (7738370557178100072) -->
+    <skip />
     <string name="configure_wallpaper" msgid="2820186271419674623">"Configurer..."</string>
     <string name="rename_folder_label" msgid="5646236631298452787">"Nom du dossier"</string>
     <string name="rename_folder_title" msgid="4544573104191526550">"Renommer le dossier"</string>
@@ -30,7 +33,6 @@
     <string name="menu_item_add_item" msgid="6233177331075781114">"Ajouter à l\'écran d\'accueil"</string>
     <string name="group_applications" msgid="4118484163419674240">"Applications"</string>
     <string name="group_shortcuts" msgid="9133529424900391877">"Raccourcis"</string>
-    <string name="group_search" msgid="5905328940867162196">"Recherche"</string>
     <string name="group_folder" msgid="5143593791798929193">"Nouveau dossier"</string>
     <string name="group_live_folders" msgid="2664945399140647217">"Dossiers"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgets"</string>
@@ -38,15 +40,12 @@
     <string name="add_folder" msgid="3521088587367839879">"Dossier"</string>
     <string name="add_clock" msgid="2337943840175865746">"Horloge"</string>
     <string name="add_photo_frame" msgid="3154058437359487954">"Cadre d\'image"</string>
-    <string name="add_search" msgid="7104834713685095105">"Recherche"</string>
     <string name="out_of_space" msgid="8365249326091984698">"Plus d\'espace libre sur l\'écran d\'accueil."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Le raccourci \"<xliff:g id="NAME">%s</xliff:g>\" a été créé."</string>
     <string name="shortcut_uninstalled" msgid="2129499669449749995">"Le raccourci \"<xliff:g id="NAME">%s</xliff:g>\" a été supprimé."</string>
     <string name="shortcut_duplicate" msgid="4757756326465060694">"Le raccourci \"<xliff:g id="NAME">%s</xliff:g>\" existe déjà."</string>
     <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="menu_add" msgid="3065046628354640854">"Ajouter"</string>
     <string name="menu_wallpaper" msgid="5837429080911269832">"Fond d\'écran"</string>
     <string name="menu_search" msgid="4826514464423239041">"Rechercher"</string>
@@ -61,6 +60,9 @@
     <string name="permdesc_read_settings" msgid="8377434937176025492">"Permet à une application de lire les paramètres et raccourcis de la page d\'accueil."</string>
     <string name="permlab_write_settings" msgid="1360567537236705628">"Enregistrer les paramètres de la page d\'accueil et des raccourcis"</string>
     <string name="permdesc_write_settings" msgid="1098648778383349818">"Permet à une application de modifier les paramètres et les raccourcis de la page d\'accueil."</string>
-    <string name="search_hint" msgid="6974176141372467453">"Recherche Google"</string>
     <string name="gadget_error_text" msgid="8359351016167075858">"Problème lors du chargement du widget"</string>
+    <!-- no translation found for live_wallpaper_empty (4278728108785853407) -->
+    <skip />
+    <!-- no translation found for set_live_wallpaper (2381437614949033266) -->
+    <skip />
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 422f998..bf215da 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -15,13 +15,16 @@
 -->
 <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 application_name (4528470563311667177) -->
+    <skip />
     <string name="uid_name" msgid="3371120195364560632">"Android Core Apps"</string>
     <string name="folder_name" msgid="4588446541914685904">"Cartella"</string>
     <string name="chooser_wallpaper" msgid="5988031014201479733">"Seleziona sfondo da"</string>
     <string name="wallpaper_instructions" msgid="4215640646180727542">"Imposta sfondo"</string>
-    <string name="pick_wallpaper" msgid="5630222540525626723">"Sfondi"</string>
+    <string name="pick_wallpaper" msgid="2674908923379130941">"Galleria sfondi"</string>
     <string name="activity_not_found" msgid="3571057450431950427">"Applicazione non installata sul telefono."</string>
+    <!-- no translation found for live_wallpaper_picker_title (7738370557178100072) -->
+    <skip />
     <string name="configure_wallpaper" msgid="2820186271419674623">"Configura..."</string>
     <string name="rename_folder_label" msgid="5646236631298452787">"Nome cartella"</string>
     <string name="rename_folder_title" msgid="4544573104191526550">"Rinomina cartella"</string>
@@ -30,7 +33,6 @@
     <string name="menu_item_add_item" msgid="6233177331075781114">"Aggiungi a schermata Home"</string>
     <string name="group_applications" msgid="4118484163419674240">"Applicazioni"</string>
     <string name="group_shortcuts" msgid="9133529424900391877">"Collegamenti"</string>
-    <string name="group_search" msgid="5905328940867162196">"Ricerca"</string>
     <string name="group_folder" msgid="5143593791798929193">"Nuova cartella"</string>
     <string name="group_live_folders" msgid="2664945399140647217">"Cartelle"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widget"</string>
@@ -38,15 +40,12 @@
     <string name="add_folder" msgid="3521088587367839879">"Cartella"</string>
     <string name="add_clock" msgid="2337943840175865746">"Orologio"</string>
     <string name="add_photo_frame" msgid="3154058437359487954">"Cornice immagini"</string>
-    <string name="add_search" msgid="7104834713685095105">"Ricerca"</string>
     <string name="out_of_space" msgid="8365249326091984698">"Spazio nella schermata Home esaurito."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Collegamento \"<xliff:g id="NAME">%s</xliff:g>\" creato."</string>
     <string name="shortcut_uninstalled" msgid="2129499669449749995">"Il collegamento \"<xliff:g id="NAME">%s</xliff:g>\" è stato rimosso."</string>
     <string name="shortcut_duplicate" msgid="4757756326465060694">"Collegamento \"<xliff:g id="NAME">%s</xliff:g>\" già presente."</string>
     <string name="title_select_shortcut" msgid="2858897527672831763">"Seleziona collegamento"</string>
     <string name="title_select_live_folder" msgid="3753447798805166749">"Seleziona cartella"</string>
-    <string name="all_apps_button_label" msgid="3953036962111614813">"Tutte le applicazioni"</string>
-    <string name="all_apps_home_button_label" msgid="1022222300329398558">"Home"</string>
     <string name="menu_add" msgid="3065046628354640854">"Aggiungi"</string>
     <string name="menu_wallpaper" msgid="5837429080911269832">"Sfondo"</string>
     <string name="menu_search" msgid="4826514464423239041">"Cerca"</string>
@@ -61,6 +60,9 @@
     <string name="permdesc_read_settings" msgid="8377434937176025492">"Consente a un\'applicazione di leggere le impostazioni e le scorciatoie in Home."</string>
     <string name="permlab_write_settings" msgid="1360567537236705628">"creare impostazioni e scorciatoie in Home"</string>
     <string name="permdesc_write_settings" msgid="1098648778383349818">"Consente a un\'applicazione di modificare le impostazioni e le scorciatoie in Home."</string>
-    <string name="search_hint" msgid="6974176141372467453">"Ricerca Google"</string>
     <string name="gadget_error_text" msgid="8359351016167075858">"Errore durante il caricamento del widget"</string>
+    <!-- no translation found for live_wallpaper_empty (4278728108785853407) -->
+    <skip />
+    <!-- no translation found for set_live_wallpaper (2381437614949033266) -->
+    <skip />
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 2d8cc6b..bcef3d6 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -15,13 +15,16 @@
 -->
 <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 application_name (4528470563311667177) -->
+    <skip />
     <string name="uid_name" msgid="3371120195364560632">"Android Core Apps"</string>
     <string name="folder_name" msgid="4588446541914685904">"フォルダ"</string>
     <string name="chooser_wallpaper" msgid="5988031014201479733">"壁紙を選択"</string>
     <string name="wallpaper_instructions" msgid="4215640646180727542">"壁紙に設定"</string>
-    <string name="pick_wallpaper" msgid="5630222540525626723">"壁紙"</string>
+    <string name="pick_wallpaper" msgid="2674908923379130941">"壁紙ギャラリー"</string>
     <string name="activity_not_found" msgid="3571057450431950427">"アプリケーションがインストールされていません。"</string>
+    <!-- no translation found for live_wallpaper_picker_title (7738370557178100072) -->
+    <skip />
     <string name="configure_wallpaper" msgid="2820186271419674623">"設定..."</string>
     <string name="rename_folder_label" msgid="5646236631298452787">"フォルダ名"</string>
     <string name="rename_folder_title" msgid="4544573104191526550">"フォルダ名を変更"</string>
@@ -30,7 +33,6 @@
     <string name="menu_item_add_item" msgid="6233177331075781114">"ホーム画面に追加"</string>
     <string name="group_applications" msgid="4118484163419674240">"アプリケーション"</string>
     <string name="group_shortcuts" msgid="9133529424900391877">"ショートカット"</string>
-    <string name="group_search" msgid="5905328940867162196">"検索"</string>
     <string name="group_folder" msgid="5143593791798929193">"新しいフォルダ"</string>
     <string name="group_live_folders" msgid="2664945399140647217">"フォルダ"</string>
     <string name="group_widgets" msgid="6704978494073105844">"ウィジェット"</string>
@@ -38,15 +40,12 @@
     <string name="add_folder" msgid="3521088587367839879">"フォルダ"</string>
     <string name="add_clock" msgid="2337943840175865746">"時計"</string>
     <string name="add_photo_frame" msgid="3154058437359487954">"写真フレーム"</string>
-    <string name="add_search" msgid="7104834713685095105">"検索"</string>
     <string name="out_of_space" msgid="8365249326091984698">"ホーム画面に空きスペースがありません。"</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"ショートカット「<xliff:g id="NAME">%s</xliff:g>」を作成しました。"</string>
     <string name="shortcut_uninstalled" msgid="2129499669449749995">"ショートカット「<xliff:g id="NAME">%s</xliff:g>」を削除しました。"</string>
     <string name="shortcut_duplicate" msgid="4757756326465060694">"ショートカット「<xliff:g id="NAME">%s</xliff:g>」は既に存在します。"</string>
     <string name="title_select_shortcut" msgid="2858897527672831763">"ショートカットを選択"</string>
     <string name="title_select_live_folder" msgid="3753447798805166749">"フォルダの選択"</string>
-    <string name="all_apps_button_label" msgid="3953036962111614813">"すべてのアプリケーション"</string>
-    <string name="all_apps_home_button_label" msgid="1022222300329398558">"ホーム"</string>
     <string name="menu_add" msgid="3065046628354640854">"追加"</string>
     <string name="menu_wallpaper" msgid="5837429080911269832">"壁紙"</string>
     <string name="menu_search" msgid="4826514464423239041">"検索"</string>
@@ -61,6 +60,9 @@
     <string name="permdesc_read_settings" msgid="8377434937176025492">"ホームの設定とショートカットの読み取りをアプリケーションに許可します。"</string>
     <string name="permlab_write_settings" msgid="1360567537236705628">"ホームの設定とショートカットの書き込み"</string>
     <string name="permdesc_write_settings" msgid="1098648778383349818">"ホームの設定とショートカットの変更をアプリケーションに許可します。"</string>
-    <string name="search_hint" msgid="6974176141372467453">"Google検索"</string>
     <string name="gadget_error_text" msgid="8359351016167075858">"ウィジェットを表示できません"</string>
+    <!-- no translation found for live_wallpaper_empty (4278728108785853407) -->
+    <skip />
+    <!-- no translation found for set_live_wallpaper (2381437614949033266) -->
+    <skip />
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 91718b1..8c10744 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -15,13 +15,16 @@
 -->
 <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 application_name (4528470563311667177) -->
+    <skip />
     <string name="uid_name" msgid="3371120195364560632">"Android Core 애플리케이션"</string>
     <string name="folder_name" msgid="4588446541914685904">"폴더"</string>
     <string name="chooser_wallpaper" msgid="5988031014201479733">"배경화면 선택"</string>
     <string name="wallpaper_instructions" msgid="4215640646180727542">"배경화면 설정"</string>
-    <string name="pick_wallpaper" msgid="5630222540525626723">"배경화면"</string>
+    <string name="pick_wallpaper" msgid="2674908923379130941">"배경화면 갤러리"</string>
     <string name="activity_not_found" msgid="3571057450431950427">"휴대전화에 설치되어 있지 않은 응용프로그램입니다."</string>
+    <!-- no translation found for live_wallpaper_picker_title (7738370557178100072) -->
+    <skip />
     <string name="configure_wallpaper" msgid="2820186271419674623">"구성..."</string>
     <string name="rename_folder_label" msgid="5646236631298452787">"폴더 이름"</string>
     <string name="rename_folder_title" msgid="4544573104191526550">"폴더 이름 바꾸기"</string>
@@ -30,7 +33,6 @@
     <string name="menu_item_add_item" msgid="6233177331075781114">"홈 화면에 추가"</string>
     <string name="group_applications" msgid="4118484163419674240">"응용프로그램"</string>
     <string name="group_shortcuts" msgid="9133529424900391877">"바로가기"</string>
-    <string name="group_search" msgid="5905328940867162196">"검색"</string>
     <string name="group_folder" msgid="5143593791798929193">"새 폴더"</string>
     <string name="group_live_folders" msgid="2664945399140647217">"폴더"</string>
     <string name="group_widgets" msgid="6704978494073105844">"위젯"</string>
@@ -38,15 +40,12 @@
     <string name="add_folder" msgid="3521088587367839879">"폴더"</string>
     <string name="add_clock" msgid="2337943840175865746">"시계"</string>
     <string name="add_photo_frame" msgid="3154058437359487954">"사진 프레임"</string>
-    <string name="add_search" msgid="7104834713685095105">"검색"</string>
     <string name="out_of_space" msgid="8365249326091984698">"홈 화면에 더 이상 공간이 없습니다."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"바로가기(\'<xliff:g id="NAME">%s</xliff:g>\')가 생성되었습니다."</string>
     <string name="shortcut_uninstalled" msgid="2129499669449749995">"바로가기(\'<xliff:g id="NAME">%s</xliff:g>\')가 삭제되었습니다."</string>
     <string name="shortcut_duplicate" msgid="4757756326465060694">"바로가기(\'<xliff:g id="NAME">%s</xliff:g>\')가 이미 있습니다."</string>
     <string name="title_select_shortcut" msgid="2858897527672831763">"바로가기 선택"</string>
     <string name="title_select_live_folder" msgid="3753447798805166749">"폴더 선택"</string>
-    <string name="all_apps_button_label" msgid="3953036962111614813">"모든 응용프로그램"</string>
-    <string name="all_apps_home_button_label" msgid="1022222300329398558">"홈"</string>
     <string name="menu_add" msgid="3065046628354640854">"추가"</string>
     <string name="menu_wallpaper" msgid="5837429080911269832">"배경화면"</string>
     <string name="menu_search" msgid="4826514464423239041">"검색"</string>
@@ -61,6 +60,9 @@
     <string name="permdesc_read_settings" msgid="8377434937176025492">"응용프로그램이 홈에 있는 설정 및 바로가기를 읽을 수 있도록 합니다."</string>
     <string name="permlab_write_settings" msgid="1360567537236705628">"홈 설정 및 바로가기 쓰기"</string>
     <string name="permdesc_write_settings" msgid="1098648778383349818">"응용프로그램이 홈에 있는 설정 및 바로가기를 변경할 수 있도록 합니다."</string>
-    <string name="search_hint" msgid="6974176141372467453">"Google 검색"</string>
     <string name="gadget_error_text" msgid="8359351016167075858">"위젯을 로드하는 중 문제가 발생했습니다."</string>
+    <!-- no translation found for live_wallpaper_empty (4278728108785853407) -->
+    <skip />
+    <!-- no translation found for set_live_wallpaper (2381437614949033266) -->
+    <skip />
 </resources>
diff --git a/res/values-land/dimens.xml b/res/values-land/dimens.xml
index d2d31c2..d1236f2 100644
--- a/res/values-land/dimens.xml
+++ b/res/values-land/dimens.xml
@@ -17,7 +17,6 @@
 <resources>
     <dimen name="workspace_cell_width">106dip</dimen>
     <dimen name="workspace_cell_height">74dip</dimen>
-    <dimen name="search_widget_inset">19dip</dimen>
     <dimen name="gesture_thumbnail_inset">8dip</dimen>
     <dimen name="gesture_thumbnail_size">64dip</dimen>
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 2208898..03c3228 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -15,13 +15,16 @@
 -->
 <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 application_name (4528470563311667177) -->
+    <skip />
     <string name="uid_name" msgid="3371120195364560632">"Android-kjerneapplikasjoner"</string>
     <string name="folder_name" msgid="4588446541914685904">"Mappe"</string>
     <string name="chooser_wallpaper" msgid="5988031014201479733">"Velg bakgrunnsbilde fra"</string>
     <string name="wallpaper_instructions" msgid="4215640646180727542">"Velg bakgrunnsbilde"</string>
-    <string name="pick_wallpaper" msgid="5630222540525626723">"Bakgrunner"</string>
+    <string name="pick_wallpaper" msgid="2674908923379130941">"Bildegalleri"</string>
     <string name="activity_not_found" msgid="3571057450431950427">"Applikasjonen er ikke installert."</string>
+    <!-- no translation found for live_wallpaper_picker_title (7738370557178100072) -->
+    <skip />
     <string name="configure_wallpaper" msgid="2820186271419674623">"Konfigurer"</string>
     <string name="rename_folder_label" msgid="5646236631298452787">"Mappenavn"</string>
     <string name="rename_folder_title" msgid="4544573104191526550">"Gi nytt navn til mappe"</string>
@@ -30,7 +33,6 @@
     <string name="menu_item_add_item" msgid="6233177331075781114">"Legg til skrivebord"</string>
     <string name="group_applications" msgid="4118484163419674240">"Applikasjoner"</string>
     <string name="group_shortcuts" msgid="9133529424900391877">"Snarveier"</string>
-    <string name="group_search" msgid="5905328940867162196">"Søk"</string>
     <string name="group_folder" msgid="5143593791798929193">"Ny mappe"</string>
     <string name="group_live_folders" msgid="2664945399140647217">"Mapper"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Skrivebordselementer"</string>
@@ -38,15 +40,12 @@
     <string name="add_folder" msgid="3521088587367839879">"Mappe"</string>
     <string name="add_clock" msgid="2337943840175865746">"Klokke"</string>
     <string name="add_photo_frame" msgid="3154058437359487954">"Bilderamme"</string>
-    <string name="add_search" msgid="7104834713685095105">"Søk"</string>
     <string name="out_of_space" msgid="8365249326091984698">"Ikke nok plass på skrivebordet."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Opprettet snarveien «<xliff:g id="NAME">%s</xliff:g>»."</string>
     <string name="shortcut_uninstalled" msgid="2129499669449749995">"Fjernet snarveien «<xliff:g id="NAME">%s</xliff:g>»."</string>
-    <string name="shortcut_duplicate" msgid="4757756326465060694">"Snarveien «<xliff:g id="NAME">%s</xliff:g>» fins allerede."</string>
+    <string name="shortcut_duplicate" msgid="4757756326465060694">"Snarveien «<xliff:g id="NAME">%s</xliff:g>» finnes allerede."</string>
     <string name="title_select_shortcut" msgid="2858897527672831763">"Velg snarvei"</string>
     <string name="title_select_live_folder" msgid="3753447798805166749">"Velg mappe"</string>
-    <string name="all_apps_button_label" msgid="3953036962111614813">"Alle programmer"</string>
-    <string name="all_apps_home_button_label" msgid="1022222300329398558">"Startsiden"</string>
     <string name="menu_add" msgid="3065046628354640854">"Legg til"</string>
     <string name="menu_wallpaper" msgid="5837429080911269832">"Bakgrunnsbilde"</string>
     <string name="menu_search" msgid="4826514464423239041">"Søk"</string>
@@ -61,6 +60,9 @@
     <string name="permdesc_read_settings" msgid="8377434937176025492">"Lar applikasjonen lese innstillinger og snarveier fra skrivebordet."</string>
     <string name="permlab_write_settings" msgid="1360567537236705628">"skrive skrivebordsinnstillinger og -snarveier"</string>
     <string name="permdesc_write_settings" msgid="1098648778383349818">"Lar applikasjonen endre innstillinger og snarveier på skrivebordet."</string>
-    <string name="search_hint" msgid="6974176141372467453">"Google-søk"</string>
     <string name="gadget_error_text" msgid="8359351016167075858">"Problem under lasting av gadget"</string>
+    <!-- no translation found for live_wallpaper_empty (4278728108785853407) -->
+    <skip />
+    <!-- no translation found for set_live_wallpaper (2381437614949033266) -->
+    <skip />
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 3a69066..4df6546 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -15,13 +15,16 @@
 -->
 <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 application_name (4528470563311667177) -->
+    <skip />
     <string name="uid_name" msgid="3371120195364560632">"Android-kerntoepassingen"</string>
     <string name="folder_name" msgid="4588446541914685904">"Map"</string>
     <string name="chooser_wallpaper" msgid="5988031014201479733">"Achtergrond selecteren in"</string>
     <string name="wallpaper_instructions" msgid="4215640646180727542">"Achtergrond instellen"</string>
-    <string name="pick_wallpaper" msgid="5630222540525626723">"Achtergronden"</string>
+    <string name="pick_wallpaper" msgid="2674908923379130941">"Achtergrondgalerij"</string>
     <string name="activity_not_found" msgid="3571057450431950427">"Deze toepassing is niet geïnstalleerd op uw telefoon."</string>
+    <!-- no translation found for live_wallpaper_picker_title (7738370557178100072) -->
+    <skip />
     <string name="configure_wallpaper" msgid="2820186271419674623">"Configureren..."</string>
     <string name="rename_folder_label" msgid="5646236631298452787">"Mapnaam"</string>
     <string name="rename_folder_title" msgid="4544573104191526550">"Naam van map wijzigen"</string>
@@ -30,7 +33,6 @@
     <string name="menu_item_add_item" msgid="6233177331075781114">"Toevoegen aan startpagina"</string>
     <string name="group_applications" msgid="4118484163419674240">"Toepassingen"</string>
     <string name="group_shortcuts" msgid="9133529424900391877">"Sneltoetsen"</string>
-    <string name="group_search" msgid="5905328940867162196">"Zoeken"</string>
     <string name="group_folder" msgid="5143593791798929193">"Nieuwe map"</string>
     <string name="group_live_folders" msgid="2664945399140647217">"Mappen"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgets"</string>
@@ -38,15 +40,12 @@
     <string name="add_folder" msgid="3521088587367839879">"Map"</string>
     <string name="add_clock" msgid="2337943840175865746">"Klok"</string>
     <string name="add_photo_frame" msgid="3154058437359487954">"Fotolijstje"</string>
-    <string name="add_search" msgid="7104834713685095105">"Zoeken"</string>
     <string name="out_of_space" msgid="8365249326091984698">"Er is geen ruimte meer op dit startscherm."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Snelkoppeling \'<xliff:g id="NAME">%s</xliff:g>\' is gemaakt."</string>
     <string name="shortcut_uninstalled" msgid="2129499669449749995">"Snelkoppeling \'<xliff:g id="NAME">%s</xliff:g>\' is verwijderd."</string>
     <string name="shortcut_duplicate" msgid="4757756326465060694">"Snelkoppeling \'<xliff:g id="NAME">%s</xliff:g>\' bestaat al."</string>
     <string name="title_select_shortcut" msgid="2858897527672831763">"Snelkoppeling selecteren"</string>
     <string name="title_select_live_folder" msgid="3753447798805166749">"Map selecteren"</string>
-    <string name="all_apps_button_label" msgid="3953036962111614813">"Alle toepassingen"</string>
-    <string name="all_apps_home_button_label" msgid="1022222300329398558">"Startpagina"</string>
     <string name="menu_add" msgid="3065046628354640854">"Toevoegen"</string>
     <string name="menu_wallpaper" msgid="5837429080911269832">"Achtergrond"</string>
     <string name="menu_search" msgid="4826514464423239041">"Zoeken"</string>
@@ -61,6 +60,9 @@
     <string name="permdesc_read_settings" msgid="8377434937176025492">"Hiermee kan een toepassing de instellingen en snelkoppelingen op de startpagina lezen."</string>
     <string name="permlab_write_settings" msgid="1360567537236705628">"instellingen en snelkoppelingen voor de startpagina schrijven"</string>
     <string name="permdesc_write_settings" msgid="1098648778383349818">"Hiermee kan een toepassing de instellingen en snelkoppelingen op de startpagina wijzigen."</string>
-    <string name="search_hint" msgid="6974176141372467453">"Google Zoeken"</string>
     <string name="gadget_error_text" msgid="8359351016167075858">"Probleem bij het laden van widget"</string>
+    <!-- no translation found for live_wallpaper_empty (4278728108785853407) -->
+    <skip />
+    <!-- no translation found for set_live_wallpaper (2381437614949033266) -->
+    <skip />
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index cc9306b..47e7059 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -15,13 +15,16 @@
 -->
 <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 application_name (4528470563311667177) -->
+    <skip />
     <string name="uid_name" msgid="3371120195364560632">"Aplikacje główne systemu Android"</string>
     <string name="folder_name" msgid="4588446541914685904">"Folder"</string>
     <string name="chooser_wallpaper" msgid="5988031014201479733">"Wybierz tapetę"</string>
     <string name="wallpaper_instructions" msgid="4215640646180727542">"Ustaw tapetę"</string>
-    <string name="pick_wallpaper" msgid="5630222540525626723">"Tapety"</string>
+    <string name="pick_wallpaper" msgid="2674908923379130941">"Galeria tapet"</string>
     <string name="activity_not_found" msgid="3571057450431950427">"Aplikacja nie jest zainstalowana w telefonie."</string>
+    <!-- no translation found for live_wallpaper_picker_title (7738370557178100072) -->
+    <skip />
     <string name="configure_wallpaper" msgid="2820186271419674623">"Konfiguruj..."</string>
     <string name="rename_folder_label" msgid="5646236631298452787">"Nazwa folderu"</string>
     <string name="rename_folder_title" msgid="4544573104191526550">"Zmień nazwę folderu"</string>
@@ -30,7 +33,6 @@
     <string name="menu_item_add_item" msgid="6233177331075781114">"Dodaj do strony głównej"</string>
     <string name="group_applications" msgid="4118484163419674240">"Aplikacje"</string>
     <string name="group_shortcuts" msgid="9133529424900391877">"Skróty"</string>
-    <string name="group_search" msgid="5905328940867162196">"Wyszukiwarka"</string>
     <string name="group_folder" msgid="5143593791798929193">"Nowy folder"</string>
     <string name="group_live_folders" msgid="2664945399140647217">"Foldery"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widżety"</string>
@@ -38,15 +40,12 @@
     <string name="add_folder" msgid="3521088587367839879">"Folder"</string>
     <string name="add_clock" msgid="2337943840175865746">"Zegar"</string>
     <string name="add_photo_frame" msgid="3154058437359487954">"Ramka obrazu"</string>
-    <string name="add_search" msgid="7104834713685095105">"Wyszukiwarka"</string>
     <string name="out_of_space" msgid="8365249326091984698">"Brak miejsca na tej stronie głównej"</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Skrót „<xliff:g id="NAME">%s</xliff:g>” został utworzony."</string>
     <string name="shortcut_uninstalled" msgid="2129499669449749995">"Skrót „<xliff:g id="NAME">%s</xliff:g>” został usunięty."</string>
     <string name="shortcut_duplicate" msgid="4757756326465060694">"Skrót „<xliff:g id="NAME">%s</xliff:g>” już istnieje."</string>
     <string name="title_select_shortcut" msgid="2858897527672831763">"Wybierz skrót"</string>
     <string name="title_select_live_folder" msgid="3753447798805166749">"Wybierz folder"</string>
-    <string name="all_apps_button_label" msgid="3953036962111614813">"Wszystkie aplikacje"</string>
-    <string name="all_apps_home_button_label" msgid="1022222300329398558">"Ekran główny"</string>
     <string name="menu_add" msgid="3065046628354640854">"Dodaj"</string>
     <string name="menu_wallpaper" msgid="5837429080911269832">"Tapeta"</string>
     <string name="menu_search" msgid="4826514464423239041">"Szukaj"</string>
@@ -61,6 +60,9 @@
     <string name="permdesc_read_settings" msgid="8377434937176025492">"Umożliwia aplikacji odczytywanie ustawień i skrótów strony głównej."</string>
     <string name="permlab_write_settings" msgid="1360567537236705628">"zapisywanie ustawień i skrótów strony głównej"</string>
     <string name="permdesc_write_settings" msgid="1098648778383349818">"Umożliwia aplikacji zmianę ustawień i skrótów strony głównej."</string>
-    <string name="search_hint" msgid="6974176141372467453">"Szukaj w Google"</string>
     <string name="gadget_error_text" msgid="8359351016167075858">"Problem podczas ładowania widżetu"</string>
+    <!-- no translation found for live_wallpaper_empty (4278728108785853407) -->
+    <skip />
+    <!-- no translation found for set_live_wallpaper (2381437614949033266) -->
+    <skip />
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 895e945..f17c1a8 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -15,14 +15,16 @@
 -->
 <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 application_name (4528470563311667177) -->
+    <skip />
     <string name="uid_name" msgid="3371120195364560632">"Aplicações Principais do Android"</string>
     <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="2674908923379130941">"Galeria de imagens de fundo"</string>
     <string name="activity_not_found" msgid="3571057450431950427">"A aplicação não está instalada no telefone."</string>
+    <!-- no translation found for live_wallpaper_picker_title (7738370557178100072) -->
+    <skip />
     <string name="configure_wallpaper" msgid="2820186271419674623">"Configurar..."</string>
     <string name="rename_folder_label" msgid="5646236631298452787">"Nome da pasta"</string>
     <string name="rename_folder_title" msgid="4544573104191526550">"Mudar o nome da pasta"</string>
@@ -31,7 +33,6 @@
     <string name="menu_item_add_item" msgid="6233177331075781114">"Adicionar ao ecrã principal"</string>
     <string name="group_applications" msgid="4118484163419674240">"Aplicações"</string>
     <string name="group_shortcuts" msgid="9133529424900391877">"Atalhos"</string>
-    <string name="group_search" msgid="5905328940867162196">"Pesquisar"</string>
     <string name="group_folder" msgid="5143593791798929193">"Nova pasta"</string>
     <string name="group_live_folders" msgid="2664945399140647217">"Pastas"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgets"</string>
@@ -39,15 +40,12 @@
     <string name="add_folder" msgid="3521088587367839879">"Pasta"</string>
     <string name="add_clock" msgid="2337943840175865746">"Relógio"</string>
     <string name="add_photo_frame" msgid="3154058437359487954">"Moldura de imagem"</string>
-    <string name="add_search" msgid="7104834713685095105">"Pesquisar"</string>
     <string name="out_of_space" msgid="8365249326091984698">"Não existe espaço suficiente neste ecrã principal."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"O atalho \"<xliff:g id="NAME">%s</xliff:g>\" foi criado."</string>
     <string name="shortcut_uninstalled" msgid="2129499669449749995">"O atalho \"<xliff:g id="NAME">%s</xliff:g>\" foi removido."</string>
     <string name="shortcut_duplicate" msgid="4757756326465060694">"O atalho \"<xliff:g id="NAME">%s</xliff:g>\" já existe."</string>
     <string name="title_select_shortcut" msgid="2858897527672831763">"Seleccione o atalho"</string>
     <string name="title_select_live_folder" msgid="3753447798805166749">"Seleccione a pasta"</string>
-    <string name="all_apps_button_label" msgid="3953036962111614813">"Todas as aplicações"</string>
-    <string name="all_apps_home_button_label" msgid="1022222300329398558">"Página inicial"</string>
     <string name="menu_add" msgid="3065046628354640854">"Adicionar"</string>
     <string name="menu_wallpaper" msgid="5837429080911269832">"Imagem de fundo"</string>
     <string name="menu_search" msgid="4826514464423239041">"Pesquisar"</string>
@@ -62,6 +60,9 @@
     <string name="permdesc_read_settings" msgid="8377434937176025492">"Permite que uma aplicação leia as definições e os atalhos do ecrã principal."</string>
     <string name="permlab_write_settings" msgid="1360567537236705628">"escrever definições e atalhos do ecrã principal"</string>
     <string name="permdesc_write_settings" msgid="1098648778383349818">"Permite que uma aplicação altere as definições e os atalhos do ecrã principal."</string>
-    <string name="search_hint" msgid="6974176141372467453">"Pesquisa do Google"</string>
     <string name="gadget_error_text" msgid="8359351016167075858">"Erro ao carregar o widget"</string>
+    <!-- no translation found for live_wallpaper_empty (4278728108785853407) -->
+    <skip />
+    <!-- no translation found for set_live_wallpaper (2381437614949033266) -->
+    <skip />
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 003927d..a89bef8 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -15,14 +15,16 @@
 -->
 <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 application_name (4528470563311667177) -->
+    <skip />
     <string name="uid_name" msgid="3371120195364560632">"Principais aplicativos do Android"</string>
     <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="2674908923379130941">"Galeria de papel de parede"</string>
     <string name="activity_not_found" msgid="3571057450431950427">"O aplicativo não está instalado no seu telefone."</string>
+    <!-- no translation found for live_wallpaper_picker_title (7738370557178100072) -->
+    <skip />
     <string name="configure_wallpaper" msgid="2820186271419674623">"Configurar..."</string>
     <string name="rename_folder_label" msgid="5646236631298452787">"Nome da pasta"</string>
     <string name="rename_folder_title" msgid="4544573104191526550">"Renomear pasta"</string>
@@ -31,7 +33,6 @@
     <string name="menu_item_add_item" msgid="6233177331075781114">"Adicionar à tela da Página inicial"</string>
     <string name="group_applications" msgid="4118484163419674240">"Aplicativos"</string>
     <string name="group_shortcuts" msgid="9133529424900391877">"Atalhos"</string>
-    <string name="group_search" msgid="5905328940867162196">"Pesquisar"</string>
     <string name="group_folder" msgid="5143593791798929193">"Nova pasta"</string>
     <string name="group_live_folders" msgid="2664945399140647217">"Pastas"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgets"</string>
@@ -39,15 +40,12 @@
     <string name="add_folder" msgid="3521088587367839879">"Pasta"</string>
     <string name="add_clock" msgid="2337943840175865746">"Relógio"</string>
     <string name="add_photo_frame" msgid="3154058437359487954">"Frame da imagem"</string>
-    <string name="add_search" msgid="7104834713685095105">"Pesquisar"</string>
     <string name="out_of_space" msgid="8365249326091984698">"Não há mais espaço nesta tela da Página inicial."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Atalho \"<xliff:g id="NAME">%s</xliff:g>\" criado."</string>
     <string name="shortcut_uninstalled" msgid="2129499669449749995">"O atalho \"<xliff:g id="NAME">%s</xliff:g>\" foi removido."</string>
     <string name="shortcut_duplicate" msgid="4757756326465060694">"O atalho \"<xliff:g id="NAME">%s</xliff:g>\" já existe."</string>
     <string name="title_select_shortcut" msgid="2858897527672831763">"Selecionar atalho"</string>
     <string name="title_select_live_folder" msgid="3753447798805166749">"Selecionar pasta"</string>
-    <string name="all_apps_button_label" msgid="3953036962111614813">"Todos os aplicativos"</string>
-    <string name="all_apps_home_button_label" msgid="1022222300329398558">"Página inicial"</string>
     <string name="menu_add" msgid="3065046628354640854">"Adicionar"</string>
     <string name="menu_wallpaper" msgid="5837429080911269832">"Papel de parede"</string>
     <string name="menu_search" msgid="4826514464423239041">"Pesquisar"</string>
@@ -62,6 +60,9 @@
     <string name="permdesc_read_settings" msgid="8377434937176025492">"Permite que um aplicativo leia as configurações e atalhos na Página inicial."</string>
     <string name="permlab_write_settings" msgid="1360567537236705628">"gravar configurações e atalhos da Página inicial"</string>
     <string name="permdesc_write_settings" msgid="1098648778383349818">"Permite que um aplicativo altere as configurações e atalhos na Página inicial."</string>
-    <string name="search_hint" msgid="6974176141372467453">"Pesquisa do Google"</string>
     <string name="gadget_error_text" msgid="8359351016167075858">"Problema ao carregar o widget"</string>
+    <!-- no translation found for live_wallpaper_empty (4278728108785853407) -->
+    <skip />
+    <!-- no translation found for set_live_wallpaper (2381437614949033266) -->
+    <skip />
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 7542fdb..ba016d6 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -15,13 +15,16 @@
 -->
 <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 application_name (4528470563311667177) -->
+    <skip />
     <string name="uid_name" msgid="3371120195364560632">"Основные приложения Android"</string>
     <string name="folder_name" msgid="4588446541914685904">"Папка"</string>
     <string name="chooser_wallpaper" msgid="5988031014201479733">"Выбрать обои из:"</string>
     <string name="wallpaper_instructions" msgid="4215640646180727542">"Установить обои"</string>
-    <string name="pick_wallpaper" msgid="5630222540525626723">"Обои"</string>
+    <string name="pick_wallpaper" msgid="2674908923379130941">"Фотоальбом: обои"</string>
     <string name="activity_not_found" msgid="3571057450431950427">"Приложение не установлено на телефоне."</string>
+    <!-- no translation found for live_wallpaper_picker_title (7738370557178100072) -->
+    <skip />
     <string name="configure_wallpaper" msgid="2820186271419674623">"Настроить..."</string>
     <string name="rename_folder_label" msgid="5646236631298452787">"Название папки"</string>
     <string name="rename_folder_title" msgid="4544573104191526550">"Переименовать папку"</string>
@@ -30,7 +33,6 @@
     <string name="menu_item_add_item" msgid="6233177331075781114">"Добавить на главный экран"</string>
     <string name="group_applications" msgid="4118484163419674240">"Приложения"</string>
     <string name="group_shortcuts" msgid="9133529424900391877">"Ярлыки"</string>
-    <string name="group_search" msgid="5905328940867162196">"Поиск"</string>
     <string name="group_folder" msgid="5143593791798929193">"Новая папка"</string>
     <string name="group_live_folders" msgid="2664945399140647217">"Папки"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Виджеты"</string>
@@ -38,15 +40,12 @@
     <string name="add_folder" msgid="3521088587367839879">"Папка"</string>
     <string name="add_clock" msgid="2337943840175865746">"Часы"</string>
     <string name="add_photo_frame" msgid="3154058437359487954">"Рамка фотографии"</string>
-    <string name="add_search" msgid="7104834713685095105">"Поиск"</string>
     <string name="out_of_space" msgid="8365249326091984698">"На этом главном экране нет свободного места."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Ярлык \"<xliff:g id="NAME">%s</xliff:g>\" создан"</string>
     <string name="shortcut_uninstalled" msgid="2129499669449749995">"Ярлык \"<xliff:g id="NAME">%s</xliff:g>\" удален."</string>
     <string name="shortcut_duplicate" msgid="4757756326465060694">"Ярлык \"<xliff:g id="NAME">%s</xliff:g>\" уже существует."</string>
     <string name="title_select_shortcut" msgid="2858897527672831763">"Выберите ярлык"</string>
     <string name="title_select_live_folder" msgid="3753447798805166749">"Выбор папки"</string>
-    <string name="all_apps_button_label" msgid="3953036962111614813">"Все приложения"</string>
-    <string name="all_apps_home_button_label" msgid="1022222300329398558">"Главная"</string>
     <string name="menu_add" msgid="3065046628354640854">"Добавить"</string>
     <string name="menu_wallpaper" msgid="5837429080911269832">"Обои"</string>
     <string name="menu_search" msgid="4826514464423239041">"Поиск"</string>
@@ -61,6 +60,9 @@
     <string name="permdesc_read_settings" msgid="8377434937176025492">"Позволяет приложению считывать настройки и ярлыки на главном экране."</string>
     <string name="permlab_write_settings" msgid="1360567537236705628">"изменять настройки и ярлыки главного экрана"</string>
     <string name="permdesc_write_settings" msgid="1098648778383349818">"Позволяет приложению изменять настройки и ярлыки на главном экране."</string>
-    <string name="search_hint" msgid="6974176141372467453">"Поиск Google"</string>
     <string name="gadget_error_text" msgid="8359351016167075858">"Не удалось загрузить виджет"</string>
+    <!-- no translation found for live_wallpaper_empty (4278728108785853407) -->
+    <skip />
+    <!-- no translation found for set_live_wallpaper (2381437614949033266) -->
+    <skip />
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index efc9227..153d663 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -15,13 +15,16 @@
 -->
 <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">"Startbild"</string>
+    <!-- no translation found for application_name (4528470563311667177) -->
+    <skip />
     <string name="uid_name" msgid="3371120195364560632">"Android Core Apps"</string>
     <string name="folder_name" msgid="4588446541914685904">"Mapp"</string>
     <string name="chooser_wallpaper" msgid="5988031014201479733">"Välj bakgrund från"</string>
     <string name="wallpaper_instructions" msgid="4215640646180727542">"Ange bakgrund"</string>
-    <string name="pick_wallpaper" msgid="5630222540525626723">"Bakgrundsbilder"</string>
+    <string name="pick_wallpaper" msgid="2674908923379130941">"Bakgrundsgalleri"</string>
     <string name="activity_not_found" msgid="3571057450431950427">"Programmet är inte installerat på din telefon."</string>
+    <!-- no translation found for live_wallpaper_picker_title (7738370557178100072) -->
+    <skip />
     <string name="configure_wallpaper" msgid="2820186271419674623">"Konfigurera..."</string>
     <string name="rename_folder_label" msgid="5646236631298452787">"Mappnamn"</string>
     <string name="rename_folder_title" msgid="4544573104191526550">"Byt namn på mapp"</string>
@@ -30,7 +33,6 @@
     <string name="menu_item_add_item" msgid="6233177331075781114">"Lägg till på startsidan"</string>
     <string name="group_applications" msgid="4118484163419674240">"Program"</string>
     <string name="group_shortcuts" msgid="9133529424900391877">"Genvägar"</string>
-    <string name="group_search" msgid="5905328940867162196">"Sök"</string>
     <string name="group_folder" msgid="5143593791798929193">"Ny mapp"</string>
     <string name="group_live_folders" msgid="2664945399140647217">"Mappar"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widgetar"</string>
@@ -38,15 +40,12 @@
     <string name="add_folder" msgid="3521088587367839879">"Mapp"</string>
     <string name="add_clock" msgid="2337943840175865746">"Klocka"</string>
     <string name="add_photo_frame" msgid="3154058437359487954">"Bildram"</string>
-    <string name="add_search" msgid="7104834713685095105">"Sök"</string>
     <string name="out_of_space" msgid="8365249326091984698">"Det finns inte plats för mer på den här startsidan."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"Genvägen \"<xliff:g id="NAME">%s</xliff:g>\" har skapats."</string>
     <string name="shortcut_uninstalled" msgid="2129499669449749995">"Genvägen \"<xliff:g id="NAME">%s</xliff:g>\" har tagits bort."</string>
     <string name="shortcut_duplicate" msgid="4757756326465060694">"Genvägen \"<xliff:g id="NAME">%s</xliff:g>\" finns redan."</string>
     <string name="title_select_shortcut" msgid="2858897527672831763">"Välj genväg"</string>
     <string name="title_select_live_folder" msgid="3753447798805166749">"Välj mapp"</string>
-    <string name="all_apps_button_label" msgid="3953036962111614813">"Alla program"</string>
-    <string name="all_apps_home_button_label" msgid="1022222300329398558">"Startsida"</string>
     <string name="menu_add" msgid="3065046628354640854">"Lägg till"</string>
     <string name="menu_wallpaper" msgid="5837429080911269832">"Bakgrund"</string>
     <string name="menu_search" msgid="4826514464423239041">"Sök"</string>
@@ -61,6 +60,9 @@
     <string name="permdesc_read_settings" msgid="8377434937176025492">"Tillåter att ett program läser inställningar och genvägar på startsidan."</string>
     <string name="permlab_write_settings" msgid="1360567537236705628">"skriva inställningar och genvägar för startsidan"</string>
     <string name="permdesc_write_settings" msgid="1098648778383349818">"Tillåter att ett program ändrar inställningar och genvägar på startsidan."</string>
-    <string name="search_hint" msgid="6974176141372467453">"Sök på Google"</string>
     <string name="gadget_error_text" msgid="8359351016167075858">"Det gick inte att läsa in widgeten"</string>
+    <!-- no translation found for live_wallpaper_empty (4278728108785853407) -->
+    <skip />
+    <!-- no translation found for set_live_wallpaper (2381437614949033266) -->
+    <skip />
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 5e823ed..96f57a7 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -15,13 +15,16 @@
 -->
 <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 application_name (4528470563311667177) -->
+    <skip />
     <string name="uid_name" msgid="3371120195364560632">"Android Core Apps"</string>
     <string name="folder_name" msgid="4588446541914685904">"Klasör"</string>
     <string name="chooser_wallpaper" msgid="5988031014201479733">"Buradan duvar kağıdını seçin:"</string>
     <string name="wallpaper_instructions" msgid="4215640646180727542">"Duvar kağıdını ayarla"</string>
-    <string name="pick_wallpaper" msgid="5630222540525626723">"Duvar Kağıtları"</string>
+    <string name="pick_wallpaper" msgid="2674908923379130941">"Duvar kağıdı galerisi"</string>
     <string name="activity_not_found" msgid="3571057450431950427">"Uygulama telefonunuza yüklenmemiş."</string>
+    <!-- no translation found for live_wallpaper_picker_title (7738370557178100072) -->
+    <skip />
     <string name="configure_wallpaper" msgid="2820186271419674623">"Yapılandır..."</string>
     <string name="rename_folder_label" msgid="5646236631298452787">"Klasör adı"</string>
     <string name="rename_folder_title" msgid="4544573104191526550">"Klasörü yeniden adlandır"</string>
@@ -30,7 +33,6 @@
     <string name="menu_item_add_item" msgid="6233177331075781114">"Ana ekrana ekle"</string>
     <string name="group_applications" msgid="4118484163419674240">"Uygulamalar"</string>
     <string name="group_shortcuts" msgid="9133529424900391877">"Kısayollar"</string>
-    <string name="group_search" msgid="5905328940867162196">"Arama"</string>
     <string name="group_folder" msgid="5143593791798929193">"Yeni klasör"</string>
     <string name="group_live_folders" msgid="2664945399140647217">"Klasörler"</string>
     <string name="group_widgets" msgid="6704978494073105844">"Widget\'lar"</string>
@@ -38,15 +40,12 @@
     <string name="add_folder" msgid="3521088587367839879">"Klasör"</string>
     <string name="add_clock" msgid="2337943840175865746">"Saat"</string>
     <string name="add_photo_frame" msgid="3154058437359487954">"Resim çerçevesi"</string>
-    <string name="add_search" msgid="7104834713685095105">"Arama"</string>
     <string name="out_of_space" msgid="8365249326091984698">"Bu Ana ekranda başka yer yok."</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"\"<xliff:g id="NAME">%s</xliff:g>\" kısayolu oluşturuldu."</string>
     <string name="shortcut_uninstalled" msgid="2129499669449749995">"\"<xliff:g id="NAME">%s</xliff:g>\" kısayolu kaldırıldı."</string>
     <string name="shortcut_duplicate" msgid="4757756326465060694">"\"<xliff:g id="NAME">%s</xliff:g>\" kısayolu zaten var."</string>
     <string name="title_select_shortcut" msgid="2858897527672831763">"Kısayolu seçin"</string>
     <string name="title_select_live_folder" msgid="3753447798805166749">"Klasörü seçin"</string>
-    <string name="all_apps_button_label" msgid="3953036962111614813">"Tüm uygulamalar"</string>
-    <string name="all_apps_home_button_label" msgid="1022222300329398558">"Ana Sayfa"</string>
     <string name="menu_add" msgid="3065046628354640854">"Ekle"</string>
     <string name="menu_wallpaper" msgid="5837429080911269832">"Duvar Kağıdı"</string>
     <string name="menu_search" msgid="4826514464423239041">"Ara"</string>
@@ -61,6 +60,9 @@
     <string name="permdesc_read_settings" msgid="8377434937176025492">"Bir uygulamaya Ana Sayfadaki ayarları ve kısayolları okuma izni verir."</string>
     <string name="permlab_write_settings" msgid="1360567537236705628">"Ana Sayfa ayarlarını ve kısayollarını yaz"</string>
     <string name="permdesc_write_settings" msgid="1098648778383349818">"Bir uygulamaya Ana Sayfadaki ayarları ve kısayolları değiştirme izni verir."</string>
-    <string name="search_hint" msgid="6974176141372467453">"Google Arama"</string>
     <string name="gadget_error_text" msgid="8359351016167075858">"Widget yüklenirken sorun oluştu"</string>
+    <!-- no translation found for live_wallpaper_empty (4278728108785853407) -->
+    <skip />
+    <!-- no translation found for set_live_wallpaper (2381437614949033266) -->
+    <skip />
 </resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 98eb170..8adfbc5 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -15,13 +15,16 @@
 -->
 <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 application_name (4528470563311667177) -->
+    <skip />
     <string name="uid_name" msgid="3371120195364560632">"Android 核心应用程序"</string>
     <string name="folder_name" msgid="4588446541914685904">"文件夹"</string>
     <string name="chooser_wallpaper" msgid="5988031014201479733">"选择壁纸来源"</string>
     <string name="wallpaper_instructions" msgid="4215640646180727542">"设置壁纸"</string>
-    <string name="pick_wallpaper" msgid="5630222540525626723">"壁纸"</string>
+    <string name="pick_wallpaper" msgid="2674908923379130941">"壁纸图库"</string>
     <string name="activity_not_found" msgid="3571057450431950427">"您的手机上未安装应用程序。"</string>
+    <!-- no translation found for live_wallpaper_picker_title (7738370557178100072) -->
+    <skip />
     <string name="configure_wallpaper" msgid="2820186271419674623">"配置..."</string>
     <string name="rename_folder_label" msgid="5646236631298452787">"文件夹名称"</string>
     <string name="rename_folder_title" msgid="4544573104191526550">"重命名文件夹"</string>
@@ -30,7 +33,6 @@
     <string name="menu_item_add_item" msgid="6233177331075781114">"添加到主屏幕"</string>
     <string name="group_applications" msgid="4118484163419674240">"应用程序"</string>
     <string name="group_shortcuts" msgid="9133529424900391877">"快捷方式"</string>
-    <string name="group_search" msgid="5905328940867162196">"搜索"</string>
     <string name="group_folder" msgid="5143593791798929193">"新建文件夹"</string>
     <string name="group_live_folders" msgid="2664945399140647217">"文件夹"</string>
     <string name="group_widgets" msgid="6704978494073105844">"窗口小部件"</string>
@@ -38,15 +40,12 @@
     <string name="add_folder" msgid="3521088587367839879">"文件夹"</string>
     <string name="add_clock" msgid="2337943840175865746">"时钟"</string>
     <string name="add_photo_frame" msgid="3154058437359487954">"相框"</string>
-    <string name="add_search" msgid="7104834713685095105">"搜索"</string>
-    <string name="out_of_space" msgid="8365249326091984698">"此主屏幕上已没有空间。"</string>
-    <string name="shortcut_installed" msgid="7071557296331322355">"已创建“<xliff:g id="NAME">%s</xliff:g>”快捷方式。"</string>
-    <string name="shortcut_uninstalled" msgid="2129499669449749995">"已删除“<xliff:g id="NAME">%s</xliff:g>”快捷方式。"</string>
+    <string name="out_of_space" msgid="8365249326091984698">"此主屏幕上已没有更多空间。"</string>
+    <string name="shortcut_installed" msgid="7071557296331322355">"“<xliff:g id="NAME">%s</xliff:g>”快捷方式已创建。"</string>
+    <string name="shortcut_uninstalled" msgid="2129499669449749995">"“<xliff:g id="NAME">%s</xliff:g>”快捷方式已删除。"</string>
     <string name="shortcut_duplicate" msgid="4757756326465060694">"“<xliff:g id="NAME">%s</xliff:g>”快捷方式已存在。"</string>
     <string name="title_select_shortcut" msgid="2858897527672831763">"选择快捷方式"</string>
     <string name="title_select_live_folder" msgid="3753447798805166749">"选择文件夹"</string>
-    <string name="all_apps_button_label" msgid="3953036962111614813">"所有应用程序"</string>
-    <string name="all_apps_home_button_label" msgid="1022222300329398558">"主屏幕"</string>
     <string name="menu_add" msgid="3065046628354640854">"添加"</string>
     <string name="menu_wallpaper" msgid="5837429080911269832">"壁纸"</string>
     <string name="menu_search" msgid="4826514464423239041">"搜索"</string>
@@ -54,13 +53,16 @@
     <string name="menu_gestures" msgid="514678675575912237">"手势"</string>
     <string name="menu_settings" msgid="6233960148378443661">"设置"</string>
     <string name="permlab_install_shortcut" msgid="1201690825493376489">"安装快捷方式"</string>
-    <string name="permdesc_install_shortcut" msgid="7429365847558984148">"允许应用程序在没有用户介入的情况下添加快捷方式。"</string>
+    <string name="permdesc_install_shortcut" msgid="7429365847558984148">"允许应用程序在无人操作的情况下添加快捷方式。"</string>
     <string name="permlab_uninstall_shortcut" msgid="7696645932555926449">"卸载快捷方式"</string>
-    <string name="permdesc_uninstall_shortcut" msgid="959972195916090900">"允许应用程序在没有用户介入的情况下删除快捷方式。"</string>
-    <string name="permlab_read_settings" msgid="3452408290738106747">"读取主屏幕的设置和快捷方式"</string>
-    <string name="permdesc_read_settings" msgid="8377434937176025492">"允许应用程序读取主屏幕的设置和快捷方式。"</string>
-    <string name="permlab_write_settings" msgid="1360567537236705628">"写入主屏幕的设置和快捷方式"</string>
-    <string name="permdesc_write_settings" msgid="1098648778383349818">"允许应用程序更改主屏幕的设置和快捷方式。"</string>
-    <string name="search_hint" msgid="6974176141372467453">"Google 搜索"</string>
+    <string name="permdesc_uninstall_shortcut" msgid="959972195916090900">"允许应用程序在无人操作的情况下删除快捷方式。"</string>
+    <string name="permlab_read_settings" msgid="3452408290738106747">"读取主屏幕设置和快捷方式"</string>
+    <string name="permdesc_read_settings" msgid="8377434937176025492">"允许应用程序读取主屏幕上的设置和快捷方式。"</string>
+    <string name="permlab_write_settings" msgid="1360567537236705628">"写入主屏幕设置和快捷方式"</string>
+    <string name="permdesc_write_settings" msgid="1098648778383349818">"允许应用程序更改主屏幕上的设置和快捷方式。"</string>
     <string name="gadget_error_text" msgid="8359351016167075858">"载入窗口小部件时出现问题"</string>
+    <!-- no translation found for live_wallpaper_empty (4278728108785853407) -->
+    <skip />
+    <!-- no translation found for set_live_wallpaper (2381437614949033266) -->
+    <skip />
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 8d3d8a0..dbe82b4 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -15,13 +15,16 @@
 -->
 <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 application_name (4528470563311667177) -->
+    <skip />
     <string name="uid_name" msgid="3371120195364560632">"Android 核心應用程式"</string>
     <string name="folder_name" msgid="4588446541914685904">"資料夾"</string>
     <string name="chooser_wallpaper" msgid="5988031014201479733">"從…選取桌布"</string>
     <string name="wallpaper_instructions" msgid="4215640646180727542">"設定桌布"</string>
-    <string name="pick_wallpaper" msgid="5630222540525626723">"桌布"</string>
+    <string name="pick_wallpaper" msgid="2674908923379130941">"桌布集"</string>
     <string name="activity_not_found" msgid="3571057450431950427">"應用程式未安裝到手機。"</string>
+    <!-- no translation found for live_wallpaper_picker_title (7738370557178100072) -->
+    <skip />
     <string name="configure_wallpaper" msgid="2820186271419674623">"設定..."</string>
     <string name="rename_folder_label" msgid="5646236631298452787">"資料夾名稱"</string>
     <string name="rename_folder_title" msgid="4544573104191526550">"重新命名資料夾"</string>
@@ -30,7 +33,6 @@
     <string name="menu_item_add_item" msgid="6233177331075781114">"新增至首頁畫面"</string>
     <string name="group_applications" msgid="4118484163419674240">"應用程式"</string>
     <string name="group_shortcuts" msgid="9133529424900391877">"捷徑"</string>
-    <string name="group_search" msgid="5905328940867162196">"搜尋"</string>
     <string name="group_folder" msgid="5143593791798929193">"新資料夾"</string>
     <string name="group_live_folders" msgid="2664945399140647217">"資料夾"</string>
     <string name="group_widgets" msgid="6704978494073105844">"小工具"</string>
@@ -38,15 +40,12 @@
     <string name="add_folder" msgid="3521088587367839879">"資料夾"</string>
     <string name="add_clock" msgid="2337943840175865746">"時鐘"</string>
     <string name="add_photo_frame" msgid="3154058437359487954">"相框"</string>
-    <string name="add_search" msgid="7104834713685095105">"搜尋"</string>
     <string name="out_of_space" msgid="8365249326091984698">"首頁已無空間"</string>
     <string name="shortcut_installed" msgid="7071557296331322355">"已建立「<xliff:g id="NAME">%s</xliff:g>」捷徑。"</string>
     <string name="shortcut_uninstalled" msgid="2129499669449749995">"已移除「<xliff:g id="NAME">%s</xliff:g>」捷徑。"</string>
-    <string name="shortcut_duplicate" msgid="4757756326465060694">"「<xliff:g id="NAME">%s</xliff:g>」捷徑已經存在。"</string>
+    <string name="shortcut_duplicate" msgid="4757756326465060694">"已有「<xliff:g id="NAME">%s</xliff:g>」捷徑。"</string>
     <string name="title_select_shortcut" msgid="2858897527672831763">"選取捷徑"</string>
     <string name="title_select_live_folder" msgid="3753447798805166749">"選取資料夾"</string>
-    <string name="all_apps_button_label" msgid="3953036962111614813">"所有應用程式"</string>
-    <string name="all_apps_home_button_label" msgid="1022222300329398558">"主螢幕"</string>
     <string name="menu_add" msgid="3065046628354640854">"新增"</string>
     <string name="menu_wallpaper" msgid="5837429080911269832">"桌布"</string>
     <string name="menu_search" msgid="4826514464423239041">"搜尋"</string>
@@ -61,6 +60,9 @@
     <string name="permdesc_read_settings" msgid="8377434937176025492">"允許應用程式讀取首頁中的設定和捷徑。"</string>
     <string name="permlab_write_settings" msgid="1360567537236705628">"寫入首頁設定和捷徑"</string>
     <string name="permdesc_write_settings" msgid="1098648778383349818">"允許應用程式變更首頁中的設定和捷徑。"</string>
-    <string name="search_hint" msgid="6974176141372467453">"Google 搜尋"</string>
     <string name="gadget_error_text" msgid="8359351016167075858">"載入小工具時發生問題"</string>
+    <!-- no translation found for live_wallpaper_empty (4278728108785853407) -->
+    <skip />
+    <!-- no translation found for set_live_wallpaper (2381437614949033266) -->
+    <skip />
 </resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index e0ca384..78756ac 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -15,7 +15,6 @@
 -->
 
 <resources>
-    <dimen name="search_widget_inset">19dip</dimen>
     <dimen name="gesture_thumbnail_inset">8dip</dimen>
     <dimen name="gesture_thumbnail_size">64dip</dimen>
     <dimen name="button_bar_height">56dip</dimen>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 38f27c7..35d4733 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -56,8 +56,6 @@
     <string name="group_applications">Applications</string>
     <!-- Options in "Add to Home" dialog box; Title of the group containing the list of all shortcuts -->
     <string name="group_shortcuts">Shortcuts</string>
-    <!-- Options in "Add to Home" dialog box; Title of the search gadget -->
-    <string name="group_search">Search</string>
     <!-- Options in "Add to Home" dialog box; Title of the folder gadget -->
     <string name="group_folder">New folder</string>
     <!-- Options in "Add to Home" dialog box; Title of the group containing the list of all live folders -->
@@ -72,8 +70,6 @@
     <string name="add_clock">Clock</string>
     <!-- Options in "Add to Home" dialog box; Name of the Picture frame widget-->
     <string name="add_photo_frame">Picture frame</string>
-    <!-- Options in "Add to Home" dialog box; Name of the global search widget-->
-    <string name="add_search">Search</string>
     <!-- Error message when user has filled a home screen, possibly not used -->
     <string name="out_of_space">No more room on this Home screen.</string>
     <!-- Message displayed when a shortcut is created by an external application -->
@@ -126,12 +122,6 @@
     <!-- Widgets: -->
     <skip />    
 
-    <!-- TODO: Determine if this can be removed.
-         This is the hint text shown in the search widget, before text is entered.
-         This translation SHOULD MATCH the string "search_hint" which is found in 
-         GoogleSearch/res/values/strings.xml -->
-    <string name="search_hint">Google Search</string>
-
     <!-- Text to show user in place of a gadget when we can't display it properly -->
     <string name="gadget_error_text">Problem loading widget</string>
 
diff --git a/src/com/android/launcher2/ActivityPicker.java b/src/com/android/launcher2/ActivityPicker.java
deleted file mode 100644
index b6da08e..0000000
--- a/src/com/android/launcher2/ActivityPicker.java
+++ /dev/null
@@ -1,405 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.launcher2;
-
-import com.android.internal.app.AlertActivity;
-import com.android.internal.app.AlertController;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.Intent.ShortcutIconResource;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.graphics.PaintFlagsDrawFilter;
-import android.graphics.PixelFormat;
-import android.graphics.Rect;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.PaintDrawable;
-import android.os.Bundle;
-import android.os.Parcelable;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.TextView;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Displays a list of all activities matching the incoming
- * {@link android.content.Intent#EXTRA_INTENT} query, along with any injected items.
- */
-public class ActivityPicker extends AlertActivity implements
-        DialogInterface.OnClickListener, DialogInterface.OnCancelListener {
-
-    /**
-     * Adapter of items that are displayed in this dialog.
-     */
-    private PickAdapter mAdapter;
-
-    /**
-     * Base {@link android.content.Intent} used when building list.
-     */
-    private Intent mBaseIntent;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        final Intent intent = getIntent();
-
-        // Read base intent from extras, otherwise assume default
-        Parcelable parcel = intent.getParcelableExtra(Intent.EXTRA_INTENT);
-        if (parcel instanceof Intent) {
-            mBaseIntent = (Intent) parcel;
-        } else {
-            mBaseIntent = new Intent(Intent.ACTION_MAIN, null);
-            mBaseIntent.addCategory(Intent.CATEGORY_DEFAULT);
-        }
-
-        // Create dialog parameters
-        AlertController.AlertParams params = mAlertParams;
-        params.mOnClickListener = this;
-        params.mOnCancelListener = this;
-
-        // Use custom title if provided, otherwise default window title
-        if (intent.hasExtra(Intent.EXTRA_TITLE)) {
-            params.mTitle = intent.getStringExtra(Intent.EXTRA_TITLE);
-        } else {
-            params.mTitle = getTitle();
-        }
-
-        // Build list adapter of pickable items
-        List<PickAdapter.Item> items = getItems();
-        mAdapter = new PickAdapter(this, items);
-        params.mAdapter = mAdapter;
-
-        setupAlert();
-    }
-
-    /**
-     * Handle clicking of dialog item by passing back
-     * {@link #getIntentForPosition(int)} in {@link #setResult(int, android.content.Intent)}.
-     */
-    public void onClick(DialogInterface dialog, int which) {
-        Intent intent = getIntentForPosition(which);
-        setResult(Activity.RESULT_OK, intent);
-        finish();
-    }
-
-    /**
-     * Handle canceled dialog by passing back {@link android.app.Activity#RESULT_CANCELED}.
-     */
-    public void onCancel(DialogInterface dialog) {
-        setResult(Activity.RESULT_CANCELED);
-        finish();
-    }
-
-    /**
-     * Build the specific {@link android.content.Intent} for a given list position. Convenience
-     * method that calls through to {@link PickAdapter.Item#getIntent(android.content.Intent)}.
-     */
-    protected Intent getIntentForPosition(int position) {
-        PickAdapter.Item item = (PickAdapter.Item) mAdapter.getItem(position);
-        return item.getIntent(mBaseIntent);
-    }
-
-    /**
-     * Build and return list of items to be shown in dialog. Default
-     * implementation mixes activities matching {@link #mBaseIntent} from
-     * {@link #putIntentItems(android.content.Intent, java.util.List)} with any injected items from
-     * {@link android.content.Intent#EXTRA_SHORTCUT_NAME}. Override this method in subclasses to
-     * change the items shown.
-     */
-    protected List<PickAdapter.Item> getItems() {
-        PackageManager packageManager = getPackageManager();
-        List<PickAdapter.Item> items = new ArrayList<PickAdapter.Item>();
-
-        // Add any injected pick items
-        final Intent intent = getIntent();
-        ArrayList<String> labels =
-            intent.getStringArrayListExtra(Intent.EXTRA_SHORTCUT_NAME);
-        ArrayList<ShortcutIconResource> icons =
-            intent.getParcelableArrayListExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE);
-
-        if (labels != null && icons != null && labels.size() == icons.size()) {
-            for (int i = 0; i < labels.size(); i++) {
-                String label = labels.get(i);
-                Drawable icon = null;
-
-                try {
-                    // Try loading icon from requested package
-                    ShortcutIconResource iconResource = icons.get(i);
-                    Resources res = packageManager.getResourcesForApplication(
-                            iconResource.packageName);
-                    icon = res.getDrawable(res.getIdentifier(
-                            iconResource.resourceName, null, null));
-                } catch (NameNotFoundException e) {
-                    // Ignore
-                }
-
-                items.add(new PickAdapter.Item(this, label, icon));
-            }
-        }
-
-        // Add any intent items if base was given
-        if (mBaseIntent != null) {
-            putIntentItems(mBaseIntent, items);
-        }
-
-        return items;
-    }
-
-    /**
-     * Fill the given list with any activities matching the base {@link android.content.Intent}.
-     */
-    protected void putIntentItems(Intent baseIntent, List<PickAdapter.Item> items) {
-        PackageManager packageManager = getPackageManager();
-        List<ResolveInfo> list = packageManager.queryIntentActivities(baseIntent,
-                0 /* no flags */);
-        Collections.sort(list, new ResolveInfo.DisplayNameComparator(packageManager));
-
-        final int listSize = list.size();
-        for (int i = 0; i < listSize; i++) {
-            ResolveInfo resolveInfo = list.get(i);
-            items.add(new PickAdapter.Item(this, packageManager, resolveInfo));
-        }
-    }
-
-    /**
-     * Adapter which shows the set of activities that can be performed for a
-     * given {@link android.content.Intent}.
-     */
-    protected static class PickAdapter extends BaseAdapter {
-
-        /**
-         * Item that appears in a {@link PickAdapter} list.
-         */
-        public static class Item {
-            protected static IconResizer sResizer;
-
-            protected IconResizer getResizer(Context context) {
-                if (sResizer == null) {
-                    sResizer = new IconResizer(context);
-                }
-                return sResizer;
-            }
-
-            CharSequence label;
-            Drawable icon;
-            String packageName;
-            String className;
-            Bundle extras;
-
-            /**
-             * Create a list item from given label and icon.
-             */
-            Item(Context context, CharSequence label, Drawable icon) {
-                this.label = label;
-                this.icon = getResizer(context).createIconThumbnail(icon);
-            }
-
-            /**
-             * Create a list item and fill it with details from the given
-             * {@link android.content.pm.ResolveInfo} object.
-             */
-            Item(Context context, PackageManager pm, ResolveInfo resolveInfo) {
-                label = resolveInfo.loadLabel(pm);
-                if (label == null && resolveInfo.activityInfo != null) {
-                    label = resolveInfo.activityInfo.name;
-                }
-
-                icon = getResizer(context).createIconThumbnail(resolveInfo.loadIcon(pm));
-                packageName = resolveInfo.activityInfo.applicationInfo.packageName;
-                className = resolveInfo.activityInfo.name;
-            }
-
-            Intent getIntent(Intent baseIntent) {
-                Intent intent = new Intent(baseIntent);
-                if (packageName != null && className != null) {
-                    // Valid package and class, so fill details as normal intent
-                    intent.setClassName(packageName, className);
-                    if (extras != null) {
-                        intent.putExtras(extras);
-                    }
-                } else {
-                    // No valid package or class, so treat as shortcut with label
-                    intent.setAction(Intent.ACTION_CREATE_SHORTCUT);
-                    intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, label);
-                }
-                return intent;
-            }
-        }
-
-        private final LayoutInflater mInflater;
-
-        private List<Item> mItems;
-        private int mLayoutRes = R.layout.pick_item;
-
-        /**
-         * Create an adapter for the given items.
-         */
-        public PickAdapter(Context context, List<Item> items) {
-            mInflater = (LayoutInflater)
-                    context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-            mItems = items;
-        }
-
-        /**
-         * {@inheritDoc}
-         */
-        public int getCount() {
-            return mItems.size();
-        }
-
-        /**
-         * {@inheritDoc}
-         */
-        public Object getItem(int position) {
-            return mItems.get(position);
-        }
-
-        /**
-         * {@inheritDoc}
-         */
-        public long getItemId(int position) {
-            return position;
-        }
-
-        /**
-         * {@inheritDoc}
-         */
-        public View getView(int position, View convertView, ViewGroup parent) {
-            if (convertView == null) {
-                convertView = mInflater.inflate(mLayoutRes, parent, false);
-            }
-
-            Item item = (Item) getItem(position);
-            TextView textView = (TextView) convertView;
-            textView.setText(item.label);
-            textView.setCompoundDrawablesWithIntrinsicBounds(item.icon, null, null, null);
-
-            return convertView;
-        }
-    }
-
-    /**
-     * Utility class to resize icons to match default icon size. Code is mostly
-     * borrowed from Launcher.
-     */
-    private static class IconResizer {
-        private int mIconWidth = -1;
-        private int mIconHeight = -1;
-
-        private final Rect mOldBounds = new Rect();
-        private Canvas mCanvas = new Canvas();
-        private Resources mResources;
-
-        public IconResizer(Context context) {
-            mCanvas.setDrawFilter(new PaintFlagsDrawFilter(Paint.DITHER_FLAG,
-                    Paint.FILTER_BITMAP_FLAG));
-
-            mResources = context.getResources();
-            mIconWidth = mIconHeight = (int) mResources.getDimension(
-                    android.R.dimen.app_icon_size);
-        }
-
-        /**
-         * Returns a Drawable representing the thumbnail of the specified Drawable.
-         * The size of the thumbnail is defined by the dimension
-         * android.R.dimen.launcher_application_icon_size.
-         *
-         * This method is not thread-safe and should be invoked on the UI thread only.
-         *
-         * @param icon The icon to get a thumbnail of.
-         *
-         * @return A thumbnail for the specified icon or the icon itself if the
-         *         thumbnail could not be created.
-         */
-        public Drawable createIconThumbnail(Drawable icon) {
-            int width = mIconWidth;
-            int height = mIconHeight;
-
-            if (icon == null) {
-                return null;
-            }
-
-            final int iconWidth = icon.getIntrinsicWidth();
-            final int iconHeight = icon.getIntrinsicHeight();
-
-            if (icon instanceof PaintDrawable) {
-                PaintDrawable painter = (PaintDrawable) icon;
-                painter.setIntrinsicWidth(width);
-                painter.setIntrinsicHeight(height);
-            }
-
-            if (width > 0 && height > 0) {
-                if (width < iconWidth || height < iconHeight) {
-                    final float ratio = (float) iconWidth / iconHeight;
-
-                    if (iconWidth > iconHeight) {
-                        height = (int) (width / ratio);
-                    } else if (iconHeight > iconWidth) {
-                        width = (int) (height * ratio);
-                    }
-
-                    final Bitmap.Config c = icon.getOpacity() != PixelFormat.OPAQUE ?
-                                Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565;
-                    final Bitmap thumb = Bitmap.createBitmap(mIconWidth, mIconHeight, c);
-                    final Canvas canvas = mCanvas;
-                    canvas.setBitmap(thumb);
-                    // Copy the old bounds to restore them later
-                    // If we were to do oldBounds = icon.getBounds(),
-                    // the call to setBounds() that follows would
-                    // change the same instance and we would lose the
-                    // old bounds
-                    mOldBounds.set(icon.getBounds());
-                    final int x = (mIconWidth - width) / 2;
-                    final int y = (mIconHeight - height) / 2;
-                    icon.setBounds(x, y, x + width, y + height);
-                    icon.draw(canvas);
-                    icon.setBounds(mOldBounds);
-                    icon = new BitmapDrawable(mResources, thumb);
-                } else if (iconWidth < width && iconHeight < height) {
-                    final Bitmap.Config c = Bitmap.Config.ARGB_8888;
-                    final Bitmap thumb = Bitmap.createBitmap(mIconWidth, mIconHeight, c);
-                    final Canvas canvas = mCanvas;
-                    canvas.setBitmap(thumb);
-                    mOldBounds.set(icon.getBounds());
-                    final int x = (width - iconWidth) / 2;
-                    final int y = (height - iconHeight) / 2;
-                    icon.setBounds(x, y, x + iconWidth, y + iconHeight);
-                    icon.draw(canvas);
-                    icon.setBounds(mOldBounds);
-                    icon = new BitmapDrawable(mResources, thumb);
-                }
-            }
-
-            return icon;
-        }
-    }
-}
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 45545db..50be606 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -19,7 +19,6 @@
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.ISearchManager;
 import android.app.SearchManager;
 import android.app.StatusBarManager;
 import android.app.WallpaperManager;
@@ -46,8 +45,6 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Parcelable;
-import android.os.RemoteException;
-import android.os.ServiceManager;
 import android.os.SystemProperties;
 import android.provider.LiveFolders;
 import android.text.Selection;
@@ -113,9 +110,6 @@
 
     static final String EXTRA_SHORTCUT_DUPLICATE = "duplicate";
 
-    static final String EXTRA_CUSTOM_WIDGET = "custom_widget";
-    static final String SEARCH_WIDGET = "search_widget";
-
     static final int SCREEN_COUNT = 5;
     static final int DEFAULT_SCREEN = 2;
     static final int NUMBER_CELLS_X = 4;
@@ -183,8 +177,6 @@
 
     private SpannableStringBuilder mDefaultKeySsb = null;
 
-    private boolean mIsNewIntent;
-
     private boolean mWorkspaceLoading = true;
 
     private boolean mPaused = true;
@@ -412,21 +404,6 @@
             mModel.startLoader(this, true);
             mRestoring = false;
         }
-
-        // If this was a new intent (i.e., the mIsNewIntent flag got set to true by
-        // onNewIntent), then close the search dialog if needed, because it probably
-        // came from the user pressing 'home' (rather than, for example, pressing 'back').
-        if (mIsNewIntent) {
-            // Post to a handler so that this happens after the search dialog tries to open
-            // itself again.
-            mWorkspace.post(new Runnable() {
-                public void run() {
-                    stopSearch();
-                }
-            });
-        }
-
-        mIsNewIntent = false;
     }
 
     @Override
@@ -554,6 +531,7 @@
         mHandleView = (HandleView) findViewById(R.id.all_apps_button);
         mHandleView.setLauncher(this);
         mHandleView.setOnClickListener(this);
+        mHandleView.setOnLongClickListener(this);
 
         mPreviousView = (ImageView) dragLayer.findViewById(R.id.previous_screen);
         mNextView = (ImageView) dragLayer.findViewById(R.id.next_screen);
@@ -845,11 +823,6 @@
             // also will cancel mWaitingForResult.
             closeSystemDialogs();
 
-            // Set this flag so that onResume knows to close the search dialog if it's open,
-            // because this was a new intent (thus a press of 'home' or some such) rather than
-            // for example onResume being called when the user pressed the 'back' button.
-            mIsNewIntent = true;
-
             boolean alreadyOnHome = ((intent.getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT)
                         != Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
             boolean allAppsVisible = isAllAppsVisible();
@@ -953,26 +926,6 @@
 
         closeAllApps(true);
 
-        // Slide the search widget to the top, if it's on the current screen,
-        // otherwise show the search dialog immediately.
-        Search searchWidget = mWorkspace.findSearchWidgetOnCurrentScreen();
-        if (searchWidget == null) {
-            showSearchDialog(initialQuery, selectInitialQuery, appSearchData, globalSearch);
-        } else {
-            searchWidget.startSearch(initialQuery, selectInitialQuery, appSearchData, globalSearch);
-            // show the currently typed text in the search widget while sliding
-            searchWidget.setQuery(getTypedText());
-        }
-    }
-
-    /**
-     * Show the search dialog immediately, without changing the search widget.
-     *
-     * @see Activity#startSearch(String, boolean, android.os.Bundle, boolean)
-     */
-    void showSearchDialog(String initialQuery, boolean selectInitialQuery,
-            Bundle appSearchData, boolean globalSearch) {
-
         if (initialQuery == null) {
             // Use any text typed in the launcher as the initial query
             initialQuery = getTypedText();
@@ -985,37 +938,10 @@
 
         final SearchManager searchManager =
                 (SearchManager) getSystemService(Context.SEARCH_SERVICE);
-
-        final Search searchWidget = mWorkspace.findSearchWidgetOnCurrentScreen();
-        if (searchWidget != null) {
-            // This gets called when the user leaves the search dialog to go back to
-            // the Launcher.
-            searchManager.setOnCancelListener(new SearchManager.OnCancelListener() {
-                public void onCancel() {
-                    searchManager.setOnCancelListener(null);
-                    stopSearch();
-                }
-            });
-        }
-
         searchManager.startSearch(initialQuery, selectInitialQuery, getComponentName(),
             appSearchData, globalSearch);
     }
 
-    /**
-     * Cancel search dialog if it is open.
-     */
-    void stopSearch() {
-        // Close search dialog
-        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
-        searchManager.stopSearch();
-        // Restore search widget to its normal position
-        Search searchWidget = mWorkspace.findSearchWidgetOnCurrentScreen();
-        if (searchWidget != null) {
-            searchWidget.stopSearch(false);
-        }
-    }
-
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         if (isWorkspaceLocked()) {
@@ -1100,51 +1026,21 @@
     void addAppWidget(Intent data) {
         // TODO: catch bad widget exception when sent
         int appWidgetId = data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1);
+        AppWidgetProviderInfo appWidget = mAppWidgetManager.getAppWidgetInfo(appWidgetId);
 
-        String customWidget = data.getStringExtra(EXTRA_CUSTOM_WIDGET);
-        if (SEARCH_WIDGET.equals(customWidget)) {
-            // We don't need this any more, since this isn't a real app widget.
-            mAppWidgetHost.deleteAppWidgetId(appWidgetId);
-            // add the search widget
-            addSearch();
+        if (appWidget.configure != null) {
+            // Launch over to configure widget, if needed
+            Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_CONFIGURE);
+            intent.setComponent(appWidget.configure);
+            intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
+
+            startActivityForResult(intent, REQUEST_CREATE_APPWIDGET);
         } else {
-            AppWidgetProviderInfo appWidget = mAppWidgetManager.getAppWidgetInfo(appWidgetId);
-
-            if (appWidget.configure != null) {
-                // Launch over to configure widget, if needed
-                Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_CONFIGURE);
-                intent.setComponent(appWidget.configure);
-                intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
-
-                startActivityForResult(intent, REQUEST_CREATE_APPWIDGET);
-            } else {
-                // Otherwise just add it
-                onActivityResult(REQUEST_CREATE_APPWIDGET, Activity.RESULT_OK, data);
-            }
+            // Otherwise just add it
+            onActivityResult(REQUEST_CREATE_APPWIDGET, Activity.RESULT_OK, data);
         }
     }
 
-    void addSearch() {
-        final Widget info = Widget.makeSearch();
-        final CellLayout.CellInfo cellInfo = mAddItemCellInfo;
-
-        final int[] xy = mCellCoordinates;
-        final int spanX = info.spanX;
-        final int spanY = info.spanY;
-
-        if (!findSlot(cellInfo, xy, spanX, spanY)) return;
-
-        LauncherModel.addItemToDatabase(this, info, LauncherSettings.Favorites.CONTAINER_DESKTOP,
-        mWorkspace.getCurrentScreen(), xy[0], xy[1], false);
-
-        final View view = mInflater.inflate(info.layoutResource, null);
-        view.setTag(info);
-        Search search = (Search) view.findViewById(R.id.widget_search);
-        search.setLauncher(this);
-
-        mWorkspace.addInCurrentScreen(view, xy[0], xy[1], info.spanX, spanY);
-    }
-
     void processShortcut(Intent intent, int requestCodeApplication, int requestCodeShortcut) {
         // Handle case where user selected "Applications"
         String applicationName = getResources().getString(R.string.group_applications);
@@ -1486,14 +1382,21 @@
                 if (!isAllAppsVisible()) {
                     mWorkspace.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS,
                             HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
-                    showPreviousPreview(v);
+                    showPreviews(v);
                 }
                 return true;
             case R.id.next_screen:
                 if (!isAllAppsVisible()) {
                     mWorkspace.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS,
                             HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
-                    showNextPreview(v);
+                    showPreviews(v);
+                }
+                return true;
+            case R.id.all_apps_button:
+                if (!isAllAppsVisible()) {
+                    mWorkspace.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS,
+                            HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
+                    showPreviews(v);
                 }
                 return true;
         }
@@ -1556,29 +1459,19 @@
         v.setTag(null);
     }
 
-    private void showPreviousPreview(View anchor) {
-        int current = mWorkspace.getCurrentScreen();
-        if (current <= 0) return;
-
+    private void showPreviews(View anchor) {
         showPreviews(anchor, 0, mWorkspace.getChildCount());
     }
 
-    private void showNextPreview(View anchor) {
-        int current = mWorkspace.getCurrentScreen();
-        if (current >= mWorkspace.getChildCount() - 1) return;
-
-        showPreviews(anchor, 0, mWorkspace.getChildCount());        
-    }
-
     private void showPreviews(final View anchor, int start, int end) {
-        Resources resources = getResources();
+        final Resources resources = getResources();
+        final Workspace workspace = mWorkspace;
 
-        Workspace workspace = mWorkspace;
         CellLayout cell = ((CellLayout) workspace.getChildAt(start));
         
         float max = workspace.getChildCount();
         
-        Rect r = new Rect();
+        final Rect r = new Rect();
         resources.getDrawable(R.drawable.preview_background).getPadding(r);
         int extraW = (int) ((r.left + r.right) * max);
         int extraH = r.top + r.bottom;
@@ -1609,10 +1502,10 @@
             ImageView image = new ImageView(this);
             cell = (CellLayout) workspace.getChildAt(i);
 
-            Bitmap bitmap = Bitmap.createBitmap((int) sWidth, (int) sHeight,
+            final Bitmap bitmap = Bitmap.createBitmap((int) sWidth, (int) sHeight,
                     Bitmap.Config.ARGB_8888);
-            
-            Canvas c = new Canvas(bitmap);
+
+            final Canvas c = new Canvas(bitmap);
             c.scale(scale, scale);
             c.translate(-cell.getLeftPadding(), -cell.getTopPadding());
             cell.dispatchDraw(c);
@@ -1630,8 +1523,8 @@
 
             bitmaps.add(bitmap);            
         }
-        
-        PopupWindow p = new PopupWindow(this);
+
+        final PopupWindow p = new PopupWindow(this);
         p.setContentView(preview);
         p.setWidth((int) (sWidth * count + extraW));
         p.setHeight((int) (sHeight + extraH));
@@ -1675,10 +1568,6 @@
         }
     }
 
-    View getDrawerHandle() {
-        return mHandleView;
-    }
-
     Workspace getWorkspace() {
         return mWorkspace;
     }
@@ -1829,22 +1718,14 @@
         return mAllAppsGrid.isVisible();
     }
 
-    boolean isAllAppsOpaque() {
-        return mAllAppsGrid.isOpaque();
-    }
-
     void showAllApps(boolean animated) {
         mAllAppsGrid.zoom(1.0f, animated);
-        //mWorkspace.hide();
-
-        mWorkspace.startFading(false);
 
         mAllAppsGrid.setFocusable(true);
         mAllAppsGrid.requestFocus();
         
         // TODO: fade these two too
         mDeleteZone.setVisibility(View.GONE);
-        //mHandleView.setVisibility(View.GONE);
     }
 
     /**
@@ -1887,13 +1768,6 @@
             mAllAppsGrid.zoom(0.0f, animated);
             mAllAppsGrid.setFocusable(false);
             mWorkspace.getChildAt(mWorkspace.getCurrentScreen()).requestFocus();
-            mWorkspace.startFading(true);
-
-            // TODO: fade these two too
-            /*
-            mDeleteZone.setVisibility(View.VISIBLE);
-            mHandleView.setVisibility(View.VISIBLE);
-            */
         }
     }
 
@@ -1969,22 +1843,6 @@
 
                     Intent pickIntent = new Intent(AppWidgetManager.ACTION_APPWIDGET_PICK);
                     pickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
-                    // add the search widget
-                    ArrayList<AppWidgetProviderInfo> customInfo =
-                            new ArrayList<AppWidgetProviderInfo>();
-                    AppWidgetProviderInfo info = new AppWidgetProviderInfo();
-                    info.provider = new ComponentName(getPackageName(), "XXX.YYY");
-                    info.label = getString(R.string.group_search);
-                    info.icon = R.drawable.ic_search_widget;
-                    customInfo.add(info);
-                    pickIntent.putParcelableArrayListExtra(
-                            AppWidgetManager.EXTRA_CUSTOM_INFO, customInfo);
-                    ArrayList<Bundle> customExtras = new ArrayList<Bundle>();
-                    Bundle b = new Bundle();
-                    b.putString(EXTRA_CUSTOM_WIDGET, SEARCH_WIDGET);
-                    customExtras.add(b);
-                    pickIntent.putParcelableArrayListExtra(
-                            AppWidgetManager.EXTRA_CUSTOM_EXTRAS, customExtras);
                     // start the pick activity
                     startActivityForResult(pickIntent, REQUEST_PICK_APPWIDGET);
                     break;
@@ -2125,19 +1983,6 @@
                     workspace.addInScreen(newLiveFolder, item.screen, item.cellX, item.cellY, 1, 1,
                             false);
                     break;
-                case LauncherSettings.Favorites.ITEM_TYPE_WIDGET_SEARCH:
-                    final int screen = workspace.getCurrentScreen();
-                    final View view = mInflater.inflate(R.layout.widget_search,
-                            (ViewGroup) workspace.getChildAt(screen), false);
-
-                    Search search = (Search) view.findViewById(R.id.widget_search);
-                    search.setLauncher(this);
-
-                    final Widget widget = (Widget) item;
-                    view.setTag(widget);
-
-                    workspace.addWidget(view, widget, false);
-                    break;
             }
         }
 
@@ -2258,7 +2103,6 @@
     public void dumpState() {
         Log.d(TAG, "BEGIN launcher2 dump state for launcher " + this);
         Log.d(TAG, "mSavedState=" + mSavedState);
-        Log.d(TAG, "mIsNewIntent=" + mIsNewIntent);
         Log.d(TAG, "mWorkspaceLoading=" + mWorkspaceLoading);
         Log.d(TAG, "mRestoring=" + mRestoring);
         Log.d(TAG, "mWaitingForResult=" + mWaitingForResult);
diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java
index 97fa554..cafb9fa 100644
--- a/src/com/android/launcher2/LauncherModel.java
+++ b/src/com/android/launcher2/LauncherModel.java
@@ -651,7 +651,6 @@
 
                     ApplicationInfo info;
                     String intentDescription;
-                    Widget widgetInfo;
                     LauncherAppWidgetInfo appWidgetInfo;
                     int container;
                     long id;
@@ -770,25 +769,6 @@
                                 mFolders.put(liveFolderInfo.id, liveFolderInfo);
                                 break;
 
-                            case LauncherSettings.Favorites.ITEM_TYPE_WIDGET_SEARCH:
-                                widgetInfo = Widget.makeSearch();
-
-                                container = c.getInt(containerIndex);
-                                if (container != LauncherSettings.Favorites.CONTAINER_DESKTOP) {
-                                    Log.e(TAG, "Widget found where container "
-                                            + "!= CONTAINER_DESKTOP  ignoring!");
-                                    continue;
-                                }
-
-                                widgetInfo.id = c.getLong(idIndex);
-                                widgetInfo.screen = c.getInt(screenIndex);
-                                widgetInfo.container = container;
-                                widgetInfo.cellX = c.getInt(cellXIndex);
-                                widgetInfo.cellY = c.getInt(cellYIndex);
-
-                                mItems.add(widgetInfo);
-                                break;
-
                             case LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET:
                                 // Read all Launcher-specific widget details
                                 int appWidgetId = c.getInt(appWidgetIdIndex);
diff --git a/src/com/android/launcher2/LauncherProvider.java b/src/com/android/launcher2/LauncherProvider.java
index c3ceefd..d40e1ec 100644
--- a/src/com/android/launcher2/LauncherProvider.java
+++ b/src/com/android/launcher2/LauncherProvider.java
@@ -58,7 +58,7 @@
 
     private static final String DATABASE_NAME = "launcher.db";
     
-    private static final int DATABASE_VERSION = 6;
+    private static final int DATABASE_VERSION = 7;
 
     static final String AUTHORITY = "com.android.launcher2.settings";
     
@@ -382,7 +382,13 @@
                     version = 6;
                 }
             }
-            
+
+            if (version < 7) {
+                // Version 7 gets rid of the special search widget.
+                convertWidgets(db);
+                version = 7;
+            }
+
             if (version != DATABASE_VERSION) {
                 Log.w(TAG, "Destroying all old data.");
                 db.execSQL("DROP TABLE IF EXISTS " + TABLE_FAVORITES);
@@ -463,26 +469,21 @@
          * LauncherAppWidgetBinder to finish the actual binding.
          */
         private void convertWidgets(SQLiteDatabase db) {
+            final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(mContext);
             final int[] bindSources = new int[] {
                     Favorites.ITEM_TYPE_WIDGET_CLOCK,
                     Favorites.ITEM_TYPE_WIDGET_PHOTO_FRAME,
+                    Favorites.ITEM_TYPE_WIDGET_SEARCH,
             };
-            
-            final ArrayList<ComponentName> bindTargets = new ArrayList<ComponentName>();
-            bindTargets.add(new ComponentName("com.android.alarmclock",
-                    "com.android.alarmclock.AnalogAppWidgetProvider"));
-            bindTargets.add(new ComponentName("com.android.camera",
-                    "com.android.camera.PhotoAppWidgetProvider"));
-            
+
             final String selectWhere = buildOrWhereString(Favorites.ITEM_TYPE, bindSources);
             
             Cursor c = null;
-            boolean allocatedAppWidgets = false;
             
             db.beginTransaction();
             try {
                 // Select and iterate through each matching widget
-                c = db.query(TABLE_FAVORITES, new String[] { Favorites._ID },
+                c = db.query(TABLE_FAVORITES, new String[] { Favorites._ID, Favorites.ITEM_TYPE },
                         selectWhere, null, null, null, null);
                 
                 if (LOGD) Log.d(TAG, "found upgrade cursor count=" + c.getCount());
@@ -490,7 +491,8 @@
                 final ContentValues values = new ContentValues();
                 while (c != null && c.moveToNext()) {
                     long favoriteId = c.getLong(0);
-                    
+                    int favoriteType = c.getInt(1);
+
                     // Allocate and update database with new appWidgetId
                     try {
                         int appWidgetId = mAppWidgetHost.allocateAppWidgetId();
@@ -499,18 +501,36 @@
                             Log.d(TAG, "allocated appWidgetId=" + appWidgetId
                                     + " for favoriteId=" + favoriteId);
                         }
-                        
                         values.clear();
-                        values.put(LauncherSettings.Favorites.APPWIDGET_ID, appWidgetId);
-                        
+                        values.put(Favorites.ITEM_TYPE, Favorites.ITEM_TYPE_APPWIDGET);
+                        values.put(Favorites.APPWIDGET_ID, appWidgetId);
+
                         // Original widgets might not have valid spans when upgrading
-                        values.put(LauncherSettings.Favorites.SPANX, 2);
-                        values.put(LauncherSettings.Favorites.SPANY, 2);
+                        if (favoriteType == Favorites.ITEM_TYPE_WIDGET_SEARCH) {
+                            values.put(LauncherSettings.Favorites.SPANX, 4);
+                            values.put(LauncherSettings.Favorites.SPANY, 1);
+                        } else {
+                            values.put(LauncherSettings.Favorites.SPANX, 2);
+                            values.put(LauncherSettings.Favorites.SPANY, 2);
+                        }
 
                         String updateWhere = Favorites._ID + "=" + favoriteId;
                         db.update(TABLE_FAVORITES, values, updateWhere, null);
-                        
-                        allocatedAppWidgets = true;
+
+                        ComponentName cn = null;
+                        if (favoriteType == Favorites.ITEM_TYPE_WIDGET_CLOCK) {
+                            appWidgetManager.bindAppWidgetId(appWidgetId,
+                                    new ComponentName("com.android.alarmclock",
+                                    "com.android.alarmclock.AnalogAppWidgetProvider"));
+                        } else if (favoriteType == Favorites.ITEM_TYPE_WIDGET_PHOTO_FRAME) {
+                            appWidgetManager.bindAppWidgetId(appWidgetId,
+                                    new ComponentName("com.android.camera",
+                                    "com.android.camera.PhotoAppWidgetProvider"));
+                        } else if (favoriteType == Favorites.ITEM_TYPE_WIDGET_SEARCH) {
+                            appWidgetManager.bindAppWidgetId(appWidgetId,
+                                    new ComponentName("com.android.quicksearchbox",
+                                    "com.android.quicksearchbox.SearchWidgetProvider"));
+                        }
                     } catch (RuntimeException ex) {
                         Log.e(TAG, "Problem allocating appWidgetId", ex);
                     }
@@ -525,34 +545,9 @@
                     c.close();
                 }
             }
-            
-            // If any appWidgetIds allocated, then launch over to binder
-            if (allocatedAppWidgets) {
-                launchAppWidgetBinder(bindSources, bindTargets);
-            }
         }
 
         /**
-         * Launch the widget binder that walks through the Launcher database,
-         * binding any matching widgets to the corresponding targets. We can't
-         * bind ourselves because our parent process can't obtain the
-         * BIND_APPWIDGET permission.
-         */
-        private void launchAppWidgetBinder(int[] bindSources, ArrayList<ComponentName> bindTargets) {
-            final Intent intent = new Intent();
-            intent.setComponent(new ComponentName("com.android.settings",
-                    "com.android.settings.LauncherAppWidgetBinder"));
-            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-            
-            final Bundle extras = new Bundle();
-            extras.putIntArray(EXTRA_BIND_SOURCES, bindSources);
-            extras.putParcelableArrayList(EXTRA_BIND_TARGETS, bindTargets);
-            intent.putExtras(extras);
-            
-            mContext.startActivity(intent);
-        }
-        
-        /**
          * Loads the default set of favorite packages from an xml file.
          *
          * @param db The database to write the values into
@@ -646,47 +641,15 @@
         }
 
         private boolean addSearchWidget(SQLiteDatabase db, ContentValues values) {
-            // Add a search box
-            values.put(Favorites.ITEM_TYPE, Favorites.ITEM_TYPE_WIDGET_SEARCH);
-            values.put(Favorites.SPANX, 4);
-            values.put(Favorites.SPANY, 1);
-            db.insert(TABLE_FAVORITES, null, values);
-
-            return true;
+            ComponentName cn = new ComponentName("com.android.quicksearchbox",
+                    "com.android.quicksearchbox.SearchWidgetProvider");
+            return addAppWidget(db, values, cn, 4, 1);
         }
 
         private boolean addClockWidget(SQLiteDatabase db, ContentValues values) {
-            final int[] bindSources = new int[] {
-                    Favorites.ITEM_TYPE_WIDGET_CLOCK,
-            };
-
-            final ArrayList<ComponentName> bindTargets = new ArrayList<ComponentName>();
-            bindTargets.add(new ComponentName("com.android.alarmclock",
-                    "com.android.alarmclock.AnalogAppWidgetProvider"));
-
-            boolean allocatedAppWidgets = false;
-            
-            // Try binding to an analog clock widget
-            try {
-                int appWidgetId = mAppWidgetHost.allocateAppWidgetId();
-
-                values.put(Favorites.ITEM_TYPE, Favorites.ITEM_TYPE_WIDGET_CLOCK);
-                values.put(Favorites.SPANX, 2);
-                values.put(Favorites.SPANY, 2);
-                values.put(Favorites.APPWIDGET_ID, appWidgetId);
-                db.insert(TABLE_FAVORITES, null, values);
-
-                allocatedAppWidgets = true;
-            } catch (RuntimeException ex) {
-                Log.e(TAG, "Problem allocating appWidgetId", ex);
-            }
-
-            // If any appWidgetIds allocated, then launch over to binder
-            if (allocatedAppWidgets) {
-                launchAppWidgetBinder(bindSources, bindTargets);
-            }
-
-            return allocatedAppWidgets;
+            ComponentName cn = new ComponentName("com.android.alarmclock",
+                    "com.android.alarmclock.AnalogAppWidgetProvider");
+            return addAppWidget(db, values, cn, 2, 2);
         }
         
         private boolean addAppWidget(SQLiteDatabase db, ContentValues values, TypedArray a) {
@@ -698,7 +661,13 @@
             }
             
             ComponentName cn = new ComponentName(packageName, className);
-            
+            int spanX = a.getInt(R.styleable.Favorite_spanX, 0);
+            int spanY = a.getInt(R.styleable.Favorite_spanY, 0);
+            return addAppWidget(db, values, cn, spanX, spanY);
+        }
+
+        private boolean addAppWidget(SQLiteDatabase db, ContentValues values, ComponentName cn,
+                int spanX, int spanY) {
             boolean allocatedAppWidgets = false;
             final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(mContext);
 
@@ -706,8 +675,8 @@
                 int appWidgetId = mAppWidgetHost.allocateAppWidgetId();
                 
                 values.put(Favorites.ITEM_TYPE, Favorites.ITEM_TYPE_APPWIDGET);
-                values.put(Favorites.SPANX, a.getString(R.styleable.Favorite_spanX));
-                values.put(Favorites.SPANY, a.getString(R.styleable.Favorite_spanY));
+                values.put(Favorites.SPANX, spanX);
+                values.put(Favorites.SPANY, spanY);
                 values.put(Favorites.APPWIDGET_ID, appWidgetId);
                 db.insert(TABLE_FAVORITES, null, values);
 
diff --git a/src/com/android/launcher2/Search.java b/src/com/android/launcher2/Search.java
deleted file mode 100644
index 283042d..0000000
--- a/src/com/android/launcher2/Search.java
+++ /dev/null
@@ -1,380 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.launcher2;
-
-import android.app.Activity;
-import android.content.ActivityNotFoundException;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.content.res.Configuration;
-import android.graphics.drawable.Drawable;
-import android.os.Bundle;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.KeyEvent;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.View.OnKeyListener;
-import android.view.View.OnLongClickListener;
-import android.view.animation.AccelerateDecelerateInterpolator;
-import android.view.animation.Animation;
-import android.view.animation.Interpolator;
-import android.view.animation.Transformation;
-import android.view.inputmethod.InputMethodManager;
-import android.widget.ImageButton;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-public class Search extends LinearLayout 
-        implements OnClickListener, OnKeyListener, OnLongClickListener {
-
-    // Speed at which the widget slides up/down, in pixels/ms.
-    private static final float ANIMATION_VELOCITY = 1.0f;
-
-    /** The distance in dips between the optical top of the widget and the top if its bounds */
-    private static final float WIDGET_TOP_OFFSET = 9;
-
-    
-    private final String TAG = "Launcher.SearchWidget";
-
-    private Launcher mLauncher;
-
-    private TextView mSearchText;
-    private ImageButton mVoiceButton;
-
-    /** The animation that morphs the search widget to the search dialog. */
-    private Animation mMorphAnimation;
-
-    /** The animation that morphs the search widget back to its normal position. */
-    private Animation mUnmorphAnimation;
-
-    // These four are passed to Launcher.startSearch() when the search widget
-    // has finished morphing. They are instance variables to make it possible to update
-    // them while the widget is morphing.
-    private String mInitialQuery;
-    private boolean mSelectInitialQuery;    
-    private Bundle mAppSearchData;
-    private boolean mGlobalSearch;
-
-    // For voice searching
-    private Intent mVoiceSearchIntent;
-    
-    private int mWidgetTopOffset;
-
-    /**
-     * Used to inflate the Workspace from XML.
-     *
-     * @param context The application's context.
-     * @param attrs The attributes set containing the Workspace's customization values.
-     */
-    public Search(Context context, AttributeSet attrs) {
-        super(context, attrs);
-
-        final float scale = context.getResources().getDisplayMetrics().density;
-        mWidgetTopOffset = Math.round(WIDGET_TOP_OFFSET * scale);
-        
-        Interpolator interpolator = new AccelerateDecelerateInterpolator();
-
-        mMorphAnimation = new ToParentOriginAnimation();
-        // no need to apply transformation before the animation starts,
-        // since the gadget is already in its normal place.
-        mMorphAnimation.setFillBefore(false);
-        // stay in the top position after the animation finishes
-        mMorphAnimation.setFillAfter(true);
-        mMorphAnimation.setInterpolator(interpolator);
-        mMorphAnimation.setAnimationListener(new Animation.AnimationListener() {
-            // The amount of time before the animation ends to show the search dialog.
-            private static final long TIME_BEFORE_ANIMATION_END = 80;
-            
-            // The runnable which we'll pass to our handler to show the search dialog.
-            private final Runnable mShowSearchDialogRunnable = new Runnable() {
-                public void run() {
-                    showSearchDialog();
-                }
-            };
-            
-            public void onAnimationEnd(Animation animation) { }
-            public void onAnimationRepeat(Animation animation) { }
-            public void onAnimationStart(Animation animation) {
-                // Make the search dialog show up ideally *just* as the animation reaches
-                // the top, to aid the illusion that the widget becomes the search dialog.
-                // Otherwise, there is a short delay when the widget reaches the top before
-                // the search dialog shows. We do this roughly 80ms before the animation ends.
-                getHandler().postDelayed(
-                        mShowSearchDialogRunnable,
-                        Math.max(mMorphAnimation.getDuration() - TIME_BEFORE_ANIMATION_END, 0));
-            }
-        });
-
-        mUnmorphAnimation = new FromParentOriginAnimation();
-        // stay in the top position until the animation starts
-        mUnmorphAnimation.setFillBefore(true);
-        // no need to apply transformation after the animation finishes,
-        // since the gadget is now back in its normal place.
-        mUnmorphAnimation.setFillAfter(false);
-        mUnmorphAnimation.setInterpolator(interpolator);
-        mUnmorphAnimation.setAnimationListener(new Animation.AnimationListener(){
-            public void onAnimationEnd(Animation animation) {
-                clearAnimation();
-            }
-            public void onAnimationRepeat(Animation animation) { }
-            public void onAnimationStart(Animation animation) { }
-        });
-        
-        mVoiceSearchIntent = new Intent(android.speech.RecognizerIntent.ACTION_WEB_SEARCH);
-        mVoiceSearchIntent.putExtra(android.speech.RecognizerIntent.EXTRA_LANGUAGE_MODEL,
-                android.speech.RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
-    }
-
-    /**
-     * Implements OnClickListener.
-     */
-    public void onClick(View v) {
-        if (v == mVoiceButton) {
-            startVoiceSearch();
-        } else {
-            mLauncher.onSearchRequested();
-        }
-    }
-
-    private void startVoiceSearch() {
-        try {
-            getContext().startActivity(mVoiceSearchIntent);
-        } catch (ActivityNotFoundException ex) {
-            // Should not happen, since we check the availability of
-            // voice search before showing the button. But just in case...
-            Log.w(TAG, "Could not find voice search activity");
-        }
-    }
-
-    /**
-     * Sets the query text. The query field is not editable, instead we forward
-     * the key events to the launcher, which keeps track of the text, 
-     * calls setQuery() to show it, and gives it to the search dialog.
-     */
-    public void setQuery(String query) {
-        mSearchText.setText(query, TextView.BufferType.NORMAL);
-    }
-
-    /**
-     * Morph the search gadget to the search dialog.
-     * See {@link Activity#startSearch()} for the arguments.
-     */
-    public void startSearch(String initialQuery, boolean selectInitialQuery, 
-            Bundle appSearchData, boolean globalSearch) {
-        mInitialQuery = initialQuery;
-        mSelectInitialQuery = selectInitialQuery;
-        mAppSearchData = appSearchData;
-        mGlobalSearch = globalSearch;
-        
-        if (isAtTop()) {
-            showSearchDialog();
-        } else {
-            // Call up the keyboard before we actually call the search dialog so that it
-            // (hopefully) animates in at about the same time as the widget animation, and
-            // so that it becomes available as soon as possible. Only do this if a hard
-            // keyboard is not currently available.
-            if (getContext().getResources().getConfiguration().hardKeyboardHidden ==
-                    Configuration.HARDKEYBOARDHIDDEN_YES) {
-                InputMethodManager inputManager = (InputMethodManager)
-                        getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
-                inputManager.showSoftInputUnchecked(0, null);
-            }
-            
-            // Start the animation, unless it has already started.
-            if (getAnimation() != mMorphAnimation) {
-                mMorphAnimation.setDuration(getAnimationDuration());
-                startAnimation(mMorphAnimation);
-            }
-        }
-    }
-
-    /**
-     * Shows the system search dialog immediately, without any animation.
-     */
-    private void showSearchDialog() {
-        mLauncher.showSearchDialog(
-                mInitialQuery, mSelectInitialQuery, mAppSearchData, mGlobalSearch);
-    }
-
-    /**
-     * Restore the search gadget to its normal position.
-     * 
-     * @param animate Whether to animate the movement of the gadget.
-     */
-    public void stopSearch(boolean animate) {
-        setQuery("");
-        
-        // Only restore if we are not already restored.
-        if (getAnimation() == mMorphAnimation) {
-            if (animate && !isAtTop()) {
-                mUnmorphAnimation.setDuration(getAnimationDuration());
-                startAnimation(mUnmorphAnimation);
-            } else {
-                clearAnimation();
-            }
-        }
-    }
-
-    private boolean isAtTop() {
-        return getWidgetTop() == 0;
-    }
-
-    private int getAnimationDuration() {
-        return (int) (getWidgetTop() / ANIMATION_VELOCITY);
-    }
-
-    /**
-     * Modify clearAnimation() to invalidate the parent. This works around
-     * an issue where the region where the end of the animation placed the view
-     * was not redrawn after clearing the animation.
-     */
-    @Override
-    public void clearAnimation() {
-        Animation animation = getAnimation();
-        if (animation != null) {
-            super.clearAnimation();
-            if (animation.hasEnded() 
-                    && animation.getFillAfter()
-                    && animation.willChangeBounds()) {
-                View parent = (View) getParent();
-                if (parent != null) parent.invalidate();
-            } else {
-                invalidate();
-            }
-        }
-    }
-    
-    public boolean onKey(View v, int keyCode, KeyEvent event) {
-        if (!event.isSystem() && 
-                (keyCode != KeyEvent.KEYCODE_DPAD_UP) &&
-                (keyCode != KeyEvent.KEYCODE_DPAD_DOWN) &&
-                (keyCode != KeyEvent.KEYCODE_DPAD_LEFT) &&
-                (keyCode != KeyEvent.KEYCODE_DPAD_RIGHT) &&
-                (keyCode != KeyEvent.KEYCODE_DPAD_CENTER)) {
-            // Forward key events to Launcher, which will forward text 
-            // to search dialog
-            switch (event.getAction()) {
-                case KeyEvent.ACTION_DOWN:
-                    return mLauncher.onKeyDown(keyCode, event);
-                case KeyEvent.ACTION_MULTIPLE:
-                    return mLauncher.onKeyMultiple(keyCode, event.getRepeatCount(), event);
-                case KeyEvent.ACTION_UP:
-                    return mLauncher.onKeyUp(keyCode, event);
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Implements OnLongClickListener to pass long clicks on child views 
-     * to the widget. This makes it possible to pick up the widget by long
-     * clicking on the text field or a button.
-     */
-    public boolean onLongClick(View v) {
-        return performLongClick();
-    }
-
-    @Override
-    protected void onFinishInflate() {
-        super.onFinishInflate();
-
-        mSearchText = (TextView) findViewById(R.id.search_src_text);
-        mVoiceButton = (ImageButton) findViewById(R.id.search_voice_btn);
-        
-        mSearchText.setOnKeyListener(this);
-
-        mSearchText.setOnClickListener(this);
-        mVoiceButton.setOnClickListener(this);
-        setOnClickListener(this);        
-
-        mSearchText.setOnLongClickListener(this);
-        mVoiceButton.setOnLongClickListener(this);
-
-        // Set the placeholder text to be the Google logo within the search widget.
-        Drawable googlePlaceholder =
-                getContext().getResources().getDrawable(R.drawable.placeholder_google);
-        mSearchText.setCompoundDrawablesWithIntrinsicBounds(googlePlaceholder, null, null, null);
-
-        configureVoiceSearchButton();
-    }
-    
-    @Override
-    public void onDetachedFromWindow() {
-        super.onDetachedFromWindow();
-    }
-
-    /**
-     * If appropriate &amp; available, configure voice search
-     * 
-     * Note:  Because the home screen search widget is always web search, we only check for
-     * getVoiceSearchLaunchWebSearch() modes.  We don't support the alternate form of app-specific
-     * voice search.
-     */
-    private void configureVoiceSearchButton() {
-        // Enable the voice search button if there is an activity that can handle it
-        PackageManager pm = getContext().getPackageManager();
-        ResolveInfo ri = pm.resolveActivity(mVoiceSearchIntent,
-                PackageManager.MATCH_DEFAULT_ONLY);
-        boolean voiceSearchVisible = ri != null;
-
-        // finally, set visible state of voice search button, as appropriate
-        mVoiceButton.setVisibility(voiceSearchVisible ? View.VISIBLE : View.GONE);
-    }
-    
-    /**
-     * Sets the {@link Launcher} that this gadget will call on to display the search dialog. 
-     */
-    public void setLauncher(Launcher launcher) {
-        mLauncher = launcher;
-    }
-        
-    /** 
-     * Moves the view to the top left corner of its parent.
-     */
-    private class ToParentOriginAnimation extends Animation {
-        @Override
-        protected void applyTransformation(float interpolatedTime, Transformation t) {
-            float dx = -getLeft() * interpolatedTime;
-            float dy = -getWidgetTop() * interpolatedTime;
-            t.getMatrix().setTranslate(dx, dy);
-        }
-    }
-
-    /** 
-     * Moves the view from the top left corner of its parent.
-     */
-    private class FromParentOriginAnimation extends Animation {
-        @Override
-        protected void applyTransformation(float interpolatedTime, Transformation t) {
-            float dx = -getLeft() * (1.0f - interpolatedTime);
-            float dy = -getWidgetTop() * (1.0f - interpolatedTime);
-            t.getMatrix().setTranslate(dx, dy);
-        }
-    }
-
-    /**
-     * The widget is centered vertically within it's 4x1 slot. This is accomplished by nesting
-     * the actual widget inside another view. For animation purposes, we care about the top of the
-     * actual widget rather than it's container. This method return the top of the actual widget.
-     */
-    private int getWidgetTop() {
-        return getTop() + getChildAt(0).getTop() + mWidgetTopOffset;
-    }
-}
diff --git a/src/com/android/launcher2/Widget.java b/src/com/android/launcher2/Widget.java
deleted file mode 100644
index 348acee..0000000
--- a/src/com/android/launcher2/Widget.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.launcher2;
-
-import android.content.ContentValues;
-import android.graphics.Bitmap;
-
-/**
- * Represents one instance of a Launcher widget, such as search.
- */
-class Widget extends ItemInfo {
-    int layoutResource;
-
-    static Widget makeSearch() {
-        Widget w = new Widget();
-        w.itemType = LauncherSettings.Favorites.ITEM_TYPE_WIDGET_SEARCH;
-        w.spanX = 4;
-        w.spanY = 1;
-        w.layoutResource = R.layout.widget_search;
-        return w;
-    }
-}
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index 374f0bf..927bd4c 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -23,7 +23,6 @@
 import android.content.res.TypedArray;
 import android.content.pm.PackageManager;
 import android.graphics.Canvas;
-import android.graphics.RectF;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.os.Parcelable;
@@ -103,16 +102,9 @@
     private int mTouchSlop;
     private int mMaximumVelocity;
 
-    final Rect mDrawerBounds = new Rect();
-    final Rect mClipBounds = new Rect();
-    int mDrawerContentHeight;
-    int mDrawerContentWidth;
-
     private Drawable mPreviousIndicator;
     private Drawable mNextIndicator;
 
-    private boolean mFading = true;
-
     /**
      * Used to inflate the Workspace from XML.
      *
@@ -246,27 +238,6 @@
     }
 
     /**
-     * Returns how many screens there are.
-     */
-    int getScreenCount() {
-        return getChildCount();
-    }
-
-    /**
-     * Computes a bounding rectangle for a range of cells
-     *
-     * @param cellX X coordinate of upper left corner expressed as a cell position
-     * @param cellY Y coordinate of upper left corner expressed as a cell position
-     * @param cellHSpan Width in cells
-     * @param cellVSpan Height in cells
-     * @param rect Rectnagle into which to put the results
-     */
-    public void cellToRect(int cellX, int cellY, int cellHSpan, int cellVSpan, RectF rect) {
-        ((CellLayout)getChildAt(mCurrentScreen)).cellToRect(cellX, cellY,
-                cellHSpan, cellVSpan, rect);
-    }
-
-    /**
      * Sets the current screen.
      *
      * @param currentScreen
@@ -361,16 +332,6 @@
         }
     }
 
-    void addWidget(View view, Widget widget) {
-        addInScreen(view, widget.screen, widget.cellX, widget.cellY, widget.spanX,
-                widget.spanY, false);
-    }
-
-    void addWidget(View view, Widget widget, boolean insert) {
-        addInScreen(view, widget.screen, widget.cellX, widget.cellY, widget.spanX,
-                widget.spanY, insert);
-    }
-
     CellLayout.CellInfo findAllVacantCells(boolean[] occupied) {
         CellLayout group = (CellLayout) getChildAt(mCurrentScreen);
         if (group != null) {
@@ -385,56 +346,6 @@
             mVacantCache = null;
         }
     }
-    
-    /**
-     * Returns the coordinate of a vacant cell for the current screen.
-     */
-    boolean getVacantCell(int[] vacant, int spanX, int spanY) {
-        CellLayout group = (CellLayout) getChildAt(mCurrentScreen);
-        if (group != null) {
-            return group.getVacantCell(vacant, spanX, spanY);
-        }
-        return false;
-    }
-
-    /**
-     * Adds the specified child in the current screen. The position and dimension of
-     * the child are defined by x, y, spanX and spanY.
-     *
-     * @param child The child to add in one of the workspace's screens.
-     * @param spanX The number of cells spanned horizontally by the child.
-     * @param spanY The number of cells spanned vertically by the child.
-     */
-    void fitInCurrentScreen(View child, int spanX, int spanY) {
-        fitInScreen(child, mCurrentScreen, spanX, spanY);
-    }
-
-    /**
-     * Adds the specified child in the specified screen. The position and dimension of
-     * the child are defined by x, y, spanX and spanY.
-     *
-     * @param child The child to add in one of the workspace's screens.
-     * @param screen The screen in which to add the child.
-     * @param spanX The number of cells spanned horizontally by the child.
-     * @param spanY The number of cells spanned vertically by the child.
-     */
-    void fitInScreen(View child, int screen, int spanX, int spanY) {
-        if (screen < 0 || screen >= getChildCount()) {
-            throw new IllegalStateException("The screen must be >= 0 and < " + getChildCount());
-        }
-
-        final CellLayout group = (CellLayout) getChildAt(screen);
-        boolean vacant = group.getVacantCell(mTempCell, spanX, spanY);
-        if (vacant) {
-            group.addView(child,
-                    new CellLayout.LayoutParams(mTempCell[0], mTempCell[1], spanX, spanY));
-            child.setHapticFeedbackEnabled(false);
-            child.setOnLongClickListener(mLongClickListener);
-            if (child instanceof DropTarget) {
-                mDragController.addDropTarget((DropTarget)child);
-            }
-        }
-    }
 
     /**
      * Registers the specified listener on each screen contained in this workspace.
@@ -476,60 +387,17 @@
         }
     }
 
-    public void startFading(boolean dest) {
-        mFading = dest;
-        invalidate();
-    }
-
     @Override
     protected void dispatchDraw(Canvas canvas) {
-        /*
-        final boolean allAppsOpaque = mLauncher.isAllAppsOpaque();
-        if (mFading == allAppsOpaque) {
-            invalidate();
-        } else {
-            mFading = !allAppsOpaque;
-        }
-        if (allAppsOpaque) {
-            // If the launcher is up, draw black.
-            canvas.drawARGB(0xff, 0, 0, 0);
-            return;
-        }
-        */
-
         boolean restore = false;
         int restoreCount = 0;
 
-        // For the fade.  If view gets setAlpha(), use that instead.
-        float scale = mScale;
-        if (scale < 0.999f) {
-            int sx = mScrollX;
-
-            int alpha = (scale < 0.5f) ? (int)(255 * 2 * scale) : 255;
-
-            restoreCount = canvas.saveLayerAlpha(sx, 0, sx+getWidth(), getHeight(), alpha,
-                    Canvas.HAS_ALPHA_LAYER_SAVE_FLAG | Canvas.CLIP_TO_LAYER_SAVE_FLAG);
-            restore = true;
-
-            if (scale < 0.999f) {
-                int w = getWidth();
-                w += 2 * mCurrentScreen * w;
-                int dx = w/2;
-                int h = getHeight();
-                int dy = (h/2) - (h/4);
-                canvas.translate(dx, dy);
-                canvas.scale(scale, scale);
-                canvas.translate(-dx, -dy);
-            }
-        }
-
         // ViewGroup.dispatchDraw() supports many features we don't need:
         // clip to padding, layout animation, animation listener, disappearing
         // children, etc. The following implementation attempts to fast-track
         // the drawing dispatch by drawing only what we know needs to be drawn.
 
-        boolean fastDraw = mTouchState != TOUCH_STATE_SCROLLING && mNextScreen == INVALID_SCREEN
-                && scale > 0.999f;
+        boolean fastDraw = mTouchState != TOUCH_STATE_SCROLLING && mNextScreen == INVALID_SCREEN;
         // If we are not scrolling or flinging, draw only the current screen
         if (fastDraw) {
             drawChild(canvas, getChildAt(mCurrentScreen), getDrawingTime());
@@ -554,12 +422,6 @@
         }
     }
 
-    private float mScale = 1.0f;
-    public void setScale(float scale) {
-        mScale = scale;
-        invalidate();
-    }
-
     protected void onAttachedToWindow() {
         super.onAttachedToWindow();
         mDragController.setWindowToken(getWindowToken());
@@ -973,7 +835,9 @@
         final int delta = newX - mScrollX;
         final int duration = screenDelta * 300;
         awakenScrollBars(duration);
+
         // 1ms is close to don't animate
+        if (!mScroller.isFinished()) mScroller.abortAnimation();
         mScroller.startScroll(mScrollX, 0, delta, 0, animate ? duration : 1);
         invalidate();
     }
@@ -982,8 +846,7 @@
         View child = cellInfo.cell;
         
         // Make sure the drag was started by a long press as opposed to a long click.
-        // Note that Search takes focus when clicked rather than entering touch mode
-        if (!child.isInTouchMode() && !(child instanceof Search)) {
+        if (!child.isInTouchMode()) {
             return;
         }
         
@@ -1219,16 +1082,19 @@
 
     public void scrollLeft() {
         clearVacantCache();
-        if (mNextScreen == INVALID_SCREEN && mCurrentScreen > 0 && mScroller.isFinished()) {
-            snapToScreen(mCurrentScreen - 1);
+        if (mScroller.isFinished()) {
+            if (mCurrentScreen > 0) snapToScreen(mCurrentScreen - 1);
+        } else {
+            if (mNextScreen > 0) snapToScreen(mNextScreen - 1);            
         }
     }
 
     public void scrollRight() {
         clearVacantCache();
-        if (mNextScreen == INVALID_SCREEN && mCurrentScreen < getChildCount() -1 &&
-                mScroller.isFinished()) {
-            snapToScreen(mCurrentScreen + 1);
+        if (mScroller.isFinished()) {
+            if (mCurrentScreen < getChildCount() -1) snapToScreen(mCurrentScreen + 1);
+        } else {
+            if (mNextScreen < getChildCount() -1) snapToScreen(mNextScreen + 1);            
         }
     }
 
@@ -1246,29 +1112,6 @@
         return result;
     }
 
-    /**
-     * Find a search widget on the given screen
-     */
-    private Search findSearchWidget(CellLayout screen) {
-        final int count = screen.getChildCount();
-        for (int i = 0; i < count; i++) {
-            View v = screen.getChildAt(i);
-            if (v instanceof Search) {
-                return (Search) v;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Gets the first search widget on the current screen, if there is one.
-     * Returns <code>null</code> otherwise.
-     */
-    public Search findSearchWidgetOnCurrentScreen() {
-        CellLayout currentScreen = (CellLayout)getChildAt(mCurrentScreen);
-        return findSearchWidget(currentScreen);
-    }
-
     public Folder getFolderForTag(Object tag) {
         int screenCount = getChildCount();
         for (int screen = 0; screen < screenCount; screen++) {
@@ -1465,11 +1308,4 @@
             }
         };
     }
-
-    void show() {
-        setVisibility(VISIBLE);
-    }
-
-    void hide() {
-    }
 }
