Index: includes/menu.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/menu.inc,v
retrieving revision 1.202
diff -u -p -r1.202 menu.inc
--- includes/menu.inc	29 Aug 2007 20:46:18 -0000	1.202
+++ includes/menu.inc	3 Sep 2007 18:10:47 -0000
@@ -462,6 +462,7 @@ function _menu_translate(&$router_item, 
     }
   }
   $router_item['href'] = implode('/', $link_map);
+  $router_item['options'] = array();
   _menu_check_access($router_item, $map);
 
   _menu_item_localize($router_item, $map);
@@ -1258,16 +1259,14 @@ function menu_set_active_trail($new_trai
     $item = menu_get_item();
     // We are on a tab.
     if ($item['tab_parent']) {
-      $href = $item['tab_root'];
-    }
-    else {
-      $href = $item['href'];
+      $item['href'] = $item['tab_root'];
     }
+
     $tree = menu_tree_page_data(menu_get_active_menu_name());
     $curr = array_shift($tree);
 
     while ($curr) {
-      if ($curr['link']['href'] == $href) {
+      if ($curr['link']['href'] == $item['href']) {
         $trail[] = $curr['link'];
         $curr = FALSE;
       }
@@ -1279,6 +1278,13 @@ function menu_set_active_trail($new_trai
         $curr = array_shift($tree);
       }
     }
+    // Make sure the current page is in the trail (needed for the page title),
+    // but exclude tabs and the front page.
+    $last = end($trail);
+    if ($last['href'] != $item['href'] && !(bool)($item['type'] & MENU_IS_LOCAL_TASK) && !drupal_is_front_page()) {
+      $trail[] = $item;
+    }
+    reset($trail);
   }
   return $trail;
 }
