diff --git a/src/com/android/launcher/Launcher.java b/src/com/android/launcher/Launcher.java
index 4252dae..58fcd5a 100644
--- a/src/com/android/launcher/Launcher.java
+++ b/src/com/android/launcher/Launcher.java
@@ -355,11 +355,21 @@
         }
         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 (hasKeyboard && keyboardShowing) ||
+                (!hasKeyboard && !inputManager.isFullscreenMode());
+    }
 
     @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
         boolean handled = super.onKeyDown(keyCode, event);
-        if (!handled && keyCode != KeyEvent.KEYCODE_ENTER) {
+        if (!handled && acceptFilter() && keyCode != KeyEvent.KEYCODE_ENTER) {
             boolean gotKey = TextKeyListener.getInstance().onKeyDown(mWorkspace, mDefaultKeySsb,
                     keyCode, event);
             if (gotKey && mDefaultKeySsb != null && mDefaultKeySsb.length() > 0) {
@@ -861,8 +871,10 @@
                 startWallpaper();
                 return true;
             case MENU_SEARCH:
-                if (!mWorkspace.snapToSearch()) {
-                    onSearchRequested();
+                if (mWorkspace.snapToSearch()) {
+                    closeDrawer(true);          // search gadget: get drawer out of the way
+                } else {
+                    onSearchRequested();        // no search gadget: use system search UI
                 }
                 return true;
             case MENU_NOTIFICATIONS:
diff --git a/src/com/android/launcher/Search.java b/src/com/android/launcher/Search.java
index 449caf9..d33fd69 100644
--- a/src/com/android/launcher/Search.java
+++ b/src/com/android/launcher/Search.java
@@ -343,9 +343,9 @@
         if (mSearchable.getVoiceSearchEnabled() && mSearchable.getVoiceSearchLaunchWebSearch()) {
             // Enable the voice search button if there is an activity that can handle it
             PackageManager pm = getContext().getPackageManager();
-            List<ResolveInfo> list = pm.queryIntentActivities(mVoiceSearchIntent,
+            ResolveInfo ri = pm.resolveActivity(mVoiceSearchIntent,
                     PackageManager.MATCH_DEFAULT_ONLY);
-            voiceSearchVisible = list.size() > 0;
+            voiceSearchVisible = ri != null;
         }
         
         // finally, set visible state of voice search button, as appropriate
diff --git a/src/com/android/launcher/WallpaperChooser.java b/src/com/android/launcher/WallpaperChooser.java
index c88a02a..9ac922c 100644
--- a/src/com/android/launcher/WallpaperChooser.java
+++ b/src/com/android/launcher/WallpaperChooser.java
@@ -60,7 +60,7 @@
     };
 
     private static final Integer[] IMAGE_IDS = {
-            R.drawable.wallpaper_lake,
+            com.android.internal.R.drawable.default_wallpaper,
             R.drawable.wallpaper_sunset,
             R.drawable.wallpaper_beach,
             R.drawable.wallpaper_snow_leopard,
