Index: gtk/gtkoptionmenu.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtkoptionmenu.c,v
retrieving revision 1.63
diff -u -b -B -p -r1.63 gtkoptionmenu.c
--- gtk/gtkoptionmenu.c	9 Oct 2002 23:55:27 -0000	1.63
+++ gtk/gtkoptionmenu.c	23 Oct 2002 22:29:41 -0000
@@ -510,6 +510,9 @@ gtk_option_menu_size_allocate (GtkWidget
       child_allocation.height = MAX (1, allocation->height - (border_width + ythickness + props.focus_width + props.focus_pad) * 2 -
 				     CHILD_TOP_SPACING - CHILD_BOTTOM_SPACING);
 
+      if (gtk_widget_get_direction (GTK_WIDGET (widget)) == GTK_TEXT_DIR_RTL) 
+	child_allocation.x += props.indicator_size.width + props.indicator_spacing.left + props.indicator_spacing.right;
+
       gtk_widget_size_allocate (child, &child_allocation);
     }
 }
@@ -521,6 +524,7 @@ gtk_option_menu_paint (GtkWidget    *wid
   GdkRectangle button_area;
   GtkOptionMenuProps props;
   gint border_width;
+  gint tab_x;
 
   g_return_if_fail (GTK_IS_OPTION_MENU (widget));
   g_return_if_fail (area != NULL);
@@ -549,12 +553,18 @@ gtk_option_menu_paint (GtkWidget    *wid
 		     button_area.x, button_area.y,
 		     button_area.width, button_area.height);
       
+      if (gtk_widget_get_direction (GTK_WIDGET (widget)) == GTK_TEXT_DIR_RTL) 
+	tab_x = button_area.x + props.indicator_spacing.left + 
+	  widget->style->xthickness;
+      else
+	tab_x = button_area.x + button_area.width - 
+	  props.indicator_size.width - props.indicator_spacing.right -
+	  widget->style->xthickness;
+
       gtk_paint_tab (widget->style, widget->window,
 		     GTK_WIDGET_STATE (widget), GTK_SHADOW_OUT,
 		     area, widget, "optionmenutab",
-		     button_area.x + button_area.width - 
-		     props.indicator_size.width - props.indicator_spacing.right -
-		     widget->style->xthickness,
+		     tab_x,
 		     button_area.y + (button_area.height - props.indicator_size.height) / 2,
 		     props.indicator_size.width, props.indicator_size.height);
       
@@ -569,6 +579,10 @@ gtk_option_menu_paint (GtkWidget    *wid
 		      props.indicator_spacing.right +
 		      props.indicator_size.width;
 	      button_area.height -= 2 * (widget->style->ythickness + props.focus_pad);
+	      if (gtk_widget_get_direction (GTK_WIDGET (widget)) == GTK_TEXT_DIR_RTL) 
+		button_area.x += props.indicator_spacing.left +
+		  props.indicator_spacing.right +
+		  props.indicator_size.width;
 	    }
 	  else
 	    {
Index: gtk/gtkstyle.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtkstyle.c,v
retrieving revision 1.127
diff -u -b -B -p -r1.127 gtkstyle.c
--- gtk/gtkstyle.c	22 Oct 2002 23:05:29 -0000	1.127
+++ gtk/gtkstyle.c	23 Oct 2002 22:29:42 -0000
@@ -3321,16 +3321,22 @@ gtk_default_draw_box (GtkStyle      *sty
     {
       GtkRequisition indicator_size;
       GtkBorder indicator_spacing;
+      gint vline_x;
 
       option_menu_get_props (widget, &indicator_size, &indicator_spacing);
 
       sanitize_size (window, &width, &height);
   
+      if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL)
+	vline_x = x + indicator_size.width + indicator_spacing.left + indicator_spacing.right;
+      else 
+	vline_x = x + width - (indicator_size.width + indicator_spacing.left + indicator_spacing.right) - style->xthickness;
+
       gtk_paint_vline (style, window, state_type, area, widget,
 		       detail,
 		       y + style->ythickness + 1,
 		       y + height - style->ythickness - 3,
-		       x + width - (indicator_size.width + indicator_spacing.left + indicator_spacing.right) - style->xthickness);
+		       vline_x);
     }
 }
 
