auto import from //depot/cupcake/@132589
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 272f7c1..e81c4c9 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -70,8 +70,7 @@
             android:launchMode="singleTask"
             android:clearTaskOnLaunch="true"
             android:stateNotNeeded="true"
-            android:theme="@style/Theme"
-            android:windowSoftInputMode="stateUnspecified|adjustPan">
+            android:theme="@style/Theme">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.HOME"/>
diff --git a/res/drawable/texture_brushed_steel.png b/res/drawable/texture_brushed_steel.png
deleted file mode 100644
index 73b3dfe..0000000
--- a/res/drawable/texture_brushed_steel.png
+++ /dev/null
Binary files differ
diff --git a/res/layout-land/launcher.xml b/res/layout-land/launcher.xml
index 2b262c3..e92c8dc 100644
--- a/res/layout-land/launcher.xml
+++ b/res/layout-land/launcher.xml
@@ -66,7 +66,7 @@
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
 
-            launcher:texture="@drawable/texture_brushed_steel"
+            android:background="@color/grid_dark_background"
 
             android:scrollbarStyle="outsideInset"
             android:drawSelectorOnTop="false"
diff --git a/res/layout-port/application_boxed.xml b/res/layout-port/application_boxed.xml
index e71a2e2..63d2254 100644
--- a/res/layout-port/application_boxed.xml
+++ b/res/layout-port/application_boxed.xml
@@ -22,7 +22,7 @@
     android:paddingTop="5dip"
     android:paddingBottom="2dip"
     android:drawablePadding="0dip"
-        
+
     android:textSize="13dip"
     android:maxLines="2"
     android:ellipsize="marquee"
diff --git a/res/layout-port/launcher.xml b/res/layout-port/launcher.xml
index 0c249a3..1ba524b 100644
--- a/res/layout-port/launcher.xml
+++ b/res/layout-port/launcher.xml
@@ -66,7 +66,7 @@
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
 
-            launcher:texture="@drawable/texture_brushed_steel"
+            android:background="@color/grid_dark_background"
 
             android:scrollbarStyle="outsideInset"
             android:drawSelectorOnTop="false"
diff --git a/res/layout/widget_search.xml b/res/layout/widget_search.xml
index 209716d..dcc83a5 100644
--- a/res/layout/widget_search.xml
+++ b/res/layout/widget_search.xml
@@ -26,7 +26,7 @@
         android:layout_height="wrap_content"
         android:src="@drawable/google_logo" />
         
-    <com.android.launcher.SearchAutoCompleteTextView
+    <AutoCompleteTextView
         android:id="@+id/input"
         android:layout_width="0dip"
         android:layout_weight="1"
@@ -36,8 +36,7 @@
         android:singleLine="true"
         android:selectAllOnFocus="true"
         android:completionThreshold="1"
-        android:inputType="textAutoComplete"
-        android:imeOptions="actionSearch"
+        android:inputType="textAutoComplete|textSearch"
         />
         
      <ImageButton android:id="@+id/search_go_btn"
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index dea039f..ad5a305 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -32,6 +32,7 @@
     <string name="group_folder">"Složka"</string>
     <string name="group_live_folders">"Složka Live"</string>
     <string name="group_widgets">"Miniaplikace"</string>
+    <string name="group_gadgets">"Gadget"</string>
     <string name="group_wallpapers">"Tapeta"</string>
     <string name="add_folder">"Složka"</string>
     <string name="add_clock">"Hodiny"</string>
@@ -54,6 +55,5 @@
     <string name="permlab_write_settings">"zápis nastavení a odkazů plochy"</string>
     <string name="permdesc_write_settings">"Povoluje aplikaci změnit nastavení a odkazy plochy."</string>
     <string name="search_hint">"Vyhledávání Google"</string>
-    <!-- no translation found for gadget_error_text (8359351016167075858) -->
-    <skip />
+    <string name="gadget_error_text">"Při načítání gadgetu došlo k problému"</string>
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index c405852..2b144da 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -32,6 +32,7 @@
     <string name="group_folder">"Ordner"</string>
     <string name="group_live_folders">"Live-Ordner"</string>
     <string name="group_widgets">"Widget"</string>
+    <string name="group_gadgets">"Gadget"</string>
     <string name="group_wallpapers">"Hintergrund"</string>
     <string name="add_folder">"Ordner"</string>
     <string name="add_clock">"Uhr"</string>
@@ -54,6 +55,5 @@
     <string name="permlab_write_settings">"Einstellungen und Shortcuts für Startseite schreiben"</string>
     <string name="permdesc_write_settings">"Ermöglicht einer Anwendung, die Einstellungen und Shortcuts auf der Startseite zu ändern."</string>
     <string name="search_hint">"Google-Suche"</string>
-    <!-- no translation found for gadget_error_text (8359351016167075858) -->
-    <skip />
+    <string name="gadget_error_text">"Problem beim Laden von Gadget"</string>
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 20d2605..0cacbda 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -28,10 +28,11 @@
     <string name="menu_item_add_item">"Añadir a pantalla de página principal"</string>
     <string name="group_applications">"Aplicación"</string>
     <string name="group_shortcuts">"Acceso directo"</string>
-    <string name="group_search">"Búsqueda"</string>
+    <string name="group_search">"Buscar"</string>
     <string name="group_folder">"Carpeta"</string>
     <string name="group_live_folders">"Carpeta activa"</string>
     <string name="group_widgets">"Widget"</string>
+    <string name="group_gadgets">"Gadget"</string>
     <string name="group_wallpapers">"Fondo de pantalla"</string>
     <string name="add_folder">"Carpeta"</string>
     <string name="add_clock">"Reloj"</string>
@@ -42,7 +43,7 @@
     <string name="title_select_live_folder">"Seleccionar carpeta activa"</string>
     <string name="menu_add">"Añadir"</string>
     <string name="menu_wallpaper">"Fondo de pantalla"</string>
-    <string name="menu_search">"Buscar con Google"</string>
+    <string name="menu_search">"Búsqueda de Google"</string>
     <string name="menu_notifications">"Notificaciones"</string>
     <string name="menu_settings">"Ajustes"</string>
     <string name="permlab_install_shortcut">"instalar accesos directos"</string>
@@ -54,6 +55,5 @@
     <string name="permlab_write_settings">"escribir información de accesos directos y de configuración de la página principal"</string>
     <string name="permdesc_write_settings">"Permite que una aplicación modifique la configuración y los accesos directos de la página principal."</string>
     <string name="search_hint">"Búsqueda de Google"</string>
-    <!-- no translation found for gadget_error_text (8359351016167075858) -->
-    <skip />
+    <string name="gadget_error_text">"Problema la cargar gadget"</string>
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index c01ef47..c256109 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -17,9 +17,9 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="application_name">"Accueil"</string>
     <string name="folder_name">"Dossier"</string>
-    <string name="chooser_wallpaper">"Sélectionner à partir de..."</string>
-    <string name="wallpaper_instructions">"Sélectionner"</string>
-    <string name="pick_wallpaper">"Galerie"</string>
+    <string name="chooser_wallpaper">"Sélectionner l\'arrière-plan à partir de"</string>
+    <string name="wallpaper_instructions">"Configurer l\'arrière-plan"</string>
+    <string name="pick_wallpaper">"Galerie des arrière-plans"</string>
     <string name="activity_not_found">"L\'application n\'est pas installée sur votre téléphone."</string>
     <string name="rename_folder_label">"Nom du dossier"</string>
     <string name="rename_folder_title">"Renommer le dossier"</string>
@@ -30,16 +30,17 @@
     <string name="group_shortcuts">"Raccourci"</string>
     <string name="group_search">"Recherche"</string>
     <string name="group_folder">"Dossier"</string>
-    <string name="group_live_folders">"Dossier actif"</string>
+    <string name="group_live_folders">"Dossier live"</string>
     <string name="group_widgets">"Widget"</string>
+    <string name="group_gadgets">"Gadgets"</string>
     <string name="group_wallpapers">"Arrière-plan"</string>
     <string name="add_folder">"Dossier"</string>
     <string name="add_clock">"Horloge"</string>
     <string name="add_photo_frame">"Cadre d\'image"</string>
     <string name="add_search">"Rechercher"</string>
-    <string name="out_of_space">"Plus d\'espace libre sur l\'écran d\'accueil."</string>
+    <string name="out_of_space">"Plus d\'espace libre sur l\'écran Accueil."</string>
     <string name="title_select_shortcut">"Sélectionner un raccourci"</string>
-    <string name="title_select_live_folder">"Sélectionner dossier actif"</string>
+    <string name="title_select_live_folder">"Sélectionner Live Folder"</string>
     <string name="menu_add">"Ajouter"</string>
     <string name="menu_wallpaper">"Arrière-plan"</string>
     <string name="menu_search">"Rechercher"</string>
@@ -49,11 +50,10 @@
     <string name="permdesc_install_shortcut">"Permet à une application d\'ajouter des raccourcis sans l\'intervention de l\'utilisateur."</string>
     <string name="permlab_uninstall_shortcut">"désinstaller les raccourcis"</string>
     <string name="permdesc_uninstall_shortcut">"Permet à une application de supprimer les raccourcis sans l\'intervention de l\'utilisateur."</string>
-    <string name="permlab_read_settings">"Lire les paramètres et les raccourcis de la page d\'accueil"</string>
+    <string name="permlab_read_settings">"lire les paramètres et les raccourcis de la page d\'accueil"</string>
     <string name="permdesc_read_settings">"Permet à une application de lire les paramètres et raccourcis de la page d\'accueil."</string>
-    <string name="permlab_write_settings">"Enregistrer les paramètres de la page d\'accueil et des raccourcis"</string>
+    <string name="permlab_write_settings">"écrire les paramètres de la page d\'accueil et des raccourcis"</string>
     <string name="permdesc_write_settings">"Permet à une application de modifier les paramètres et les raccourcis de la page d\'accueil."</string>
     <string name="search_hint">"Recherche Google"</string>
-    <!-- no translation found for gadget_error_text (8359351016167075858) -->
-    <skip />
+    <string name="gadget_error_text">"Problème lors du chargement du gadget"</string>
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 47c6f9f..a6895f9 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -27,11 +27,12 @@
     <string name="cancel_action">"Annulla"</string>
     <string name="menu_item_add_item">"Aggiungi a schermata Home"</string>
     <string name="group_applications">"Applicazione"</string>
-    <string name="group_shortcuts">"Scorciatoia"</string>
-    <string name="group_search">"Ricerca"</string>
+    <string name="group_shortcuts">"Collegamento"</string>
+    <string name="group_search">"Cerca"</string>
     <string name="group_folder">"Cartella"</string>
     <string name="group_live_folders">"Cartella dinamica"</string>
     <string name="group_widgets">"Widget"</string>
+    <string name="group_gadgets">"Gadget"</string>
     <string name="group_wallpapers">"Sfondo"</string>
     <string name="add_folder">"Cartella"</string>
     <string name="add_clock">"Orologio"</string>
@@ -45,15 +46,14 @@
     <string name="menu_search">"Cerca"</string>
     <string name="menu_notifications">"Notifiche"</string>
     <string name="menu_settings">"Impostazioni"</string>
-    <string name="permlab_install_shortcut">"aggiungere scorciatorie"</string>
-    <string name="permdesc_install_shortcut">"Consente a un\'applicazione di aggiungere scorciatoie automaticamente."</string>
-    <string name="permlab_uninstall_shortcut">"eliminare scorciatoie"</string>
-    <string name="permdesc_uninstall_shortcut">"Consente a un\'applicazione di rimuovere scorciatoie automaticamente."</string>
-    <string name="permlab_read_settings">"leggere impostazioni e scorciatoie in Home"</string>
-    <string name="permdesc_read_settings">"Consente a un\'applicazione di leggere le impostazioni e le scorciatoie in Home."</string>
-    <string name="permlab_write_settings">"creare impostazioni e scorciatoie in Home"</string>
-    <string name="permdesc_write_settings">"Consente a un\'applicazione di modificare le impostazioni e le scorciatoie in Home."</string>
+    <string name="permlab_install_shortcut">"aggiungere collegamenti"</string>
+    <string name="permdesc_install_shortcut">"Consente a un\'applicazione di aggiungere collegamenti automaticamente."</string>
+    <string name="permlab_uninstall_shortcut">"eliminare collegamenti"</string>
+    <string name="permdesc_uninstall_shortcut">"Consente a un\'applicazione di rimuovere collegamenti automaticamente."</string>
+    <string name="permlab_read_settings">"leggere impostazioni e collegamenti in Home"</string>
+    <string name="permdesc_read_settings">"Consente a un\'applicazione di leggere le impostazioni e i collegamenti in Home."</string>
+    <string name="permlab_write_settings">"creare impostazioni e collegamenti in Home"</string>
+    <string name="permdesc_write_settings">"Consente a un\'applicazione di modificare le impostazioni e i collegamenti in Home."</string>
     <string name="search_hint">"Ricerca Google"</string>
-    <!-- no translation found for gadget_error_text (8359351016167075858) -->
-    <skip />
+    <string name="gadget_error_text">"Errore durante caricamento del gadget"</string>
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index cf71c65..4c84882 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -32,6 +32,7 @@
     <string name="group_folder">"フォルダ"</string>
     <string name="group_live_folders">"ライブフォルダ"</string>
     <string name="group_widgets">"ウィジェット"</string>
+    <string name="group_gadgets">"ガジェット"</string>
     <string name="group_wallpapers">"壁紙"</string>
     <string name="add_folder">"フォルダ"</string>
     <string name="add_clock">"時計"</string>
@@ -54,6 +55,5 @@
     <string name="permlab_write_settings">"ホームの設定とショートカットの書き込み"</string>
     <string name="permdesc_write_settings">"ホームの設定とショートカットの変更をアプリケーションに許可します。"</string>
     <string name="search_hint">"Google検索"</string>
-    <!-- no translation found for gadget_error_text (8359351016167075858) -->
-    <skip />
+    <string name="gadget_error_text">"ガジェットをロードできません"</string>
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 75ad6d8..65f2079 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -32,6 +32,7 @@
     <string name="group_folder">"폴더"</string>
     <string name="group_live_folders">"라이브 폴더"</string>
     <string name="group_widgets">"위젯"</string>
+    <string name="group_gadgets">"가젯"</string>
     <string name="group_wallpapers">"배경화면"</string>
     <string name="add_folder">"폴더"</string>
     <string name="add_clock">"시계"</string>
@@ -54,6 +55,5 @@
     <string name="permlab_write_settings">"홈 설정 및 바로가기 쓰기"</string>
     <string name="permdesc_write_settings">"응용프로그램이 홈에 있는 설정 및 바로가기를 변경할 수 있습니다."</string>
     <string name="search_hint">"Google 검색"</string>
-    <!-- no translation found for gadget_error_text (8359351016167075858) -->
-    <skip />
+    <string name="gadget_error_text">"가젯 로드 중 문제 발생"</string>
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index b14a5da..c34acf3 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -32,6 +32,7 @@
     <string name="group_folder">"Mappe"</string>
     <string name="group_live_folders">"Aktiv mappe"</string>
     <string name="group_widgets">"Skrivebordselement"</string>
+    <string name="group_gadgets">"Gadget"</string>
     <string name="group_wallpapers">"Bakgrunnsbilde"</string>
     <string name="add_folder">"Mappe"</string>
     <string name="add_clock">"Klokke"</string>
@@ -54,6 +55,5 @@
     <string name="permlab_write_settings">"skrive skrivebordsinnstillinger og -snarveier"</string>
     <string name="permdesc_write_settings">"Lar applikasjonen endre innstillinger og snarveier på skrivebordet."</string>
     <string name="search_hint">"Google-søk"</string>
-    <!-- no translation found for gadget_error_text (8359351016167075858) -->
-    <skip />
+    <string name="gadget_error_text">"Problem under lasting av gadget"</string>
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index e4959c0..301d274 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -32,6 +32,7 @@
     <string name="group_folder">"Map"</string>
     <string name="group_live_folders">"Live map"</string>
     <string name="group_widgets">"Widget"</string>
+    <string name="group_gadgets">"Gadget"</string>
     <string name="group_wallpapers">"Achtergrond"</string>
     <string name="add_folder">"Map"</string>
     <string name="add_clock">"Klok"</string>
@@ -53,7 +54,6 @@
     <string name="permdesc_read_settings">"Hiermee kan een toepassing de instellingen en snelkoppelingen op de startpagina lezen."</string>
     <string name="permlab_write_settings">"instellingen en snelkoppelingen voor de startpagina schrijven"</string>
     <string name="permdesc_write_settings">"Hiermee kan een toepassing de instellingen en snelkoppelingen op de startpagina wijzigen."</string>
-    <string name="search_hint">"Google Zoeken"</string>
-    <!-- no translation found for gadget_error_text (8359351016167075858) -->
-    <skip />
+    <string name="search_hint">"Zoeken met Google"</string>
+    <string name="gadget_error_text">"Probleem bij het laden van gadget"</string>
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 99718cb..adb5785 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -28,15 +28,16 @@
     <string name="menu_item_add_item">"Dodaj do strony głównej"</string>
     <string name="group_applications">"Aplikacja"</string>
     <string name="group_shortcuts">"Skrót"</string>
-    <string name="group_search">"Wyszukiwarka"</string>
+    <string name="group_search">"Szukaj"</string>
     <string name="group_folder">"Folder"</string>
-    <string name="group_live_folders">"Folder aktywny"</string>
+    <string name="group_live_folders">"Folder Live"</string>
     <string name="group_widgets">"Widget"</string>
+    <string name="group_gadgets">"Gadżet"</string>
     <string name="group_wallpapers">"Tapeta"</string>
     <string name="add_folder">"Folder"</string>
     <string name="add_clock">"Zegar"</string>
     <string name="add_photo_frame">"Ramka obrazu"</string>
-    <string name="add_search">"Wyszukiwarka"</string>
+    <string name="add_search">"Szukaj"</string>
     <string name="out_of_space">"Brak miejsca na tej stronie głównej"</string>
     <string name="title_select_shortcut">"Wybierz skrót"</string>
     <string name="title_select_live_folder">"Wybierz folder aktywny"</string>
@@ -54,6 +55,5 @@
     <string name="permlab_write_settings">"zapisywanie ustawień i skrótów strony głównej"</string>
     <string name="permdesc_write_settings">"Umożliwia aplikacji zmianę ustawień i skrótów strony głównej."</string>
     <string name="search_hint">"Szukaj w Google"</string>
-    <!-- no translation found for gadget_error_text (8359351016167075858) -->
-    <skip />
+    <string name="gadget_error_text">"Wystąpił problem podczas ładowania gadżetu"</string>
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index ab6120e..d2ac07d 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -32,6 +32,7 @@
     <string name="group_folder">"Папка"</string>
     <string name="group_live_folders">"Динамическая папка"</string>
     <string name="group_widgets">"Виджет"</string>
+    <string name="group_gadgets">"Гаджет"</string>
     <string name="group_wallpapers">"Фоновый рисунок"</string>
     <string name="add_folder">"Папка"</string>
     <string name="add_clock">"Часы"</string>
@@ -54,6 +55,5 @@
     <string name="permlab_write_settings">"записывать ярлыки и настройки главного экрана"</string>
     <string name="permdesc_write_settings">"Позволяет приложению изменять настройки и ярлыки на главном экране."</string>
     <string name="search_hint">"Поиск Google"</string>
-    <!-- no translation found for gadget_error_text (8359351016167075858) -->
-    <skip />
+    <string name="gadget_error_text">"Проблема загрузки гаджета"</string>
 </resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index f5d929d..8ea7b3f 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -32,6 +32,7 @@
     <string name="group_folder">"文件夹"</string>
     <string name="group_live_folders">"活动的文件夹"</string>
     <string name="group_widgets">"小工具"</string>
+    <string name="group_gadgets">"小工具"</string>
     <string name="group_wallpapers">"壁纸"</string>
     <string name="add_folder">"文件夹"</string>
     <string name="add_clock">"时钟"</string>
@@ -54,6 +55,5 @@
     <string name="permlab_write_settings">"写入“主页”设置和快捷键"</string>
     <string name="permdesc_write_settings">"允许应用程序更改“主页”中的设置和快捷键。"</string>
     <string name="search_hint">"Google 搜索"</string>
-    <!-- no translation found for gadget_error_text (8359351016167075858) -->
-    <skip />
+    <string name="gadget_error_text">"载入小工具时出现问题"</string>
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 326f2a2..b6559ff 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -32,6 +32,7 @@
     <string name="group_folder">"資料夾"</string>
     <string name="group_live_folders">"使用中的資料夾"</string>
     <string name="group_widgets">"Widget"</string>
+    <string name="group_gadgets">"小工具"</string>
     <string name="group_wallpapers">"桌布"</string>
     <string name="add_folder">"資料夾"</string>
     <string name="add_clock">"時鐘"</string>
@@ -54,6 +55,5 @@
     <string name="permlab_write_settings">"寫入首頁設定和捷徑"</string>
     <string name="permdesc_write_settings">"允許應用程式變更首頁中的設定和捷徑。"</string>
     <string name="search_hint">"Google 搜尋"</string>
-    <!-- no translation found for gadget_error_text (8359351016167075858) -->
-    <skip />
+    <string name="gadget_error_text">"載入小工具時發生問題"</string>
 </resources>
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index ab545aa..87f5b78 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -69,11 +69,4 @@
         <attr name="direction" />
     </declare-styleable>
 
-    <!-- AllAppsGridView specific attributes. These attributes are used to customize
-         the list of all apps in XML files. -->
-    <declare-styleable name="AllAppsGridView">
-        <!-- The background texture. -->
-        <attr name="texture" format="reference"  />
-    </declare-styleable>
-
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index a7945cb..ff41798 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -58,8 +58,10 @@
     <string name="group_folder">Folder</string>
     <!-- Options in "Add to Home" dialog box; Title of the group containing the list of all live folders -->
     <string name="group_live_folders">Live folder</string>
-    <!-- Options in "Add to Home" dialog box; Title of the group containing the list of all widgets/gadgets -->
+    <!-- Options in "Add to Home" dialog box; Title of the group containing the list of all widgets -->
     <string name="group_widgets">Widget</string>
+    <!-- Options in "Add to Home" dialog box; Title of the group containing the list of all gadgets -->
+    <string name="group_gadgets">Gadget</string>
     <!-- Options in "Add to Home" dialog box; Title of the group containing the list of apps that can set the wallpaper-->
     <string name="group_wallpapers">Wallpaper</string>
     <!-- Options in "Add to Home" dialog box; Name of the Folder widget-->
@@ -113,6 +115,6 @@
     <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>
+    <string name="gadget_error_text">Problem loading gadget</string>
 
 </resources>
diff --git a/src/com/android/launcher/AddAdapter.java b/src/com/android/launcher/AddAdapter.java
index 18b36d5..1410708 100644
--- a/src/com/android/launcher/AddAdapter.java
+++ b/src/com/android/launcher/AddAdapter.java
@@ -82,7 +82,7 @@
         mItems.add(new ListItem(res, R.string.group_search,
                 R.drawable.ic_search_gadget, ITEM_SEARCH));
         
-        mItems.add(new ListItem(res, R.string.group_widgets,
+        mItems.add(new ListItem(res, R.string.group_gadgets,
                 R.drawable.ic_launcher_gadget, ITEM_GADGET));
         
         mItems.add(new ListItem(res, R.string.group_live_folders,
diff --git a/src/com/android/launcher/AllAppsGridView.java b/src/com/android/launcher/AllAppsGridView.java
index b8f7902..a898c1a 100644
--- a/src/com/android/launcher/AllAppsGridView.java
+++ b/src/com/android/launcher/AllAppsGridView.java
@@ -19,46 +19,25 @@
 import android.widget.GridView;
 import android.widget.AdapterView;
 import android.content.Context;
-import android.content.res.TypedArray;
 import android.util.AttributeSet;
 import android.view.View;
-import android.graphics.BitmapFactory;
-import android.graphics.Bitmap;
-import android.graphics.Paint;
-import android.graphics.Canvas;
 
 public class AllAppsGridView extends GridView implements AdapterView.OnItemClickListener,
         AdapterView.OnItemLongClickListener, DragSource {
 
     private DragController mDragger;
     private Launcher mLauncher;
-    private Bitmap mTexture;
-    private Paint mPaint;
-    private int mTextureWidth;
-    private int mTextureHeight;
 
     public AllAppsGridView(Context context) {
         super(context);
     }
 
     public AllAppsGridView(Context context, AttributeSet attrs) {
-        this(context, attrs, com.android.internal.R.attr.gridViewStyle);
+        super(context, attrs);
     }
 
     public AllAppsGridView(Context context, AttributeSet attrs, int defStyle) {
         super(context, attrs, defStyle);
-
-        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.AllAppsGridView, defStyle, 0);
-        final int textureId = a.getResourceId(R.styleable.AllAppsGridView_texture, 0);
-        if (textureId != 0) {
-            mTexture = BitmapFactory.decodeResource(getResources(), textureId);
-            mTextureWidth = mTexture.getWidth();
-            mTextureHeight = mTexture.getHeight();
-
-            mPaint = new Paint();
-            mPaint.setDither(false);
-        }
-        a.recycle();
     }
 
     @Override
@@ -67,32 +46,6 @@
         setOnItemLongClickListener(this);
     }
 
-    @Override
-    public void draw(Canvas canvas) {
-        final Bitmap texture = mTexture;
-        final Paint paint = mPaint;
-
-        final int width = getWidth();
-        final int height = getHeight();
-
-        final int textureWidth = mTextureWidth;
-        final int textureHeight = mTextureHeight;
-
-        int x = 0;
-        int y;
-
-        while (x < width) {
-            y = 0;
-            while (y < height) {
-                canvas.drawBitmap(texture, x, y, paint);
-                y += textureHeight;
-            }
-            x += textureWidth;
-        }
-
-        super.draw(canvas);
-    }
-
     public void onItemClick(AdapterView parent, View v, int position, long id) {
         ApplicationInfo app = (ApplicationInfo) parent.getItemAtPosition(position);
         mLauncher.startActivitySafely(app.intent);
diff --git a/src/com/android/launcher/DeleteZone.java b/src/com/android/launcher/DeleteZone.java
index f31a206..6f67884 100644
--- a/src/com/android/launcher/DeleteZone.java
+++ b/src/com/android/launcher/DeleteZone.java
@@ -85,11 +85,7 @@
 
         final LauncherModel model = Launcher.getModel();
         if (item.container == LauncherSettings.Favorites.CONTAINER_DESKTOP) {
-            if (item instanceof LauncherGadgetInfo) {
-                model.removeDesktopGadget((LauncherGadgetInfo) item);
-            } else {
-                model.removeDesktopItem(item);
-            }
+            model.removeDesktopItem(item);
         } else {
             if (source instanceof UserFolder) {
                 final UserFolder userFolder = (UserFolder) source;
diff --git a/src/com/android/launcher/DragLayer.java b/src/com/android/launcher/DragLayer.java
index b542de6..aa6615a 100644
--- a/src/com/android/launcher/DragLayer.java
+++ b/src/com/android/launcher/DragLayer.java
@@ -32,7 +32,6 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.KeyEvent;
-import android.view.inputmethod.InputMethodManager;
 import android.widget.FrameLayout;
 
 /**
@@ -128,8 +127,6 @@
     private int mAnimationType;
     private int mAnimationState = ANIMATION_STATE_DONE;
 
-    private InputMethodManager mInputMethodManager;
-
     /**
      * Used to create a new DragLayer from XML.
      *
@@ -147,14 +144,7 @@
         if (PROFILE_DRAWING_DURING_DRAG) {
             android.os.Debug.startMethodTracing("Launcher");
         }
-
-        // Hide soft keyboard, if visible
-        if (mInputMethodManager == null) {
-            mInputMethodManager = (InputMethodManager)
-                getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
-        }
-        mInputMethodManager.hideSoftInputFromWindow(getWindowToken(), 0);
-
+        
         if (mListener != null) {
             mListener.onDragStart(v, source, dragInfo, dragAction);
         }
diff --git a/src/com/android/launcher/Launcher.java b/src/com/android/launcher/Launcher.java
index e88e55e..58fcd5a 100644
--- a/src/com/android/launcher/Launcher.java
+++ b/src/com/android/launcher/Launcher.java
@@ -40,7 +40,6 @@
 import android.gadget.GadgetProviderInfo;
 import android.gadget.GadgetManager;
 import android.graphics.Bitmap;
-import android.graphics.Rect;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.TransitionDrawable;
@@ -87,7 +86,6 @@
  */
 public final class Launcher extends Activity implements View.OnClickListener, OnLongClickListener {
     static final String LOG_TAG = "Launcher";
-    static final boolean LOGD = false;
 
     private static final boolean PROFILE_STARTUP = false;
     private static final boolean DEBUG_USER_INTERFACE = false;
@@ -171,7 +169,7 @@
     private GadgetManager mGadgetManager;
     private LauncherGadgetHost mGadgetHost;
     
-    static final int GADGET_HOST_ID = 1024;
+    private static final int GADGET_HOST_ID = 1024;
     
     private CellLayout.CellInfo mAddItemCellInfo;
     private CellLayout.CellInfo mMenuAddInfo;
@@ -193,8 +191,6 @@
     private boolean mWaitingForResult;
     private boolean mLocaleChanged;
 
-    private Bundle mSavedInstanceState;
-
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -205,6 +201,8 @@
         mGadgetHost = new LauncherGadgetHost(this, GADGET_HOST_ID);
         mGadgetHost.startListening();
         
+        // TODO: figure out if this is first launch and correctly clear GadgetHost database
+
         if (PROFILE_STARTUP) {
             android.os.Debug.startMethodTracing("/sdcard/launcher");
         }
@@ -357,11 +355,15 @@
         }
         return handled;
     }
-
     private boolean acceptFilter() {
+        final Configuration configuration = getResources().getConfiguration();
+        final boolean keyboardShowing = configuration.keyboardHidden !=
+                Configuration.KEYBOARDHIDDEN_YES;
+        final boolean hasKeyboard = configuration.keyboard != Configuration.KEYBOARD_NOKEYS;
         final InputMethodManager inputManager = (InputMethodManager)
                 getSystemService(Context.INPUT_METHOD_SERVICE);
-        return !inputManager.isFullscreenMode();
+        return (hasKeyboard && keyboardShowing) ||
+                (!hasKeyboard && !inputManager.isFullscreenMode());
     }
 
     @Override
@@ -631,7 +633,7 @@
                 mWorkspace.getCurrentScreen(), xy[0], xy[1], false);
 
         if (!mRestoring) {
-            sModel.addDesktopGadget(launcherInfo);
+            sModel.addDesktopItem(launcherInfo);
             
             // Perform actual inflation because we're live
             launcherInfo.hostView = mGadgetHost.createView(this, gadgetId, gadgetInfo);
@@ -642,7 +644,7 @@
             mWorkspace.addInCurrentScreen(launcherInfo.hostView, xy[0], xy[1],
                     launcherInfo.spanX, launcherInfo.spanY, insertAtFirst);
         } else if (sModel.isDesktopLoaded()) {
-            sModel.addDesktopGadget(launcherInfo);
+            sModel.addDesktopItem(launcherInfo);
         }
     }
     
@@ -744,12 +746,6 @@
     }
 
     @Override
-    protected void onRestoreInstanceState(Bundle savedInstanceState) {
-        // Do not call super here
-        mSavedInstanceState = savedInstanceState;
-    }
-
-    @Override
     protected void onSaveInstanceState(Bundle outState) {
         outState.putInt(RUNTIME_STATE_CURRENT_SCREEN, mWorkspace.getCurrentScreen());
 
@@ -797,11 +793,7 @@
 
         super.onDestroy();
         
-        try {
-            mGadgetHost.stopListening();
-        } catch (NullPointerException ex) {
-            Log.w(LOG_TAG, "problem while stopping GadgetHost during Launcher destruction", ex);
-        }
+        mGadgetHost.stopListening();
 
         TextKeyListener.getInstance().release();
 
@@ -1164,8 +1156,8 @@
     void onDesktopItemsLoaded() {
         if (mDestroyed) return;
 
-        mAllAppsGrid.setAdapter(Launcher.getModel().getApplicationsAdapter());
         bindDesktopItems();
+        mAllAppsGrid.setAdapter(Launcher.getModel().getApplicationsAdapter());
     }
 
     /**
@@ -1173,8 +1165,7 @@
      */
     private void bindDesktopItems() {
         final ArrayList<ItemInfo> shortcuts = sModel.getDesktopItems();
-        final ArrayList<LauncherGadgetInfo> gadgets = sModel.getDesktopGadgets();
-        if (shortcuts == null || gadgets == null) {
+        if (shortcuts == null) {
             return;
         }
 
@@ -1196,17 +1187,19 @@
             });
         }
 
-        final DesktopBinder binder = new DesktopBinder(this, shortcuts, gadgets);
-        binder.startBindingItems();
+        count = shortcuts.size();
+        
+        final DesktopItemsBinder binder = new DesktopItemsBinder(this, shortcuts);
+        binder.obtainMessage(DesktopItemsBinder.MESSAGE_BIND_ITEMS, 0, count).sendToTarget();
     }
 
-    private void bindItems(Launcher.DesktopBinder binder,
+    private void bindItems(Launcher.DesktopItemsBinder binder,
             ArrayList<ItemInfo> shortcuts, int start, int count) {
 
         final Workspace workspace = mWorkspace;
         final boolean desktopLocked = mDesktopLocked;
 
-        final int end = Math.min(start + DesktopBinder.ITEMS_COUNT, count);
+        final int end = Math.min(start + DesktopItemsBinder.ITEMS_COUNT, count);
         int i = start;
 
         for ( ; i < end; i++) {
@@ -1233,6 +1226,21 @@
                     workspace.addInScreen(newLiveFolder, item.screen, item.cellX, item.cellY, 1, 1,
                             !desktopLocked);
                     break;
+                case LauncherSettings.Favorites.ITEM_TYPE_GADGET:
+                    final LauncherGadgetInfo launcherInfo = (LauncherGadgetInfo) item;
+                    
+                    final int gadgetId = launcherInfo.gadgetId;
+                    GadgetProviderInfo gadgetInfo = mGadgetManager.getGadgetInfo(gadgetId);
+                    launcherInfo.hostView = mGadgetHost.createView(this, gadgetId, gadgetInfo);
+
+                    Log.d(LOG_TAG, "about to setGadget for id="+gadgetId+", info="+gadgetInfo);
+                    launcherInfo.hostView.setGadget(gadgetId, gadgetInfo);
+                    launcherInfo.hostView.setTag(launcherInfo);
+                    
+                    workspace.addInScreen(launcherInfo.hostView, item.screen, item.cellX,
+                            item.cellY, item.spanX, item.spanY, !desktopLocked);
+
+                    break;
                 case LauncherSettings.Favorites.ITEM_TYPE_WIDGET_SEARCH:
                     final int screen = workspace.getCurrentScreen();
                     final View view = mInflater.inflate(R.layout.widget_search,
@@ -1250,17 +1258,14 @@
 
         if (end >= count) {
             finishBindDesktopItems();
-            binder.startBindingGadgets();
         } else {
-            binder.obtainMessage(DesktopBinder.MESSAGE_BIND_ITEMS, i, count).sendToTarget();
+            binder.obtainMessage(DesktopItemsBinder.MESSAGE_BIND_ITEMS, i, count).sendToTarget();
         }
     }
 
     private void finishBindDesktopItems() {
         if (mSavedState != null) {
-            if (!mWorkspace.hasFocus()) {
-                mWorkspace.getChildAt(mWorkspace.getCurrentScreen()).requestFocus();
-            }
+            mWorkspace.getChildAt(mWorkspace.getCurrentScreen()).requestFocus();
 
             final long[] userFolders = mSavedState.getLongArray(RUNTIME_STATE_USER_FOLDERS);
             if (userFolders != null) {
@@ -1273,67 +1278,24 @@
                 final Folder openFolder = mWorkspace.getOpenFolder();
                 if (openFolder != null) {
                     openFolder.requestFocus();
+                } else {
+                    mWorkspace.getChildAt(mWorkspace.getCurrentScreen()).requestFocus();
                 }
             }
 
             final boolean allApps = mSavedState.getBoolean(RUNTIME_STATE_ALL_APPS_FOLDER, false);
             if (allApps) {
                 mDrawer.open();
+                mDrawer.requestFocus();
             }
 
             mSavedState = null;
         }
 
-        if (mSavedInstanceState != null) {
-            super.onRestoreInstanceState(mSavedInstanceState);
-            mSavedInstanceState = null;
-        }
-
-        if (mDrawer.isOpened() && !mDrawer.hasFocus()) {
-            mDrawer.requestFocus();
-        }
-
         mDesktopLocked = false;
         mDrawer.unlock();
     }
 
-    private void bindGadgets(Launcher.DesktopBinder binder,
-            ArrayList<LauncherGadgetInfo> gadgets, int start, int count) {
-
-        final Workspace workspace = mWorkspace;
-        final boolean desktopLocked = mDesktopLocked;
-
-        final int end = Math.min(start + DesktopBinder.GADGETS_COUNT, count);
-        int i = start;
-
-        for ( ; i < end; i++) {
-            final LauncherGadgetInfo item = gadgets.get(i);
-                    
-            final int gadgetId = item.gadgetId;
-            final GadgetProviderInfo gadgetInfo = mGadgetManager.getGadgetInfo(gadgetId);
-            item.hostView = mGadgetHost.createView(this, gadgetId, gadgetInfo);
-            
-            if (LOGD) Log.d(LOG_TAG, String.format("about to setGadget for id=%d, info=%s", gadgetId, gadgetInfo));
-            
-            item.hostView.setGadget(gadgetId, gadgetInfo);
-            item.hostView.setTag(item);
-            
-            workspace.addInScreen(item.hostView, item.screen, item.cellX,
-                    item.cellY, item.spanX, item.spanY, !desktopLocked);
-        }
-
-        workspace.requestLayout();
-
-        if (end >= count) {
-            finishBindDesktopGadgets();
-        } else {
-            binder.obtainMessage(DesktopBinder.MESSAGE_BIND_GADGETS, i, count).sendToTarget();
-        }
-    }
-    
-    private void finishBindDesktopGadgets() {
-    }
-    
     DragController getDragController() {
         return mDragLayer;
     }
@@ -1457,7 +1419,7 @@
 
         // This happens when long clicking an item with the dpad/trackball
         if (cellInfo == null) {
-            return true;
+            return false;
         }
 
         if (mWorkspace.allowLongPress()) {
@@ -1488,10 +1450,6 @@
         return !mDrawer.isMoving() && !mDrawer.isOpened();
     }
 
-    boolean isDrawerUp() {
-        return mDrawer.isOpened() && !mDrawer.isMoving();
-    }
-
     Workspace getWorkspace() {
         return mWorkspace;
     }
@@ -1808,16 +1766,6 @@
         public void onDrawerOpened() {
             if (!mOpen) {
                 mHandleIcon.reverseTransition(150);
-                final Rect bounds = mWorkspace.mDrawerBounds;
-
-                View view = mAllAppsGrid;
-                view.getDrawingRect(bounds);
-
-                while (view != mDragLayer) {
-                    bounds.offset(view.getLeft(), view.getTop());
-                    view = (View) view.getParent();
-                }
-
                 mOpen = true;
             }
         }
@@ -1825,63 +1773,41 @@
         public void onDrawerClosed() {
             if (mOpen) {
                 mHandleIcon.reverseTransition(150);
-                mWorkspace.mDrawerBounds.setEmpty();
                 mOpen = false;
             }
             mAllAppsGrid.setSelection(0);
             mAllAppsGrid.clearTextFilter();
+            mWorkspace.clearChildrenCache();
         }
 
         public void onScrollStarted() {
+            mWorkspace.enableChildrenCache();
         }
 
         public void onScrollEnded() {
         }
     }
 
-    private static class DesktopBinder extends Handler {
+    private static class DesktopItemsBinder extends Handler {
         static final int MESSAGE_BIND_ITEMS = 0x1;
-        static final int MESSAGE_BIND_GADGETS = 0x2;
         // Number of items to bind in every pass
         static final int ITEMS_COUNT = 6;
-        static final int GADGETS_COUNT = 1;
 
         private final ArrayList<ItemInfo> mShortcuts;
-        private final ArrayList<LauncherGadgetInfo> mGadgets;
         private final WeakReference<Launcher> mLauncher;
 
-        DesktopBinder(Launcher launcher, ArrayList<ItemInfo> shortcuts,
-                ArrayList<LauncherGadgetInfo> gadgets) {
-
+        DesktopItemsBinder(Launcher launcher, ArrayList<ItemInfo> shortcuts) {
             mLauncher = new WeakReference<Launcher>(launcher);
             mShortcuts = shortcuts;
-            mGadgets = gadgets;
-        }
-        
-        public void startBindingItems() {
-            obtainMessage(MESSAGE_BIND_ITEMS, 0, mShortcuts.size()).sendToTarget();
         }
 
-        public void startBindingGadgets() {
-            obtainMessage(MESSAGE_BIND_GADGETS, 0, mGadgets.size()).sendToTarget();
-        }
-        
         @Override
         public void handleMessage(Message msg) {
-            Launcher launcher = mLauncher.get();
-            if (launcher == null) {
-                return;
-            }
-            
             switch (msg.what) {
-                case MESSAGE_BIND_ITEMS: {
-                    launcher.bindItems(this, mShortcuts, msg.arg1, msg.arg2);
+                case MESSAGE_BIND_ITEMS:
+                    Launcher launcher = mLauncher.get();
+                    if (launcher != null) launcher.bindItems(this, mShortcuts, msg.arg1, msg.arg2);
                     break;
-                }
-                case MESSAGE_BIND_GADGETS: {
-                    launcher.bindGadgets(this, mGadgets, msg.arg1, msg.arg2);
-                    break;
-                }
             }
         }
     }
diff --git a/src/com/android/launcher/LauncherGadgetHostView.java b/src/com/android/launcher/LauncherGadgetHostView.java
index 2b5f7f7..dd098aa 100644
--- a/src/com/android/launcher/LauncherGadgetHostView.java
+++ b/src/com/android/launcher/LauncherGadgetHostView.java
@@ -58,13 +58,13 @@
                 break;
             }
             
-            case MotionEvent.ACTION_UP:
-            case MotionEvent.ACTION_CANCEL:
+            case MotionEvent.ACTION_UP: {
                 mHasPerformedLongPress = false;
                 if (mPendingCheckForLongPress != null) {
                     removeCallbacks(mPendingCheckForLongPress);
                 }
                 break;
+            }
         }
         
         // Otherwise continue letting touch events fall through to children
diff --git a/src/com/android/launcher/LauncherModel.java b/src/com/android/launcher/LauncherModel.java
index 40b5402..783eef2 100644
--- a/src/com/android/launcher/LauncherModel.java
+++ b/src/com/android/launcher/LauncherModel.java
@@ -57,7 +57,6 @@
     private boolean mDesktopItemsLoaded;
 
     private ArrayList<ItemInfo> mDesktopItems;
-    private ArrayList<LauncherGadgetInfo> mDesktopGadgets;
     private HashMap<Long, FolderInfo> mFolders;
 
     private ArrayList<ApplicationInfo> mApplications;
@@ -203,7 +202,6 @@
             final ApplicationsAdapter applicationList = mApplicationList;
             final int count = buffer.size();
 
-            applicationList.setNotifyOnChange(false);
             applicationList.clear();
             for (int i = 0; i < count; i++) {
                 applicationList.setNotifyOnChange(false);
@@ -224,7 +222,7 @@
     }
 
     boolean isDesktopLoaded() {
-        return mDesktopItems != null && mDesktopGadgets != null && mDesktopItemsLoaded;
+        return mDesktopItems != null && mDesktopItemsLoaded;
     }
     
     /**
@@ -234,7 +232,7 @@
     void loadUserItems(boolean isLaunching, Launcher launcher, boolean localeChanged,
             boolean loadApplications) {
 
-        if (isLaunching && isDesktopLoaded()) {
+        if (isLaunching && mDesktopItems != null && mDesktopItemsLoaded) {
             if (loadApplications) startApplicationsLoader(launcher);
             // We have already loaded our data from the DB
             launcher.onDesktopItemsLoaded();
@@ -360,11 +358,9 @@
             }
 
             mDesktopItems = new ArrayList<ItemInfo>();
-            mDesktopGadgets = new ArrayList<LauncherGadgetInfo>();
             mFolders = new HashMap<Long, FolderInfo>();
 
             final ArrayList<ItemInfo> desktopItems = mDesktopItems;
-            final ArrayList<LauncherGadgetInfo> desktopGadgets = mDesktopGadgets;
 
             final Cursor c = contentResolver.query(
                     LauncherSettings.Favorites.CONTENT_URI, null, null, null, null);
@@ -390,8 +386,8 @@
 
                 ApplicationInfo info;
                 String intentDescription;
-                Widget widgetInfo;
-                LauncherGadgetInfo gadgetInfo;
+                Widget widgetInfo = null;
+                LauncherGadgetInfo gadgetInfo = null;
                 int container;
                 long id;
                 Intent intent;
@@ -540,7 +536,7 @@
                             }
                             gadgetInfo.container = c.getInt(containerIndex);
                             
-                            desktopGadgets.add(gadgetInfo);
+                            desktopItems.add(gadgetInfo);
                             break;
                         }
                     } catch (Exception e) {
@@ -647,7 +643,6 @@
         mApplicationsAdapter = null;
         unbindAppDrawables(mApplications);
         unbindDrawables(mDesktopItems);
-        unbindGadgetHostViews(mDesktopGadgets);
     }
     
     /**
@@ -663,7 +658,6 @@
                 case LauncherSettings.Favorites.ITEM_TYPE_APPLICATION:
                 case LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT:
                     ((ApplicationInfo)item).icon.setCallback(null);
-                    break;
                 }
             }
         }
@@ -683,19 +677,6 @@
     }
 
     /**
-     * Remove any {@link LauncherGadgetHostView} references in our gadgets.
-     */
-    private void unbindGadgetHostViews(ArrayList<LauncherGadgetInfo> gadgets) {
-        if (gadgets != null) {
-            final int count = gadgets.size();
-            for (int i = 0; i < count; i++) {
-                LauncherGadgetInfo launcherInfo = gadgets.get(i);
-                launcherInfo.hostView = null;
-            }
-        }
-    }
-
-    /**
      * @return The current list of applications
      */
     public ArrayList<ApplicationInfo> getApplications() {
@@ -715,13 +696,6 @@
     public ArrayList<ItemInfo> getDesktopItems() {
         return mDesktopItems;
     }
-    
-    /**
-     * @return The current list of desktop items
-     */
-    public ArrayList<LauncherGadgetInfo> getDesktopGadgets() {
-        return mDesktopGadgets;
-    }
 
     /**
      * Add an item to the desktop
@@ -742,20 +716,6 @@
     }
 
     /**
-     * Add a gadget to the desktop
-     */
-    public void addDesktopGadget(LauncherGadgetInfo info) {
-        mDesktopGadgets.add(info);
-    }
-    
-    /**
-     * Remove a gadget from the desktop
-     */
-    public void removeDesktopGadget(LauncherGadgetInfo info) {
-        mDesktopGadgets.remove(info);
-    }
-
-    /**
      * Make an ApplicationInfo object for an application
      */
     private static ApplicationInfo getApplicationInfo(PackageManager manager, Intent intent) {
diff --git a/src/com/android/launcher/LauncherProvider.java b/src/com/android/launcher/LauncherProvider.java
index 539d5ae..47db647 100644
--- a/src/com/android/launcher/LauncherProvider.java
+++ b/src/com/android/launcher/LauncherProvider.java
@@ -30,7 +30,6 @@
 import android.database.sqlite.SQLiteQueryBuilder;
 import android.database.Cursor;
 import android.database.SQLException;
-import android.gadget.GadgetHost;
 import android.util.Log;
 import android.util.Xml;
 import android.net.Uri;
@@ -42,25 +41,19 @@
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
-import java.util.ArrayList;
 
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 import com.android.internal.util.XmlUtils;
-import com.android.launcher.LauncherSettings.Favorites;
 
 public class LauncherProvider extends ContentProvider {
-    private static final String LOG_TAG = "LauncherProvider";
-    private static final boolean LOGD = true;
+    private static final String LOG_TAG = "LauncherSettingsProvider";
 
     private static final String DATABASE_NAME = "launcher.db";
     
     private static final int DATABASE_VERSION = 2;
 
     static final String AUTHORITY = "com.android.launcher.settings";
-    
-    static final String EXTRA_BIND_SOURCES = "com.android.launcher.settings.bindsources";
-    static final String EXTRA_BIND_TARGETS = "com.android.launcher.settings.bindtargets";
 
     static final String TABLE_FAVORITES = "favorites";
     static final String PARAMETER_NOTIFY = "notify";
@@ -177,18 +170,14 @@
         private static final String ATTRIBUTE_Y = "y";
 
         private final Context mContext;
-        private final GadgetHost mGadgetHost;
 
         DatabaseHelper(Context context) {
             super(context, DATABASE_NAME, null, DATABASE_VERSION);
             mContext = context;
-            mGadgetHost = new GadgetHost(context, Launcher.GADGET_HOST_ID);
         }
 
         @Override
         public void onCreate(SQLiteDatabase db) {
-            if (LOGD) Log.d(LOG_TAG, "creating new launcher database");
-            
             db.execSQL("CREATE TABLE favorites (" +
                     "_id INTEGER PRIMARY KEY," +
                     "title TEXT," +
@@ -210,11 +199,11 @@
                     "displayMode INTEGER" +
                     ");");
 
-            // Database was just created, so wipe any previous gadgets
-            if (mGadgetHost != null) {
-                mGadgetHost.deleteHost();
-            }
-            
+            // TODO: During first database creation, trigger wipe of any gadgets that
+            // might have been left around during a wipe-data.
+//            GadgetManager gadgetManager = GadgetManager.getInstance(mContext);
+
+
             if (!convertDatabase(db)) {
                 // Populate favorites table with initial favorites
                 loadFavorites(db, DEFAULT_FAVORITES_PATH);
@@ -222,7 +211,6 @@
         }
 
         private boolean convertDatabase(SQLiteDatabase db) {
-            if (LOGD) Log.d(LOG_TAG, "converting database from an older format, but not onUpgrade");
             boolean converted = false;
 
             final Uri uri = Uri.parse("content://" + Settings.AUTHORITY +
@@ -248,12 +236,6 @@
                     resolver.delete(uri, null, null);
                 }
             }
-            
-            if (converted) {
-                // Convert widgets from this import into gadgets
-                if (LOGD) Log.d(LOG_TAG, "converted and now triggering widget upgrade");
-                convertWidgets(db);
-            }
 
             return converted;
         }
@@ -317,16 +299,16 @@
 
         @Override
         public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
-            if (LOGD) Log.d(LOG_TAG, "onUpgrade triggered");
-            
             int version = oldVersion;
             if (version == 1) {
                 // upgrade 1 -> 2 added gadgetId column
                 db.beginTransaction();
                 try {
-                    // Insert new column for holding gadgetIds
+                    // TODO: convert any existing widgets for search and clock
+                    // this might involve a FORCE_ADD_GADGET permission in GadgetManager that
+                    // Launcher could then use to add these gadgets without user interaction
                     db.execSQL("ALTER TABLE favorites " +
-                        "ADD COLUMN gadgetId INTEGER NOT NULL DEFAULT -1;");
+                            "ADD COLUMN gadgetId INTEGER NOT NULL DEFAULT -1;");
                     db.setTransactionSuccessful();
                     version = 2;
                 } catch (SQLException ex) {
@@ -335,11 +317,6 @@
                 } finally {
                     db.endTransaction();
                 }
-                
-                // Convert existing widgets only if table upgrade was successful
-                if (version == 2) {
-                    convertWidgets(db);
-                }
             }
             
             if (version != DATABASE_VERSION) {
@@ -348,100 +325,9 @@
                 onCreate(db);
             }
         }
-        
-        /**
-         * Upgrade existing clock and photo frame widgets into their new gadget
-         * equivalents. This method allocates gadgetIds, and then hands off to
-         * LauncherGadgetBinder to finish the actual binding.
-         */
-        private void convertWidgets(SQLiteDatabase db) {
-            final int[] bindSources = new int[] {
-                    Favorites.ITEM_TYPE_WIDGET_CLOCK,
-                    Favorites.ITEM_TYPE_WIDGET_PHOTO_FRAME,
-            };
-            
-            final ArrayList<ComponentName> bindTargets = new ArrayList<ComponentName>();
-            bindTargets.add(new ComponentName("com.android.alarmclock",
-                    "com.android.alarmclock.AnalogGadgetProvider"));
-            bindTargets.add(new ComponentName("com.android.camera",
-                    "com.android.camera.PhotoGadgetProvider"));
-            
-            final String selectWhere = buildOrWhereString(Favorites.ITEM_TYPE, bindSources);
-            
-            Cursor c = null;
-            boolean allocatedGadgets = false;
-            
-            db.beginTransaction();
-            try {
-                // Select and iterate through each matching widget
-                c = db.query(TABLE_FAVORITES, new String[] { Favorites._ID },
-                        selectWhere, null, null, null, null);
-                
-                if (LOGD) Log.d(LOG_TAG, "found upgrade cursor count="+c.getCount());
-                
-                final ContentValues values = new ContentValues();
-                while (c != null && c.moveToNext()) {
-                    long favoriteId = c.getLong(0);
-                    
-                    // Allocate and update database with new gadgetId
-                    try {
-                        int gadgetId = mGadgetHost.allocateGadgetId();
-                        
-                        if (LOGD) Log.d(LOG_TAG, "allocated gadgetId="+gadgetId+" for favoriteId="+favoriteId);
-                        
-                        values.clear();
-                        values.put(LauncherSettings.Favorites.GADGET_ID, gadgetId);
-                        
-                        // Original widgets might not have valid spans when upgrading
-                        values.put(LauncherSettings.Favorites.SPANX, 2);
-                        values.put(LauncherSettings.Favorites.SPANY, 2);
 
-                        String updateWhere = Favorites._ID + "=" + favoriteId;
-                        db.update(TABLE_FAVORITES, values, updateWhere, null);
-                        
-                        allocatedGadgets = true;
-                    } catch (RuntimeException ex) {
-                        Log.e(LOG_TAG, "Problem allocating gadgetId", ex);
-                    }
-                }
-                
-                db.setTransactionSuccessful();
-            } catch (SQLException ex) {
-                Log.w(LOG_TAG, "Problem while allocating gadgetIds for existing widgets", ex);
-            } finally {
-                db.endTransaction();
-                if (c != null) {
-                    c.close();
-                }
-            }
-            
-            // If any gadgetIds allocated, then launch over to binder
-            if (allocatedGadgets) {
-                launchGadgetBinder(bindSources, bindTargets);
-            }
-        }
 
         /**
-         * Launch the gadget 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_GADGET permission.
-         */
-        private void launchGadgetBinder(int[] bindSources, ArrayList<ComponentName> bindTargets) {
-            final Intent intent = new Intent();
-            intent.setComponent(new ComponentName("com.android.settings",
-                    "com.android.settings.LauncherGadgetBinder"));
-            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
@@ -527,62 +413,13 @@
             values.put(LauncherSettings.Favorites.SPANY, 1);
             db.insert(TABLE_FAVORITES, null, 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.AnalogGadgetProvider"));
-            
-            boolean allocatedGadgets = false;
-            
-            // Try binding to an analog clock gadget
-            try {
-                int gadgetId = mGadgetHost.allocateGadgetId();
-                
-                values.clear();
-                values.put(LauncherSettings.Favorites.CONTAINER,
-                        LauncherSettings.Favorites.CONTAINER_DESKTOP);
-                values.put(LauncherSettings.Favorites.ITEM_TYPE,
-                        LauncherSettings.Favorites.ITEM_TYPE_WIDGET_CLOCK);
-                values.put(LauncherSettings.Favorites.SCREEN, 1);
-                values.put(LauncherSettings.Favorites.CELLX, 1);
-                values.put(LauncherSettings.Favorites.CELLY, 0);
-                values.put(LauncherSettings.Favorites.SPANX, 2);
-                values.put(LauncherSettings.Favorites.SPANY, 2);
-                values.put(LauncherSettings.Favorites.GADGET_ID, gadgetId);
-                db.insert(TABLE_FAVORITES, null, values);
-                
-                allocatedGadgets = true;
-            } catch (RuntimeException ex) {
-                Log.e(LOG_TAG, "Problem allocating gadgetId", ex);
-            }
+            // TODO: automatically add clock and search gadget to
+            // default locations.  this might need the FORCE permission mentioned above
 
-            // If any gadgetIds allocated, then launch over to binder
-            if (allocatedGadgets) {
-                launchGadgetBinder(bindSources, bindTargets);
-            }
-            
             return i;
         }
     }
 
-    /**
-     * Build a query string that will match any row where the column matches
-     * anything in the values list.
-     */
-    static String buildOrWhereString(String column, int[] values) {
-        StringBuilder selectWhere = new StringBuilder();
-        for (int i = values.length - 1; i >= 0; i--) {
-            selectWhere.append(column).append("=").append(values[i]);
-            if (i > 0) {
-                selectWhere.append(" OR ");
-            }
-        }
-        return selectWhere.toString();
-    }
-
     static class SqlArguments {
         public final String table;
         public final String where;
diff --git a/src/com/android/launcher/LauncherSettings.java b/src/com/android/launcher/LauncherSettings.java
index 461cca4..77bdc73 100644
--- a/src/com/android/launcher/LauncherSettings.java
+++ b/src/com/android/launcher/LauncherSettings.java
@@ -24,8 +24,7 @@
  */
 class LauncherSettings {
     /**
-     * Favorites. When changing these values, be sure to update
-     * {@link com.android.settings.LauncherGadgetBinder} as needed.
+     * Favorites.
      */
     static final class Favorites implements BaseColumns {
         /**
diff --git a/src/com/android/launcher/LiveFolder.java b/src/com/android/launcher/LiveFolder.java
index 5d727f8..37b98e0 100644
--- a/src/com/android/launcher/LiveFolder.java
+++ b/src/com/android/launcher/LiveFolder.java
@@ -24,14 +24,8 @@
 import android.widget.AdapterView;
 import android.net.Uri;
 import android.provider.LiveFolders;
-import android.os.AsyncTask;
-import android.database.Cursor;
-
-import java.lang.ref.WeakReference;
 
 public class LiveFolder extends Folder {
-    private AsyncTask<LiveFolderInfo,Void,Cursor> mLoadingTask;
-
     public LiveFolder(Context context, AttributeSet attrs) {
         super(context, attrs);
     }
@@ -72,10 +66,7 @@
 
     void bind(FolderInfo info) {
         super.bind(info);
-        if (mLoadingTask != null && mLoadingTask.getStatus() == AsyncTask.Status.RUNNING) {
-            mLoadingTask.cancel(true);
-        }
-        mLoadingTask = new FolderLoadingTask(this).execute((LiveFolderInfo) info);
+        setContentAdapter(new LiveFolderAdapter(mLauncher, (LiveFolderInfo) info));
     }
 
     @Override
@@ -87,42 +78,6 @@
     @Override
     void onClose() {
         super.onClose();
-        if (mLoadingTask != null && mLoadingTask.getStatus() == AsyncTask.Status.RUNNING) {
-            mLoadingTask.cancel(true);
-        }
         ((LiveFolderAdapter) mContent.getAdapter()).cleanup();
     }
-
-    static class FolderLoadingTask extends AsyncTask<LiveFolderInfo, Void, Cursor> {
-        private final WeakReference<LiveFolder> mFolder;
-        private LiveFolderInfo mInfo;
-
-        FolderLoadingTask(LiveFolder folder) {
-            mFolder = new WeakReference<LiveFolder>(folder);
-        }
-
-        protected Cursor doInBackground(LiveFolderInfo... params) {
-            final LiveFolder folder = mFolder.get();
-            if (folder != null) {
-                mInfo = params[0];
-                return LiveFolderAdapter.query(folder.mLauncher, mInfo);
-            }
-            return null;
-        }
-
-        @Override
-        protected void onPostExecute(Cursor cursor) {
-            if (!isCancelled()) {
-                if (cursor != null) {
-                    final LiveFolder folder = mFolder.get();
-                    if (folder != null) {
-                        final Launcher launcher = folder.mLauncher;
-                        folder.setContentAdapter(new LiveFolderAdapter(launcher, mInfo, cursor));
-                    }
-                }
-            } else if (cursor != null) {
-                cursor.close();
-            }
-        }
-    }
 }
diff --git a/src/com/android/launcher/LiveFolderAdapter.java b/src/com/android/launcher/LiveFolderAdapter.java
index 4a5c077..71ed85d 100644
--- a/src/com/android/launcher/LiveFolderAdapter.java
+++ b/src/com/android/launcher/LiveFolderAdapter.java
@@ -45,8 +45,8 @@
             new HashMap<Long, SoftReference<Drawable>>();
     private final Launcher mLauncher;
 
-    LiveFolderAdapter(Launcher launcher, LiveFolderInfo info, Cursor cursor) {
-        super(launcher, cursor, true);
+    LiveFolderAdapter(Launcher launcher, LiveFolderInfo info) {
+        super(launcher, query(launcher, info), true);
         mIsList = info.displayMode == LiveFolders.DISPLAY_MODE_LIST;
         mInflater = LayoutInflater.from(launcher);
         mLauncher = launcher;
@@ -54,9 +54,8 @@
         mLauncher.startManagingCursor(getCursor());
     }
 
-    static Cursor query(Context context, LiveFolderInfo info) {
-        return context.getContentResolver().query(info.uri, null, null,
-                null, LiveFolders.NAME + " ASC");
+    private static Cursor query(Context context, LiveFolderInfo info) {
+        return context.getContentResolver().query(info.uri, null, null, null, LiveFolders.NAME + " ASC");
     }
 
     public View newView(Context context, Cursor cursor, ViewGroup parent) {
diff --git a/src/com/android/launcher/Search.java b/src/com/android/launcher/Search.java
index 522a432..d33fd69 100644
--- a/src/com/android/launcher/Search.java
+++ b/src/com/android/launcher/Search.java
@@ -57,6 +57,8 @@
 import android.widget.AdapterView.OnItemClickListener;
 import android.widget.AdapterView.OnItemSelectedListener;
 
+import java.util.List;
+
 public class Search extends LinearLayout implements OnClickListener, OnKeyListener,
         OnLongClickListener, TextWatcher, OnItemClickListener, OnItemSelectedListener {
 
@@ -79,7 +81,6 @@
     private Intent mVoiceSearchIntent;
 
     private Rect mTempRect = new Rect();
-    private boolean mRestoreFocus = false;
 
     /**
      * Used to inflate the Workspace from XML.
@@ -169,26 +170,7 @@
 
         getContext().startActivity(launcher);
     }
-
-    @Override
-    public void onWindowFocusChanged(boolean hasWindowFocus) {
-        if (!hasWindowFocus && hasFocus()) {
-            mRestoreFocus = true;
-        }
-
-        super.onWindowFocusChanged(hasWindowFocus);
-
-        if (hasWindowFocus && mRestoreFocus) {
-            if (isInTouchMode()) {
-                final AutoCompleteTextView searchText = mSearchText;
-                searchText.setSelectAllOnFocus(false);
-                searchText.requestFocusFromTouch();
-                searchText.setSelectAllOnFocus(true);
-            }
-            mRestoreFocus = false;
-        }
-    }
-
+    
     /**
      * Implements TextWatcher (for EditText)
      */
@@ -389,18 +371,6 @@
     }
     
     /**
-     * Remove internal cursor references when detaching from window which
-     * prevents {@link Context} leaks.
-     */
-    @Override
-    public void onDetachedFromWindow() {
-        if (mSuggestionsAdapter != null) {
-            mSuggestionsAdapter.changeCursor(null);
-            mSuggestionsAdapter = null;
-        }
-    }
-    
-    /**
      * Implements OnItemClickListener
      */
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
diff --git a/src/com/android/launcher/SearchAutoCompleteTextView.java b/src/com/android/launcher/SearchAutoCompleteTextView.java
deleted file mode 100644
index 18a464a..0000000
--- a/src/com/android/launcher/SearchAutoCompleteTextView.java
+++ /dev/null
@@ -1,70 +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.launcher;
-
-import android.widget.AutoCompleteTextView;
-import android.content.Context;
-import android.util.AttributeSet;
-import android.graphics.Rect;
-import android.view.WindowManager;
-import android.view.inputmethod.InputMethodManager;
-import android.app.Activity;
-
-/**
- * This class is not for the faint of heart. Home works in the pan & scan
- * soft input mode. However, this mode gets rid of the soft keyboard on rotation,
- * which is a probelm when the Search widget has focus. This special class
- * changes Home's soft input method temporarily as long as the Search widget holds
- * the focus. This way, the soft keyboard remains after rotation.
- */
-public class SearchAutoCompleteTextView extends AutoCompleteTextView {
-    public SearchAutoCompleteTextView(Context context) {
-        super(context);
-    }
-
-    public SearchAutoCompleteTextView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    public SearchAutoCompleteTextView(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-    }
-
-    @Override
-    protected void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect) {
-        super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
-
-        final WindowManager.LayoutParams lp = ((Activity) getContext()).getWindow().getAttributes();
-        if (gainFocus) {
-            lp.softInputMode =
-                    (lp.softInputMode & ~WindowManager.LayoutParams.SOFT_INPUT_MASK_STATE) |
-                            WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED;
-        } else {
-            //noinspection PointlessBitwiseExpression
-            lp.softInputMode =
-                    (lp.softInputMode & ~WindowManager.LayoutParams.SOFT_INPUT_MASK_STATE) |
-                            WindowManager.LayoutParams.SOFT_INPUT_STATE_UNSPECIFIED;
-
-            // Hide the soft keyboard when the search widget loses the focus
-            InputMethodManager.peekInstance().hideSoftInputFromWindow(getWindowToken(), 0);
-        }
-
-        final WindowManager manager = (WindowManager)
-                getContext().getSystemService(Context.WINDOW_SERVICE);
-        manager.updateViewLayout(getRootView(), lp);
-    }
-}
diff --git a/src/com/android/launcher/Workspace.java b/src/com/android/launcher/Workspace.java
index d93fe14..6d8eef5 100644
--- a/src/com/android/launcher/Workspace.java
+++ b/src/com/android/launcher/Workspace.java
@@ -17,8 +17,6 @@
 package com.android.launcher;
 
 import android.content.Context;
-import android.content.Intent;
-import android.content.ComponentName;
 import android.content.res.TypedArray;
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
@@ -93,9 +91,6 @@
 
     private int mTouchSlop;
 
-    final Rect mDrawerBounds = new Rect();
-    final Rect mClipBounds = new Rect();
-
     /**
      * Used to inflate the Workspace from XML.
      *
@@ -442,18 +437,6 @@
 
     @Override
     protected void dispatchDraw(Canvas canvas) {
-        // If the all apps drawer is open and the drawing region for the workspace
-        // is contained within the drawer's bounds, we skip the drawing. This requires
-        // the drawer to be fully opaque.
-        if (mLauncher.isDrawerUp()) {
-            final Rect clipBounds = mClipBounds;
-            canvas.getClipBounds(clipBounds);
-            clipBounds.offset(-mScrollX, -mScrollY);
-            if (mDrawerBounds.contains(clipBounds)) {
-                return;
-            }
-        }
-
         float x = mScrollX * mWallpaperOffset;
         if (x + mWallpaperWidth < mRight - mLeft) {
             x = mRight - mLeft - mWallpaperWidth;
@@ -690,7 +673,6 @@
                 // Release the drag
                 clearChildrenCache();
                 mTouchState = TOUCH_STATE_REST;
-                mAllowLongPress = false;
                 break;
         }
 
@@ -1170,13 +1152,7 @@
                 Object tag = view.getTag();
                 if (tag instanceof ApplicationInfo) {
                     ApplicationInfo info = (ApplicationInfo) tag;
-                    // We need to check for ACTION_MAIN otherwise getComponent() might
-                    // return null for some shortcuts (for instance, for shortcuts to
-                    // web pages.)
-                    final Intent intent = info.intent;
-                    final ComponentName name = intent.getComponent();
-                    if (Intent.ACTION_MAIN.equals(intent.getAction()) &&
-                            name != null && packageName.equals(name.getPackageName())) {
+                    if (packageName.equals(info.intent.getComponent().getPackageName())) {
                         model.removeDesktopItem(info);
                         LauncherModel.deleteItemFromDatabase(mLauncher, info);
                         childrenToRemove.add(view);