Index: modules/forum/forum.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/forum/forum.module,v
retrieving revision 1.573
diff -u -p -r1.573 forum.module
--- modules/forum/forum.module	17 Aug 2010 16:20:07 -0000	1.573
+++ modules/forum/forum.module	18 Aug 2010 13:36:06 -0000
@@ -59,7 +59,7 @@ function forum_theme() {
   return array(
     'forums' => array(
       'template' => 'forums',
-      'variables' => array('forums' => NULL, 'topics' => NULL, 'parents' => NULL, 'tid' => NULL, 'sortby' => NULL, 'forum_per_page' => NULL),
+      'variables' => array('forum_term' => NULL, 'topics' => NULL, 'sortby' => NULL, 'forum_per_page' => NULL),
     ),
     'forum_list' => array(
       'template' => 'forum-list',
@@ -274,13 +274,12 @@ function _forum_node_check_node_type($no
  * Implements hook_node_view().
  */
 function forum_node_view($node, $view_mode) {
-  $vid = variable_get('forum_nav_vocabulary', 0);
-  $vocabulary = taxonomy_vocabulary_load($vid);
   if (_forum_node_check_node_type($node)) {
     if ($view_mode == 'full' && node_is_page($node)) {
       // Breadcrumb navigation
       $breadcrumb[] = l(t('Home'), NULL);
-      $breadcrumb[] = l($vocabulary->name, 'forum');
+      $menu_item = menu_get_item('forum');
+      $breadcrumb[] = l($menu_item['title'], 'forum');
       if ($parents = taxonomy_get_parents_all($node->forum_tid)) {
         $parents = array_reverse($parents);
         foreach ($parents as $parent) {
@@ -288,7 +287,6 @@ function forum_node_view($node, $view_mo
         }
       }
       drupal_set_breadcrumb($breadcrumb);
-
     }
   }
 }
@@ -944,10 +942,8 @@ function forum_get_topics($tid, $sortby,
  * Process variables for forums.tpl.php
  *
  * The $variables array contains the following arguments:
- * - $forums
+ * - $forum_term
  * - $topics
- * - $parents
- * - $tid
  * - $sortby
  * - $forum_per_page
  *
@@ -956,28 +952,10 @@ function forum_get_topics($tid, $sortby,
 function template_preprocess_forums(&$variables) {
   global $user;
 
-  $vid = variable_get('forum_nav_vocabulary', 0);
-  $vocabulary = taxonomy_vocabulary_load($vid);
-  $title = !empty($vocabulary->name) ? $vocabulary->name : '';
-
-  // Breadcrumb navigation:
-  $breadcrumb[] = l(t('Home'), NULL);
-  if ($variables['tid']) {
-    $breadcrumb[] = l($vocabulary->name, 'forum');
-  }
-  if ($variables['parents']) {
-    $variables['parents'] = array_reverse($variables['parents']);
-    foreach ($variables['parents'] as $p) {
-      if ($p->tid == $variables['tid']) {
-        $title = $p->name;
-      }
-      else {
-        $breadcrumb[] = l($p->name, 'forum/' . $p->tid);
-      }
-    }
-  }
-  drupal_set_breadcrumb($breadcrumb);
-  drupal_set_title($title);
+  // Setup variables for theme_forum_list() and theme_forum_topic_list().
+  $variables['tid'] = $variables['forum_term']->tid;
+  $variables['forums'] = $variables['forum_term']->forums;
+  $variables['parents'] = $variables['forum_term']->parents;
 
   if ($variables['forums_defined'] = count($variables['forums']) || count($variables['parents'])) {
     if (!empty($variables['forums'])) {
@@ -989,7 +967,8 @@ function template_preprocess_forums(&$va
 
     if ($variables['tid'] && !in_array($variables['tid'], variable_get('forum_containers', array()))) {
       $variables['topics'] = theme('forum_topic_list', $variables);
-      drupal_add_feed('taxonomy/term/' . $variables['tid'] . '/0/feed', 'RSS - ' . $title);
+      // Add RSS feed.
+      drupal_add_feed('taxonomy/term/' . $variables['tid'] . '/0/feed', 'RSS - ' . $variables['forum']->name);
     }
     else {
       $variables['topics'] = '';
@@ -1013,7 +992,6 @@ function template_preprocess_forums(&$va
 
   }
   else {
-    drupal_set_title(t('No forums defined'));
     $variables['forums'] = '';
     $variables['topics'] = '';
   }
Index: modules/forum/forum.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/forum/forum.pages.inc,v
retrieving revision 1.4
diff -u -p -r1.4 forum.pages.inc
--- modules/forum/forum.pages.inc	28 Apr 2010 05:54:55 -0000	1.4
+++ modules/forum/forum.pages.inc	18 Aug 2010 13:36:06 -0000
@@ -15,6 +15,37 @@ function forum_page($forum_term = NULL) 
     $forum_term = forum_forum_load(0);
   }
 
+  // The page title for forum list and breadcrumbs should be inherited from
+  // menu link title to follow menu title changes.
+  $title = menu_get_active_title();
+
+  // Breadcrumb navigation.
+  $breadcrumb[] = l(t('Home'), NULL);
+  if ($forum_term->tid) {
+    $breadcrumb[] = l($title, 'forum');
+  }
+  if ($forum_term->parents) {
+    $parents = array_reverse($forum_term->parents);
+    foreach ($parents as $p) {
+      if ($p->tid == $forum_term->tid) {
+        $title = $p->name;
+      }
+      else {
+        $breadcrumb[] = l($p->name, 'forum/' . $p->tid);
+      }
+    }
+  }
+  drupal_set_breadcrumb($breadcrumb);
+
+
+  if ($forum_term->tid) {
+    // Page title should be assigned to a viewing forum or container's name.
+    drupal_set_title($title);
+  }
+  elseif (empty($forum_term->forums) && empty($forum_term->parents)) {
+    drupal_set_title(t('No forums defined'));
+  }
+
   $forum_per_page = variable_get('forum_per_page', 25);
   $sortby = variable_get('forum_order', 1);
 
@@ -25,5 +56,10 @@ function forum_page($forum_term = NULL) 
     $topics = '';
   }
 
-  return theme('forums', array('forums' => $forum_term->forums, 'topics' => $topics, 'parents' => $forum_term->parents, 'tid' => $forum_term->tid, 'sortby' => $sortby, 'forums_per_page' => $forum_per_page));
+  return theme('forums', array(
+    'forum_term' => $forum_term,
+    'topics' => $topics,
+    'sortby' => $sortby,
+    'forums_per_page' => $forum_per_page,
+  ));
 }
