Index: nautilus-2.26.2/src/nautilus-pathbar.c
===================================================================
--- nautilus-2.26.2.orig/src/nautilus-pathbar.c	2009-06-27 13:34:11.000000000 -0400
+++ nautilus-2.26.2/src/nautilus-pathbar.c	2009-06-27 14:01:30.000000000 -0400
@@ -65,6 +65,8 @@
 
 #define NAUTILUS_PATH_BAR_ICON_SIZE 16
 
+#define NAUTILUS_PATH_BAR_LABEL_MAX_WIDTH 200
+
 typedef struct _ButtonData ButtonData;
 
 struct _ButtonData
@@ -542,6 +544,7 @@
         GtkAllocation child_allocation;
         GList *list, *first_button;
         gint width;
+        gint largest_width;
         gint allocation_width;
         gint border_width;
         gboolean need_sliders;
@@ -658,10 +661,16 @@
 		}
         }
 
+        /* Determine the largest possible allocation size */
+        largest_width = allocation_width;
+        if (need_sliders) {
+                largest_width -= (path_bar->spacing + path_bar->slider_width) * 2;
+        }
+
         for (list = first_button; list; list = list->prev) {
                 child = BUTTON_DATA (list->data)->button;
 
-                child_allocation.width = child->requisition.width;
+                child_allocation.width = MIN (child->requisition.width, largest_width);
                 if (direction == GTK_TEXT_DIR_RTL) {
 			child_allocation.x -= child_allocation.width;
 		}
@@ -1267,8 +1276,15 @@
         pango_layout_set_markup (layout, markup, -1);
         g_free (markup);
 
+	/* NOTE: Since GtkToolbar will not show any toolbar items that are wider than
+	 * it's own allocation, limit the size. Ideally, the toolbar should either:
+	 *   (a) Send down a smaller allocation size and let the child handle it,
+	 *   (b) Child requisition should be limited to be less than the toolbar size.
+	 * THE CODE HERE just forcibly limits it's own size, hoping for the best.
+	 */
         pango_layout_get_pixel_size (layout, &bold_width, &bold_height);
         requisition->width = MAX (requisition->width, bold_width);
+        requisition->width = MIN (requisition->width, NAUTILUS_PATH_BAR_LABEL_MAX_WIDTH);
         requisition->height = MAX (requisition->height, bold_height);
   
         g_object_unref (layout);
@@ -1281,6 +1297,8 @@
 	GdkPixbuf *pixbuf;
         const gchar *dir_name = get_dir_name (button_data);
 
+	gtk_widget_set_tooltip_text (button_data->button, dir_name);
+
         if (button_data->label != NULL) {
                 if (gtk_label_get_use_markup (GTK_LABEL (button_data->label))) {
 			char *markup;
@@ -1591,6 +1609,7 @@
                 case DESKTOP_BUTTON:
 		case MOUNT_BUTTON:
                         button_data->label = gtk_label_new (NULL);
+                        gtk_label_set_ellipsize (button_data->label, PANGO_ELLIPSIZE_MIDDLE);
                         label_alignment = gtk_alignment_new (0.5, 0.5, 1.0, 1.0);
                         gtk_container_add (GTK_CONTAINER (label_alignment), button_data->label);
                         child = gtk_hbox_new (FALSE, 2);
@@ -1600,6 +1619,7 @@
 		case NORMAL_BUTTON:
     		default:
 			button_data->label = gtk_label_new (NULL);
+			gtk_label_set_ellipsize (button_data->label, PANGO_ELLIPSIZE_MIDDLE);
 			label_alignment = gtk_alignment_new (0.5, 0.5, 1.0, 1.0);
 			gtk_container_add (GTK_CONTAINER (label_alignment), button_data->label);
 			child = gtk_hbox_new (FALSE, 2);
