Index: includes/menu.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/menu.inc,v
retrieving revision 1.228
diff -u -p -r1.228 menu.inc
--- includes/menu.inc	26 Nov 2007 16:19:37 -0000	1.228
+++ includes/menu.inc	27 Nov 2007 03:02:39 -0000
@@ -441,7 +441,7 @@ function _menu_check_access(&$item, $map
 /**
  * Localize the item title using t() or another callback.
  */
-function _menu_item_localize(&$item, $map) {
+ function _menu_item_localize(&$item, $map) {
   // Translate the title to allow storage of English title strings in the
   // database, yet display of them in the language required by the current
   // user.
@@ -456,7 +456,7 @@ function _menu_item_localize(&$item, $ma
       $item['title'] = t($item['title'], menu_unserialize($item['title_arguments'], $map));
     }
   }
-  else {
+  elseif ($callback) {
     if (empty($item['title_arguments'])) {
       $item['title'] = $callback($item['title']);
     }
@@ -596,8 +596,9 @@ function _menu_link_translate(&$item) {
       }
       _menu_check_access($item, $map);
     }
+    $item['map'] = $map;
     // If the link title matches that of a router item, localize it.
-    if (!empty($item['title']) && (($item['title'] == $item['link_title']) || ($item['title_callback'] != 't'))) {
+    if (!empty($item['title']) && ($item['title'] == $item['link_title'])) {
       _menu_item_localize($item, $map);
     }
     else {
@@ -1404,6 +1405,12 @@ function menu_set_active_trail($new_trai
     if ($trail[$last]['href'] != $item['href'] && !(bool)($item['type'] & MENU_IS_LOCAL_TASK) && !drupal_is_front_page()) {
       $trail[] = $item;
     }
+    // Apply title callbacks for items going in the breadcrumb.
+    foreach ($trail as $key => $item) {
+      if (!empty($item['title_callback']) && $item['title_callback'] != 't') {
+        _menu_item_localize($trail[$key], $item['map']);
+      }
+    }
   }
   return $trail;
 }
Index: modules/filter/filter.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/filter/filter.admin.inc,v
retrieving revision 1.4
diff -u -p -r1.4 filter.admin.inc
--- modules/filter/filter.admin.inc	23 Nov 2007 13:34:55 -0000	1.4
+++ modules/filter/filter.admin.inc	27 Nov 2007 03:02:39 -0000
@@ -74,16 +74,13 @@ function theme_filter_admin_overview($fo
 }
 
 /**
- * Display a filter format form.
+ * Menu callback; Display a filter format form.
  */
 function filter_admin_format_page($format = NULL) {
   if (!isset($format->name)) {
     drupal_set_title(t("Add input format"));
     $format = (object)array('name' => '', 'roles' => '', 'format' => '');
   }
-  else {
-    drupal_set_title(t("%format input format", array('%format' => $format->name)));
-  }
   return drupal_get_form('filter_admin_format_form', $format);
 }
 
Index: modules/filter/filter.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/filter/filter.module,v
retrieving revision 1.190
diff -u -p -r1.190 filter.module
--- modules/filter/filter.module	22 Oct 2007 10:32:03 -0000	1.190
+++ modules/filter/filter.module	27 Nov 2007 03:02:40 -0000
@@ -108,6 +108,8 @@ function filter_menu() {
   );
   $items['admin/settings/filters/%filter_format'] = array(
     'type' => MENU_CALLBACK,
+    'title callback' => 'filter_admin_format_title',
+    'title arguments' => array(3),
     'page callback' => 'filter_admin_format_page',
     'page arguments' => array(3),
     'access arguments' => array('administer filters'),
@@ -144,6 +146,13 @@ function filter_format_load($arg) {
 }
 
 /**
+ * Display a filter format form title.
+ */
+function filter_admin_format_title($format) {
+  return $format->name;
+}
+
+/**
  * Implementation of hook_perm().
  */
 function filter_perm() {
Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.909
diff -u -p -r1.909 node.module
--- modules/node/node.module	26 Nov 2007 11:44:03 -0000	1.909
+++ modules/node/node.module	27 Nov 2007 03:02:40 -0000
@@ -1377,7 +1377,9 @@ function node_menu() {
     );
   }
   $items['node/%node'] = array(
-    'title' => 'View',
+    'title' => 'Content',
+    'title callback' => 'node_page_title',
+    'title arguments' => array(1),
     'page callback' => 'node_page_view',
     'page arguments' => array(1),
     'access callback' => 'node_access',
@@ -1418,6 +1420,13 @@ function node_menu() {
   return $items;
 }
 
+/**
+ * Title callback.
+ */
+function node_page_title($node) {
+  return $node->title;
+}
+
 function node_init() {
   drupal_add_css(drupal_get_path('module', 'node') .'/node.css');
 }
Index: modules/user/user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.module,v
retrieving revision 1.868
diff -u -p -r1.868 user.module
--- modules/user/user.module	26 Nov 2007 16:36:44 -0000	1.868
+++ modules/user/user.module	27 Nov 2007 03:02:40 -0000
@@ -1022,7 +1022,8 @@ function user_menu() {
   );
 
   $items['user/%user_current'] = array(
-    'title' => 'My account',
+    'title callback' => 'user_page_title',
+    'title arguments' => array(1),
     'page callback' => 'user_view',
     'page arguments' => array(1),
     'access callback' => 'user_view_access',
@@ -1145,6 +1146,22 @@ function user_current_to_arg($arg) {
   return empty($arg) || $arg == '%' ? $GLOBALS['user']->uid : $arg;
 }
 
+function user_page_title($account) {
+  if ($account->uid == $GLOBALS['user']->uid) {
+    return t('My account');
+  }
+  else {
+    // Shorten the name when it is too long or it will break many tables.
+    if (drupal_strlen($account->name) > 20) {
+      $name = drupal_substr($account->name, 0, 15) .'...';
+    }
+    else {
+      $name = $account->name;
+    }
+    return $name;
+  }
+}
+
 /**
  * Accepts an user object, $account, or a DA name and returns an associative
  * array of modules and DA names. Called at external login.
