Index: gtk/gtkmenubar.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtkmenubar.c,v
retrieving revision 1.50
diff -u -b -B -p -r1.50 gtkmenubar.c
--- gtk/gtkmenubar.c	20 Oct 2002 22:29:57 -0000	1.50
+++ gtk/gtkmenubar.c	24 Oct 2002 21:59:57 -0000
@@ -270,6 +270,7 @@ gtk_menu_bar_size_allocate (GtkWidget   
   GtkRequisition child_requisition;
   guint offset;
   gint ipadding;
+  GtkTextDirection direction;
   
   g_return_if_fail (GTK_IS_MENU_BAR (widget));
   g_return_if_fail (allocation != NULL);
@@ -277,6 +278,8 @@ gtk_menu_bar_size_allocate (GtkWidget   
   menu_bar = GTK_MENU_BAR (widget);
   menu_shell = GTK_MENU_SHELL (widget);
 
+  direction = gtk_widget_get_direction (widget);
+
   widget->allocation = *allocation;
   if (GTK_WIDGET_REALIZED (widget))
     gdk_window_move_resize (widget->window,
@@ -327,13 +330,19 @@ gtk_menu_bar_size_allocate (GtkWidget   
 	    }
 	  if (GTK_WIDGET_VISIBLE (child))
 	    {
+	      gint ltr_x = child_allocation.x;
+
+	      if (direction == GTK_TEXT_DIR_RTL) 
+		child_allocation.x = allocation->width 
+		  - child_requisition.width - ltr_x; 
+
 	      child_allocation.width = child_requisition.width;
 
               gtk_menu_item_toggle_size_allocate (GTK_MENU_ITEM (child),
                                                   toggle_size);
 	      gtk_widget_size_allocate (child, &child_allocation);
 
-	      child_allocation.x += child_allocation.width + CHILD_SPACING * 2;
+	      child_allocation.x = ltr_x + child_allocation.width + CHILD_SPACING * 2;
 	    }
 	}
     }
