am 96ef9f68: am bf5350db: fix 2460740 com.android.launcher2: java.lang.NullPointerException at com.android.launcher2.AllAppsView.saveAppsList(AllAppsView.java:1270)

Merge commit '96ef9f68a43604c99cd18537a6c8e9d1c5049c31'

* commit '96ef9f68a43604c99cd18537a6c8e9d1c5049c31':
  fix 2460740 com.android.launcher2: java.lang.NullPointerException at
diff --git a/Android.mk b/Android.mk
index 00a8977..9c2a800 100644
--- a/Android.mk
+++ b/Android.mk
@@ -19,6 +19,8 @@
 
 LOCAL_MODULE_TAGS := optional
 
+LOCAL_STATIC_JAVA_LIBRARIES := android-common
+
 LOCAL_SRC_FILES := $(call all-subdir-java-files)
 
 LOCAL_PACKAGE_NAME := Launcher2
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-land/application_boxed.xml b/res/layout-land/application_boxed.xml
index 7656b58..dc62361 100644
--- a/res/layout-land/application_boxed.xml
+++ b/res/layout-land/application_boxed.xml
@@ -16,7 +16,7 @@
 
 <TextView xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/name"
-    android:layout_width="fill_parent"
+    android:layout_width="match_parent"
     android:layout_height="88dip"
 
     android:paddingLeft="2dip"
diff --git a/res/layout-land/launcher.xml b/res/layout-land/launcher.xml
index 7bc4d42..2688dd0 100644
--- a/res/layout-land/launcher.xml
+++ b/res/layout-land/launcher.xml
@@ -19,13 +19,13 @@
     xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher2"
 
     android:id="@+id/drag_layer"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
 
     <com.android.launcher2.AllAppsView
         android:id="@+id/all_apps_view"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
 
         android:scrollbarStyle="outsideInset"
         android:drawSelectorOnTop="false"
@@ -37,8 +37,8 @@
     <!-- The workspace contains 3 screens of cells -->
     <com.android.launcher2.Workspace
         android:id="@+id/workspace"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
         android:scrollbars="horizontal"
         android:fadeScrollbars="true"
         launcher:defaultScreen="2">
@@ -96,7 +96,7 @@
     <com.android.launcher2.DeleteZone
         android:id="@+id/delete_zone"
         android:layout_width="@dimen/button_bar_height"
-        android:layout_height="fill_parent"
+        android:layout_height="match_parent"
         android:layout_gravity="right|center_vertical"
 
         android:scaleType="center"
diff --git a/res/layout-land/live_folder_grid.xml b/res/layout-land/live_folder_grid.xml
index 572c295..44519d4 100644
--- a/res/layout-land/live_folder_grid.xml
+++ b/res/layout-land/live_folder_grid.xml
@@ -27,12 +27,12 @@
         android:textSize="14sp"
         android:textColor="#404040"
         android:textStyle="bold"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
     	android:layout_height="wrap_content" />
 
     <GridView
         android:id="@+id/folder_content"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
     	android:layout_height="0dip"
     	android:layout_weight="1"
             
diff --git a/res/layout-land/user_folder.xml b/res/layout-land/user_folder.xml
index 645c02f..b05974a 100644
--- a/res/layout-land/user_folder.xml
+++ b/res/layout-land/user_folder.xml
@@ -24,12 +24,12 @@
         android:textSize="14sp"
         android:textColor="#404040"
         android:textStyle="bold"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
     	android:layout_height="wrap_content" />
 
     <GridView
         android:id="@id/folder_content"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
     	android:layout_height="0dip"
     	android:layout_weight="1"
             
diff --git a/res/layout-land/workspace_screen.xml b/res/layout-land/workspace_screen.xml
index 9197650..a58ea07 100644
--- a/res/layout-land/workspace_screen.xml
+++ b/res/layout-land/workspace_screen.xml
@@ -18,8 +18,8 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher2"
 
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
     android:hapticFeedbackEnabled="false"
 
     launcher:cellWidth="@dimen/workspace_cell_width"
diff --git a/res/layout-port/application_boxed.xml b/res/layout-port/application_boxed.xml
index a6991d5..5e64cee 100644
--- a/res/layout-port/application_boxed.xml
+++ b/res/layout-port/application_boxed.xml
@@ -16,7 +16,7 @@
 
 <TextView xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/name"
-    android:layout_width="fill_parent"
+    android:layout_width="match_parent"
     android:layout_height="88dip"
 
     android:paddingLeft="2dip"
diff --git a/res/layout-port/launcher.xml b/res/layout-port/launcher.xml
index 001f3e3..f73e91c 100644
--- a/res/layout-port/launcher.xml
+++ b/res/layout-port/launcher.xml
@@ -19,13 +19,13 @@
     xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher2"
 
     android:id="@+id/drag_layer"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
 
     <com.android.launcher2.AllAppsView
         android:id="@+id/all_apps_view"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
 
         android:scrollbarStyle="outsideInset"
         android:drawSelectorOnTop="false"
@@ -38,8 +38,8 @@
     <!-- The workspace contains 3 screens of cells -->
     <com.android.launcher2.Workspace
         android:id="@+id/workspace"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
         launcher:defaultScreen="2">
 
         <include android:id="@+id/cell1" layout="@layout/workspace_screen" />
diff --git a/res/layout-port/live_folder_grid.xml b/res/layout-port/live_folder_grid.xml
index 51e5e47..745307f 100644
--- a/res/layout-port/live_folder_grid.xml
+++ b/res/layout-port/live_folder_grid.xml
@@ -27,12 +27,12 @@
         android:textSize="14sp"
         android:textColor="#404040"
         android:textStyle="bold"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
     	android:layout_height="wrap_content" />
 
     <GridView
         android:id="@id/folder_content"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
     	android:layout_height="0dip"
     	android:layout_weight="1"
 
diff --git a/res/layout-port/user_folder.xml b/res/layout-port/user_folder.xml
index 6a189dc..7377cde 100644
--- a/res/layout-port/user_folder.xml
+++ b/res/layout-port/user_folder.xml
@@ -24,12 +24,12 @@
         android:textSize="14sp"
         android:textColor="#404040"
         android:textStyle="bold"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
     	android:layout_height="wrap_content" />
 
     <GridView
         android:id="@id/folder_content"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
     	android:layout_height="0dip"
     	android:layout_weight="1"
 
diff --git a/res/layout-port/workspace_screen.xml b/res/layout-port/workspace_screen.xml
index a36d92c..4929c2f 100644
--- a/res/layout-port/workspace_screen.xml
+++ b/res/layout-port/workspace_screen.xml
@@ -18,8 +18,8 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher2"
 
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
     android:hapticFeedbackEnabled="false"
 
     launcher:cellWidth="@dimen/workspace_cell_width"
diff --git a/res/layout/add_list_item.xml b/res/layout/add_list_item.xml
index f276511..62fc4f4 100644
--- a/res/layout/add_list_item.xml
+++ b/res/layout/add_list_item.xml
@@ -15,7 +15,7 @@
 -->
 
 <TextView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
+    android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:minHeight="?android:attr/listPreferredItemHeight"
     android:textAppearance="?android:attr/textAppearanceLargeInverse"
diff --git a/res/layout/application_list.xml b/res/layout/application_list.xml
index 29f7400..b515c9e 100644
--- a/res/layout/application_list.xml
+++ b/res/layout/application_list.xml
@@ -18,7 +18,7 @@
 -->
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
+    android:layout_width="match_parent"
     android:layout_height="?android:attr/listPreferredItemHeight"
 
     android:paddingLeft="10dip"
@@ -34,7 +34,7 @@
     <LinearLayout
         android:layout_width="0dip"
         android:layout_weight="1.0"
-        android:layout_height="fill_parent"
+        android:layout_height="match_parent"
 
         android:paddingLeft="8dip"
         android:paddingRight="8dip"
diff --git a/res/layout/list_checkbox_2lines.xml b/res/layout/list_checkbox_2lines.xml
index ed80c5f..1debcd6 100644
--- a/res/layout/list_checkbox_2lines.xml
+++ b/res/layout/list_checkbox_2lines.xml
@@ -15,7 +15,7 @@
 -->
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
+    android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:minHeight="?android:attr/listPreferredItemHeight"
     android:gravity="center_vertical"
diff --git a/res/layout/live_folder_list.xml b/res/layout/live_folder_list.xml
index cf3d2f1..e5a305f 100644
--- a/res/layout/live_folder_list.xml
+++ b/res/layout/live_folder_list.xml
@@ -27,12 +27,12 @@
         android:textSize="14sp"
         android:textColor="#404040"
         android:textStyle="bold"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
     	android:layout_height="wrap_content" />
 
     <ListView
         android:id="@id/folder_content"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
     	android:layout_height="0dip"
     	android:layout_weight="1"
 
diff --git a/res/layout/pick_item.xml b/res/layout/pick_item.xml
index f276511..62fc4f4 100644
--- a/res/layout/pick_item.xml
+++ b/res/layout/pick_item.xml
@@ -15,7 +15,7 @@
 -->
 
 <TextView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
+    android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:minHeight="?android:attr/listPreferredItemHeight"
     android:textAppearance="?android:attr/textAppearanceLargeInverse"
diff --git a/res/layout/rename_folder.xml b/res/layout/rename_folder.xml
index cbb42b4..75eb504 100644
--- a/res/layout/rename_folder.xml
+++ b/res/layout/rename_folder.xml
@@ -15,7 +15,7 @@
 -->
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="fill_parent"
+    android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:padding="20dip"
     android:orientation="vertical">
@@ -31,7 +31,7 @@
     <EditText
         android:id="@+id/folder_name"
         android:layout_height="wrap_content"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:scrollHorizontally="true"
         android:autoText="false"
         android:capitalize="none"
diff --git a/res/layout/wallpaper_chooser.xml b/res/layout/wallpaper_chooser.xml
index 7267246..92a6596 100644
--- a/res/layout/wallpaper_chooser.xml
+++ b/res/layout/wallpaper_chooser.xml
@@ -20,17 +20,17 @@
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
 
     <ImageView android:id="@+id/wallpaper"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="0dip"
         android:layout_weight="1.0"
         android:scaleType="fitCenter" />
 
     <Gallery android:id="@+id/gallery"
-        android:layout_width="fill_parent"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content" />
         
     <Button android:id="@+id/set"
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..d91aed2 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -30,7 +30,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,7 +37,6 @@
     <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>
@@ -61,6 +59,5 @@
     <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>
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 391ec16..d38bd8d 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -30,7 +30,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,7 +37,6 @@
     <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>
@@ -61,6 +59,5 @@
     <string name="permdesc_read_settings" msgid="8377434937176025492">"Tillader, at et program læser 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>
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 522bd4d..1c846b8 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -30,7 +30,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,7 +37,6 @@
     <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>
@@ -61,6 +59,5 @@
     <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>
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index bb65bf3..1876e8b 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -30,7 +30,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,7 +37,6 @@
     <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>
@@ -61,6 +59,5 @@
     <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>
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index bee06e3..1aa02fa 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -30,7 +30,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,7 +37,6 @@
     <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>
@@ -61,6 +59,5 @@
     <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>
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 7554c1b..1d3e3dd 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -30,7 +30,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,7 +37,6 @@
     <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>
@@ -61,6 +59,5 @@
     <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>
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 0d66612..2b19e26 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -30,7 +30,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,7 +37,6 @@
     <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>
@@ -61,6 +59,5 @@
     <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>
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 422f998..4bdd19d 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -30,7 +30,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,7 +37,6 @@
     <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>
@@ -61,6 +59,5 @@
     <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>
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 2d8cc6b..5db6f9b 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -30,7 +30,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,7 +37,6 @@
     <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>
@@ -61,6 +59,5 @@
     <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>
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 91718b1..f0d917e 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -30,7 +30,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,7 +37,6 @@
     <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>
@@ -61,6 +59,5 @@
     <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>
 </resources>
diff --git a/res/values-land/dimens.xml b/res/values-land/dimens.xml
index 0c23cd0..159cbb4 100644
--- a/res/values-land/dimens.xml
+++ b/res/values-land/dimens.xml
@@ -18,5 +18,4 @@
     <dimen name="workspace_cell_width">106dip</dimen>
     <dimen name="workspace_cell_height">74dip</dimen>
     <dimen name="button_bar_height">62dip</dimen>
-    <dimen name="search_widget_inset">19dip</dimen>
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 2208898..4ba9b73 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -30,7 +30,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,7 +37,6 @@
     <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>
@@ -61,6 +59,5 @@
     <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>
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 3a69066..73964c5 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -30,7 +30,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,7 +37,6 @@
     <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>
@@ -61,6 +59,5 @@
     <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>
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index cc9306b..74bed2a 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -30,7 +30,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,7 +37,6 @@
     <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>
@@ -61,6 +59,5 @@
     <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>
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 895e945..0998818 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -31,7 +31,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,7 +38,6 @@
     <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>
@@ -62,6 +60,5 @@
     <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>
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 003927d..08686c1 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -31,7 +31,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,7 +38,6 @@
     <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>
@@ -62,6 +60,5 @@
     <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>
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 7542fdb..5ce7a7b 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -30,7 +30,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,7 +37,6 @@
     <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>
@@ -61,6 +59,5 @@
     <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>
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index efc9227..6c54a46 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -30,7 +30,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,7 +37,6 @@
     <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>
@@ -61,6 +59,5 @@
     <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>
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 5e823ed..acf0775 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -30,7 +30,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,7 +37,6 @@
     <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>
@@ -61,6 +59,5 @@
     <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>
 </resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 98eb170..e6dd9ca 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -30,7 +30,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,7 +37,6 @@
     <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>
@@ -61,6 +59,5 @@
     <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>
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 8d3d8a0..5e5ae95 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -30,7 +30,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,7 +37,6 @@
     <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>
@@ -61,6 +59,5 @@
     <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>
 </resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index df75136..132a1ce 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -16,6 +16,5 @@
 
 <resources>
     <dimen name="title_texture_width">120px</dimen>
-    <dimen name="search_widget_inset">19dip</dimen>
     <dimen name="button_bar_height">56dip</dimen>
 </resources>
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/res/values/styles.xml b/res/values/styles.xml
index 125a1be..f90810f 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -35,8 +35,8 @@
         <item name="android:shadowRadius">2.0</item>
         <item name="android:textColor">#FFF</item>
         <item name="android:gravity">center_horizontal</item>
-        <item name="android:layout_width">fill_parent</item>
-        <item name="android:layout_height">fill_parent</item>
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">match_parent</item>
         <item name="android:background">@drawable/shortcut_selector</item>
         <item name="android:paddingLeft">5dip</item>
         <item name="android:paddingRight">5dip</item>
diff --git a/src/com/android/launcher2/AllAppsView.java b/src/com/android/launcher2/AllAppsView.java
index f800881..6a6db7d 100644
--- a/src/com/android/launcher2/AllAppsView.java
+++ b/src/com/android/launcher2/AllAppsView.java
@@ -31,6 +31,7 @@
 import android.renderscript.ProgramStore;
 import android.renderscript.ProgramVertex;
 import android.renderscript.RSSurfaceView;
+import android.renderscript.RenderScriptGL;
 import android.renderscript.RenderScript;
 import android.renderscript.Sampler;
 import android.renderscript.Script;
@@ -84,7 +85,7 @@
     private int mMaxFlingVelocity;
 
     private Defines mDefines = new Defines();
-    private RenderScript mRS;
+    private RenderScriptGL mRS;
     private RolloRS mRollo;
     private ArrayList<ApplicationInfo> mAllAppsList;
 
diff --git a/src/com/android/launcher2/CellLayout.java b/src/com/android/launcher2/CellLayout.java
index 9bf9a46..8b141a4 100644
--- a/src/com/android/launcher2/CellLayout.java
+++ b/src/com/android/launcher2/CellLayout.java
@@ -904,7 +904,7 @@
         }
         
         public LayoutParams(int cellX, int cellY, int cellHSpan, int cellVSpan) {
-            super(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
+            super(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
             this.cellX = cellX;
             this.cellY = cellY;
             this.cellHSpan = cellHSpan;
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 924ef74..7f9b0d7 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -16,6 +16,8 @@
 
 package com.android.launcher2;
 
+import com.android.common.Search;
+
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
@@ -42,14 +44,11 @@
 import android.graphics.Canvas;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.ColorDrawable;
-import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Parcelable;
 import android.os.SystemProperties;
-import android.provider.ContactsContract;
 import android.provider.LiveFolders;
-import android.telephony.PhoneNumberUtils;
 import android.text.Selection;
 import android.text.SpannableStringBuilder;
 import android.text.TextUtils;
@@ -116,9 +115,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;
@@ -186,8 +182,6 @@
 
     private SpannableStringBuilder mDefaultKeySsb = null;
 
-    private boolean mIsNewIntent;
-
     private boolean mWorkspaceLoading = true;
 
     private boolean mPaused = true;
@@ -204,7 +198,6 @@
 
     private ImageView mPreviousView;
     private ImageView mNextView;
-    private boolean mUtsTestMode;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -376,7 +369,7 @@
                     completeAddApplication(this, data, mAddItemCellInfo);
                     break;
                 case REQUEST_PICK_SHORTCUT:
-                    processShortcut(data, REQUEST_PICK_APPLICATION, REQUEST_CREATE_SHORTCUT);
+                    processShortcut(data);
                     break;
                 case REQUEST_CREATE_SHORTCUT:
                     completeAddShortcut(data, mAddItemCellInfo);
@@ -413,28 +406,12 @@
         super.onResume();
 
         mPaused = false;
-        mUtsTestMode = SystemProperties.getInt("persist.sys.uts-test-mode", 0) == 1;
 
         if (mRestoring) {
             mWorkspaceLoading = true;
             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
@@ -485,10 +462,6 @@
 
     @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
-        if (mUtsTestMode) {
-            return handleUtsTestModeKeyDown(keyCode, event);
-        }
-
         boolean handled = super.onKeyDown(keyCode, event);
         if (!handled && acceptFilter() && keyCode != KeyEvent.KEYCODE_ENTER) {
             boolean gotKey = TextKeyListener.getInstance().onKeyDown(mWorkspace, mDefaultKeySsb,
@@ -512,52 +485,6 @@
         return handled;
     }
 
-    public boolean handleUtsTestModeKeyDown(int keyCode, KeyEvent event) {
-        Log.d(TAG, "UTS-TEST-MODE");
-        boolean handled = super.onKeyDown(keyCode, event);
-        if (!handled && acceptFilter() && keyCode != KeyEvent.KEYCODE_ENTER) {
-            boolean gotKey = TextKeyListener.getInstance().onKeyDown(mWorkspace, mDefaultKeySsb,
-                    keyCode, event);
-            if (gotKey && mDefaultKeySsb != null && mDefaultKeySsb.length() > 0) {
-                // something usable has been typed - dispatch it now.
-                final String str = mDefaultKeySsb.toString();
-
-                boolean isDialable = true;
-                final int count = str.length();
-                for (int i = 0; i < count; i++) {
-                    if (!PhoneNumberUtils.isReallyDialable(str.charAt(i))) {
-                        isDialable = false;
-                        break;
-                    }
-                }
-                Intent intent;
-                if (isDialable) {
-                    intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", str, null));
-                } else {
-                    intent = new Intent(ContactsContract.Intents.UI.FILTER_CONTACTS_ACTION);
-                    intent.putExtra(ContactsContract.Intents.UI.FILTER_TEXT_EXTRA_KEY, str);
-                }
-
-                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
-                        | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
-
-                try {
-                    startActivity(intent);
-                } catch (android.content.ActivityNotFoundException ex) {
-                    // Oh well... no one knows how to filter/dial. Life goes on.
-                }
-
-                mDefaultKeySsb.clear();
-                mDefaultKeySsb.clearSpans();
-                Selection.setSelection(mDefaultKeySsb, 0);
-
-                return true;
-            }
-        }
-
-        return handled;
-    }
-
     private String getTypedText() {
         return mDefaultKeySsb.toString();
     }
@@ -849,11 +776,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();
@@ -956,26 +878,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();
@@ -983,42 +885,15 @@
         }
         if (appSearchData == null) {
             appSearchData = new Bundle();
-            appSearchData.putString(SearchManager.SOURCE, "launcher-search");
+            appSearchData.putString(Search.SOURCE, "launcher-search");
         }
 
         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()) {
@@ -1118,52 +993,22 @@
     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) {
+    void processShortcut(Intent intent) {
         // Handle case where user selected "Applications"
         String applicationName = getResources().getString(R.string.group_applications);
         String shortcutName = intent.getStringExtra(Intent.EXTRA_SHORTCUT_NAME);
@@ -1174,9 +1019,9 @@
 
             Intent pickIntent = new Intent(Intent.ACTION_PICK_ACTIVITY);
             pickIntent.putExtra(Intent.EXTRA_INTENT, mainIntent);
-            startActivityForResult(pickIntent, requestCodeApplication);
+            startActivityForResult(pickIntent, REQUEST_PICK_APPLICATION);
         } else {
-            startActivityForResult(intent, requestCodeShortcut);
+            startActivityForResult(intent, REQUEST_CREATE_SHORTCUT);
         }
     }
 
@@ -1734,7 +1579,7 @@
         showDialog(DIALOG_CREATE_SHORTCUT);
     }
 
-    private void pickShortcut(int requestCode, int title) {
+    private void pickShortcut() {
         Bundle bundle = new Bundle();
 
         ArrayList<String> shortcutNames = new ArrayList<String>();
@@ -1748,10 +1593,10 @@
 
         Intent pickIntent = new Intent(Intent.ACTION_PICK_ACTIVITY);
         pickIntent.putExtra(Intent.EXTRA_INTENT, new Intent(Intent.ACTION_CREATE_SHORTCUT));
-        pickIntent.putExtra(Intent.EXTRA_TITLE, getText(title));
+        pickIntent.putExtra(Intent.EXTRA_TITLE, getText(R.string.title_select_shortcut));
         pickIntent.putExtras(bundle);
 
-        startActivityForResult(pickIntent, requestCode);
+        startActivityForResult(pickIntent, REQUEST_PICK_SHORTCUT);
     }
 
     private class RenameFolder {
@@ -1956,7 +1801,7 @@
             switch (which) {
                 case AddAdapter.ITEM_SHORTCUT: {
                     // Insert extra item to handle picking application
-                    pickShortcut(REQUEST_PICK_SHORTCUT, R.string.title_select_shortcut);
+                    pickShortcut();
                     break;
                 }
 
@@ -1965,22 +1810,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;
@@ -2121,19 +1950,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;
             }
         }
 
@@ -2254,7 +2070,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 43daa9c..16e5c3b 100644
--- a/src/com/android/launcher2/LauncherModel.java
+++ b/src/com/android/launcher2/LauncherModel.java
@@ -674,7 +674,6 @@
 
                     ShortcutInfo info;
                     String intentDescription;
-                    Widget widgetInfo;
                     LauncherAppWidgetInfo appWidgetInfo;
                     int container;
                     long id;
@@ -803,25 +802,6 @@
                                 }
                                 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 62c19df..24b877b 100644
--- a/src/com/android/launcher2/LauncherProvider.java
+++ b/src/com/android/launcher2/LauncherProvider.java
@@ -16,8 +16,10 @@
 
 package com.android.launcher2;
 
+import android.app.SearchManager;
 import android.appwidget.AppWidgetHost;
 import android.appwidget.AppWidgetManager;
+import android.appwidget.AppWidgetProviderInfo;
 import android.content.ContentProvider;
 import android.content.Context;
 import android.content.ContentValues;
@@ -49,10 +51,11 @@
 import java.io.IOException;
 import java.net.URISyntaxException;
 import java.util.ArrayList;
+import java.util.List;
 
 import org.xmlpull.v1.XmlPullParserException;
 import org.xmlpull.v1.XmlPullParser;
-import com.android.internal.util.XmlUtils;
+import com.android.common.XmlUtils;
 import com.android.launcher2.LauncherSettings.Favorites;
 
 public class LauncherProvider extends ContentProvider {
@@ -386,6 +389,12 @@
                 }
             }
 
+            if (version < 7) {
+                // Version 7 gets rid of the special search widget.
+                convertWidgets(db);
+                version = 7;
+            }
+
             if (version < 8) {
                 // Version 8 (froyo) has the icons all normalized.  This should
                 // already be the case in practice, but we now rely on it and don't
@@ -512,6 +521,7 @@
                         logged = true;
                     }
                 }
+                db.setTransactionSuccessful();
             } catch (SQLException ex) {
                 Log.w(TAG, "Problem while allocating appWidgetIds for existing widgets", ex);
             } finally {
@@ -528,26 +538,21 @@
          * equivalents.
          */
         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());
@@ -555,7 +560,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();
@@ -564,18 +570,35 @@
                             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,
+                                    getSearchWidgetProvider());
+                        }
                     } catch (RuntimeException ex) {
                         Log.e(TAG, "Problem allocating appWidgetId", ex);
                     }
@@ -590,34 +613,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
@@ -710,48 +708,41 @@
             return true;
         }
 
-        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);
+        private ComponentName getSearchWidgetProvider() {
+            SearchManager searchManager =
+                    (SearchManager) mContext.getSystemService(Context.SEARCH_SERVICE);
+            ComponentName searchComponent = searchManager.getGlobalSearchActivity();
+            if (searchComponent == null) return null;
+            return getProviderInPackage(searchComponent.getPackageName());
+        }
 
-            return true;
+        /**
+         * Gets an appwidget provider from the given package. If the package contains more than
+         * one appwidget provider, an arbitrary one is returned.
+         */
+        private ComponentName getProviderInPackage(String packageName) {
+            AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(mContext);
+            List<AppWidgetProviderInfo> providers = appWidgetManager.getInstalledProviders();
+            if (providers == null) return null;
+            final int providerCount = providers.size();
+            for (int i = 0; i < providerCount; i++) {
+                ComponentName provider = providers.get(i).provider;
+                if (provider != null && provider.getPackageName().equals(packageName)) {
+                    return provider;
+                }
+            }
+            return null;
+        }
+
+        private boolean addSearchWidget(SQLiteDatabase db, ContentValues values) {
+            ComponentName cn = getSearchWidgetProvider();
+            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) {
@@ -763,7 +754,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);
 
@@ -771,8 +768,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 f3ffeaf..e64c487 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -29,6 +29,7 @@
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
+import android.os.IBinder;
 import android.os.Parcelable;
 import android.os.Parcel;
 import android.util.AttributeSet;
@@ -256,6 +257,7 @@
         mPreviousIndicator.setLevel(mCurrentScreen);
         mNextIndicator.setLevel(mCurrentScreen);
         scrollTo(mCurrentScreen * getWidth(), 0);
+        updateWallpaperOffset();
         invalidate();
     }
 
@@ -342,16 +344,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) {
@@ -386,8 +378,11 @@
     }
 
     private void updateWallpaperOffset(int scrollRange) {
-        mWallpaperManager.setWallpaperOffsetSteps(1.0f / (getChildCount() - 1), 0 );
-        mWallpaperManager.setWallpaperOffsets(getWindowToken(), mScrollX / (float) scrollRange, 0);
+        IBinder token = getWindowToken();
+        if (token != null) {
+            mWallpaperManager.setWallpaperOffsetSteps(1.0f / (getChildCount() - 1), 0 );
+            mWallpaperManager.setWallpaperOffsets(getWindowToken(), mScrollX/(float)scrollRange, 0);
+        }
     }
     
     @Override
@@ -444,6 +439,7 @@
 
     protected void onAttachedToWindow() {
         super.onAttachedToWindow();
+        computeScroll();
         mDragController.setWindowToken(getWindowToken());
     }
 
@@ -843,7 +839,7 @@
 
         mPreviousIndicator.setLevel(mNextScreen);
         mNextIndicator.setLevel(mNextScreen);
-        
+
         View focusedChild = getFocusedChild();
         if (focusedChild != null && screenDelta != 0 && focusedChild == getChildAt(mCurrentScreen)) {
             focusedChild.clearFocus();
@@ -863,8 +859,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;
         }
         
@@ -1129,29 +1124,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++) {