=== modified file 'modules/search/search.module'
--- modules/search/search.module	2010-04-11 18:54:11 +0000
+++ modules/search/search.module	2010-04-20 00:32:10 +0000
@@ -246,16 +246,35 @@ function search_menu() {
   );
   drupal_static_reset('search_get_info');
   $search_hooks = search_get_info();
-  foreach(variable_get('search_active_modules', array('node', 'user')) as $module) {
+  foreach (variable_get('search_active_modules', array('node', 'user')) as $module) {
     if (isset($search_hooks[$module])) {
-      $items['search/' . $search_hooks[$module]['path'] . '/%menu_tail'] = array(
+      $path = 'search/' . $search_hooks[$module]['path'];
+      $weight = $module == 'node' ? -10 : 0;
+      $items[$path] = array(
+        'title' => $search_hooks[$module]['title'],
+        'page callback' => 'search_view',
+        'page arguments' => array($module),
+        'access callback' => '_search_menu_access',
+        'access arguments' => array($module),
+        'type' => $module == 'node' ? MENU_DEFAULT_LOCAL_TASK : MENU_LOCAL_TASK,
+        'file' => 'search.pages.inc',
+        'weight' => $weight,
+      );
+      $items["$path/%menu_tail"] = array(
         'title' => $search_hooks[$module]['title'],
         'page callback' => 'search_view',
         'page arguments' => array($module),
         'access callback' => '_search_menu_access',
         'access arguments' => array($module),
+        // The default local task points to its parent, but this item points to
+        // where it should so it should not be changed.
         'type' => MENU_LOCAL_TASK,
         'file' => 'search.pages.inc',
+        'weight' => 0,
+        // These tabs are not subtabs.
+        'tab_root' => 'search/node/%',
+        // These tabs need to display at the same level.
+        'tab_parent' => 'search',
       );
     }
   }

=== modified file 'modules/search/search.pages.inc'
--- modules/search/search.pages.inc	2010-04-13 15:23:02 +0000
+++ modules/search/search.pages.inc	2010-04-20 03:51:31 +0000
@@ -18,10 +18,17 @@ function search_view($type = 'node') {
       // Note: search/node can not be a default tab because it would take on the
       // path of its parent (search). It would prevent remembering keywords when
       // switching tabs. This is why we drupal_goto to it from the parent instead.
-      drupal_goto('search/node');
+      drupal_goto('search');
     }
 
     $keys = search_get_keys();
+    if (!$keys && $type == 'node') {
+      // The path 'search/node' shows two sets of tabs so this should not be
+      // allowed.
+      // TODO: cleanup in Drupal 8.
+      drupal_goto('search');
+    }
+
     // Only perform search if there is non-whitespace search term:
     $results = '';
     if (trim($keys)) {

