? 1345.patch
? 74750-3.patch
? 98343.patch
? asdf.patch
? birnan.patch
? changes
? check-and-radio
? color.patch
? complete.patch
? diff.patss
? emfle
? emflediff
? f10patch
? gtk-2.3.1-ssp-1.patch
? gtkdiff
? gtkpatch
? important
? maxangle.patch
? oldunchanged.patch
? patch
? slickness.patch
? smoothscroll.patch
? sofar
? sowhat
? statusbar.patch
? stylediff
? survival.patch
? symbolfix
? unchanged.patch
? visibility.diff.ssp
? demos/gtk-demo/appwindow.ac
? demos/gtk-demo/geninclude.pl
? demos/gtk-demo/hest
? gdk/asdf
? gdk/gdkmarshalers.c
? gdk/scroll_area.patch
? gdk/scrollarea.patch
? gdk/visibility2.diff
? gdk/x11/core.3538
? gtk/64832.patch
? gtk/74750-3.patch
? gtk/87160-2.patch
? gtk/92548
? gtk/92548.patch
? gtk/99313.patch
? gtk/acc.patch
? gtk/adjdiff
? gtk/angle.asdf
? gtk/angle.patch
? gtk/asdf.patch
? gtk/butt.patch
? gtk/butth.patch
? gtk/buttonfocus.patch
? gtk/check.patch
? gtk/checkstyle.patch
? gtk/core.8478
? gtk/finalpaned
? gtk/flipping.patch
? gtk/gtkcellrenderertext.c.layout-caching
? gtk/gtklabel.ac
? gtk/gtkmenu-explicit-triangle.c
? gtk/gtkmenu.ac
? gtk/gtkmenubar.with_init.c
? gtk/gtkrange.blah.c
? gtk/gtkstatusbar.ac
? gtk/gtkstyle-possible-fix.c
? gtk/gtkstyle.ac
? gtk/gtktreeviewcolumn.hacked.c
? gtk/hest
? gtk/menubar.diff
? gtk/menucrack.patch
? gtk/menulayout.patch
? gtk/menupatch
? gtk/menusofar
? gtk/nowrapping.patch
? gtk/paned-keyboard.patch
? gtk/patch
? gtk/prog
? gtk/progress.ac
? gtk/progresspatch
? gtk/progresstext.patch
? gtk/rangechanges
? gtk/rotated.diff
? gtk/scrolldif
? gtk/smooth
? gtk/smooth-plus-menu-nobg.patch
? gtk/smooth.patch
? gtk/smooth.patch.1
? gtk/so_far
? gtk/std
? gtk/stylediff
? gtk/survival.patch
? gtk/tempfix
? gtk/treescroll.patch
? gtk/unch
? tests/asdf
? tests/testgtk.patch
? tests/testgtkdiff
Index: configure.in
===================================================================
RCS file: /cvs/gnome/gtk+/configure.in,v
retrieving revision 1.334
diff -u -p -u -r1.334 configure.in
--- configure.in	30 Jun 2003 22:30:52 -0000	1.334
+++ configure.in	4 Jul 2003 14:26:13 -0000
@@ -315,7 +315,7 @@ PKG_CHECK_MODULES(BASE_DEPENDENCIES,
 if test "$os_win32" != yes; then
     # libtool option to control which symbols are exported
     # right now, symbols starting with _ are not exported
-    LIBTOOL_EXPORT_OPTIONS='-export-symbols-regex "^[[^_]].*"'
+    LIBTOOL_EXPORT_OPTIONS=#'-export-symbols-regex "^[[^_]].*"'
 else
     # We currently use .def files on Windows (for gdk-pixbuf, gdk and gtk)
     LIBTOOL_EXPORT_OPTIONS=
Index: gtk/gtkcheckmenuitem.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtkcheckmenuitem.c,v
retrieving revision 1.43
diff -u -p -u -r1.43 gtkcheckmenuitem.c
--- gtk/gtkcheckmenuitem.c	4 Jun 2003 22:44:10 -0000	1.43
+++ gtk/gtkcheckmenuitem.c	4 Jul 2003 14:26:16 -0000
@@ -231,9 +231,15 @@ static void
 gtk_check_menu_item_toggle_size_request (GtkMenuItem *menu_item,
 					 gint        *requisition)
 {
+  guint icon_spacing;
+  
   g_return_if_fail (GTK_IS_CHECK_MENU_ITEM (menu_item));
-
-  *requisition = CHECK_TOGGLE_SIZE;
+  
+  gtk_widget_style_get (GTK_WIDGET (menu_item),
+			"icon_spacing", &icon_spacing,
+			NULL);
+  
+  *requisition = CHECK_TOGGLE_SIZE + icon_spacing;
 }
 
 void
@@ -348,20 +354,42 @@ gtk_real_check_menu_item_draw_indicator 
   GtkShadowType shadow_type;
   gint width, height;
   gint x, y;
-  gint offset;
 
   if (GTK_WIDGET_DRAWABLE (check_menu_item))
     {
+      guint offset;
+      guint toggle_size;
+      guint icon_spacing;
+      guint horizontal_padding;
+      
       widget = GTK_WIDGET (check_menu_item);
 
+      gtk_widget_style_get (GTK_WIDGET (check_menu_item),
+ 			    "icon_spacing", &icon_spacing,
+ 			    "horizontal_padding", &horizontal_padding,
+ 			    NULL);
+
       width = 8;
       height = 8;
+
+      toggle_size = GTK_MENU_ITEM (check_menu_item)->toggle_size;
+      offset = GTK_CONTAINER (check_menu_item)->border_width + widget->style->xthickness;
+      
       offset = GTK_CONTAINER (check_menu_item)->border_width +
-	widget->style->xthickness + 2;
-      if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) 
-	x = widget->allocation.x + offset;
+	widget->style->xthickness + 2; 
+
+      if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR)
+	{
+	  x = widget->allocation.x + offset + horizontal_padding +
+	    (toggle_size - icon_spacing - width) / 2;
+	}
       else 
-	x = widget->allocation.x + widget->allocation.width - width - offset;
+	{
+	  x = widget->allocation.x + widget->allocation.width -
+	    offset - horizontal_padding - toggle_size + icon_spacing +
+	    (toggle_size - icon_spacing - width) / 2;
+	}
+      
       y = widget->allocation.y + (widget->allocation.height - height) / 2;
 
       if (check_menu_item->active ||
Index: gtk/gtkimagemenuitem.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtkimagemenuitem.c,v
retrieving revision 1.18
diff -u -p -u -r1.18 gtkimagemenuitem.c
--- gtk/gtkimagemenuitem.c	2 Nov 2002 00:18:14 -0000	1.18
+++ gtk/gtkimagemenuitem.c	4 Jul 2003 14:26:16 -0000
@@ -185,7 +185,15 @@ gtk_image_menu_item_toggle_size_request 
   GtkImageMenuItem *image_menu_item = GTK_IMAGE_MENU_ITEM (menu_item);
 
   if (image_menu_item->image)
-    *requisition = image_menu_item->image->requisition.width;
+    {
+      guint icon_spacing;
+
+      gtk_widget_style_get (GTK_WIDGET (menu_item),
+			    "icon_spacing", &icon_spacing,
+			    NULL);
+      
+      *requisition = image_menu_item->image->requisition.width + icon_spacing;
+    }
   else
     *requisition = 0;
 }
@@ -237,6 +245,12 @@ gtk_image_menu_item_size_allocate (GtkWi
     {
       gint width, height, x, y, offset;
       GtkAllocation child_allocation;
+      guint horizontal_padding, icon_spacing;
+
+      gtk_widget_style_get (widget,
+			    "horizontal_padding", &horizontal_padding,
+			    "icon_spacing", &icon_spacing,
+			    NULL);
       
       /* Man this is lame hardcoding action, but I can't
        * come up with a solution that's really better.
@@ -245,14 +259,22 @@ gtk_image_menu_item_size_allocate (GtkWi
       width = image_menu_item->image->requisition.width;
       height = image_menu_item->image->requisition.height;
       offset = GTK_CONTAINER (image_menu_item)->border_width +
-	widget->style->xthickness; 
+	widget->style->xthickness;
 
       if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) 
-	  x = offset + (GTK_MENU_ITEM (image_menu_item)->toggle_size - width) / 2;
-	else
-	x = widget->allocation.width - 
-	  GTK_MENU_ITEM (image_menu_item)->toggle_size - offset +
-	  (GTK_MENU_ITEM (image_menu_item)->toggle_size - width) / 2;
+	{
+	  x = offset + horizontal_padding +
+	      (GTK_MENU_ITEM (image_menu_item)->toggle_size -
+	       icon_spacing - width) / 2;
+	}
+      else
+	{
+	  x = widget->allocation.width - offset - horizontal_padding -
+	      GTK_MENU_ITEM (image_menu_item)->toggle_size + icon_spacing +
+	      (GTK_MENU_ITEM (image_menu_item)->toggle_size -
+	       icon_spacing - width) / 2;
+	}
+
       y = (widget->allocation.height - height) / 2;
 
       child_allocation.width = width;
Index: gtk/gtkmenu.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtkmenu.c,v
retrieving revision 1.130
diff -u -p -u -r1.130 gtkmenu.c
--- gtk/gtkmenu.c	28 Feb 2003 01:45:48 -0000	1.130
+++ gtk/gtkmenu.c	4 Jul 2003 14:26:18 -0000
@@ -265,6 +265,15 @@ gtk_menu_class_init (GtkMenuClass *class
                                                         "",
                                                         G_PARAM_READABLE | G_PARAM_WRITABLE));
 
+  gtk_widget_class_install_style_property (widget_class,
+					   g_param_spec_int ("vertical-padding",
+							     _("Vertical Padding"),
+							     _("Extra space at the top and bottom of the menu"),
+							     0,
+							     G_MAXINT,
+							     1,
+							     G_PARAM_READABLE));
+
   object_class->destroy = gtk_menu_destroy;
   
   widget_class->realize = gtk_menu_realize;
@@ -1489,7 +1498,8 @@ gtk_menu_realize (GtkWidget *widget)
   GtkMenu *menu;
   GtkWidget *child;
   GList *children;
-
+  guint vertical_padding;
+  
   g_return_if_fail (GTK_IS_MENU (widget));
 
   menu = GTK_MENU (widget);
@@ -1514,9 +1524,13 @@ gtk_menu_realize (GtkWidget *widget)
   gdk_window_set_user_data (widget->window, widget);
   
   border_width = GTK_CONTAINER (widget)->border_width;
+
+  gtk_widget_style_get (GTK_WIDGET (menu),
+			"vertical-padding", &vertical_padding,
+			NULL);
   
   attributes.x = border_width + widget->style->xthickness;
-  attributes.y = border_width + widget->style->ythickness;
+  attributes.y = border_width + widget->style->ythickness + vertical_padding;
   attributes.width = MAX (1, widget->allocation.width - attributes.x * 2);
   attributes.height = MAX (1, widget->allocation.height - attributes.y * 2);
 
@@ -1533,7 +1547,7 @@ gtk_menu_realize (GtkWidget *widget)
 
   attributes.x = 0;
   attributes.y = 0;
-  attributes.height = MAX (1, widget->requisition.height - (border_width + widget->style->ythickness) * 2);
+  attributes.height = MAX (1, widget->requisition.height - (border_width + widget->style->ythickness + vertical_padding) * 2);
   
   menu->bin_window = gdk_window_new (menu->view_window, &attributes, attributes_mask);
   gdk_window_set_user_data (menu->bin_window, menu);
@@ -1648,6 +1662,7 @@ gtk_menu_size_request (GtkWidget      *w
   GList *children;
   guint max_toggle_size;
   guint max_accel_width;
+  guint vertical_padding;
   GtkRequisition child_requisition;
   
   g_return_if_fail (GTK_IS_MENU (widget));
@@ -1689,11 +1704,15 @@ gtk_menu_size_request (GtkWidget      *w
 	  max_accel_width = MAX (max_accel_width, GTK_MENU_ITEM (child)->accelerator_width);
 	}
     }
-  
+
   requisition->width += max_toggle_size + max_accel_width;
   requisition->width += (GTK_CONTAINER (menu)->border_width +
 			 widget->style->xthickness) * 2;
-  requisition->height += (GTK_CONTAINER (menu)->border_width +
+
+  gtk_widget_style_get (GTK_WIDGET (menu),
+			"vertical-padding", &vertical_padding,
+			NULL);
+  requisition->height += (GTK_CONTAINER (menu)->border_width + vertical_padding +
 			  widget->style->ythickness) * 2;
   
   menu->toggle_size = max_toggle_size;
@@ -1715,6 +1734,7 @@ gtk_menu_size_allocate (GtkWidget     *w
   GList *children;
   gint x, y;
   gint width, height;
+  guint vertical_padding;
 
   g_return_if_fail (GTK_IS_MENU (widget));
   g_return_if_fail (allocation != NULL);
@@ -1724,9 +1744,13 @@ gtk_menu_size_allocate (GtkWidget     *w
 
   widget->allocation = *allocation;
 
-  x = GTK_CONTAINER (menu)->border_width + widget->style->xthickness;
-  y = GTK_CONTAINER (menu)->border_width + widget->style->ythickness;
+  gtk_widget_style_get (GTK_WIDGET (menu),
+			"vertical-padding", &vertical_padding,
+			NULL);
   
+  x = GTK_CONTAINER (menu)->border_width + widget->style->xthickness;
+  y = GTK_CONTAINER (menu)->border_width + widget->style->ythickness + vertical_padding;
+
   width = MAX (1, allocation->width - x * 2);
   height = MAX (1, allocation->height - y * 2);
 
@@ -1776,6 +1800,7 @@ gtk_menu_size_allocate (GtkWidget     *w
 
 	      gtk_menu_item_toggle_size_allocate (GTK_MENU_ITEM (child),
 						  menu->toggle_size);
+
 	      gtk_widget_size_allocate (child, &child_allocation);
 	      gtk_widget_queue_draw (child);
 	      
@@ -1838,17 +1863,25 @@ gtk_menu_paint (GtkWidget      *widget,
   GtkMenu *menu;
   gint width, height;
   gint border_x, border_y;
+  guint vertical_padding;
   
   g_return_if_fail (GTK_IS_MENU (widget));
 
   menu = GTK_MENU (widget);
+
+  gtk_widget_style_get (GTK_WIDGET (menu),
+			"vertical-padding", &vertical_padding,
+			NULL);
   
   border_x = GTK_CONTAINER (widget)->border_width + widget->style->xthickness;
-  border_y = GTK_CONTAINER (widget)->border_width + widget->style->ythickness;
+  border_y = GTK_CONTAINER (widget)->border_width + widget->style->ythickness + vertical_padding;
   gdk_drawable_get_size (widget->window, &width, &height);
 
   if (event->window == widget->window)
     {
+      gint arrow_space = MENU_SCROLL_ARROW_HEIGHT - 2 * widget->style->ythickness;
+      gint arrow_size = 0.7 * arrow_space;
+	
       gtk_paint_box (widget->style,
 		     widget->window,
 		     GTK_STATE_NORMAL,
@@ -1865,7 +1898,7 @@ gtk_menu_paint (GtkWidget      *widget,
 			 NULL, widget, "menu",
 			 border_x,
 			 border_y,
-			 width - 2*border_x,
+			 width - 2 * border_x,
 			 MENU_SCROLL_ARROW_HEIGHT);
 	  
 	  gtk_paint_arrow (widget->style,
@@ -1873,13 +1906,12 @@ gtk_menu_paint (GtkWidget      *widget,
 			   menu->upper_arrow_prelight ?
 			   GTK_STATE_PRELIGHT : GTK_STATE_NORMAL,
 			   GTK_SHADOW_OUT,
-			   NULL, widget, "menu",
+			   NULL, widget, "menu_scroll_arrow_up",
 			   GTK_ARROW_UP,
 			   TRUE,
-			   width / 2 - MENU_SCROLL_ARROW_HEIGHT / 2 + 1,
-			   2 * border_y + 1,
-			   MENU_SCROLL_ARROW_HEIGHT - 2 * border_y - 2,
-			   MENU_SCROLL_ARROW_HEIGHT - 2 * border_y - 2);
+			   (width - arrow_size ) / 2,
+			   border_y + widget->style->ythickness + (arrow_space - arrow_size)/2,
+			   arrow_size, arrow_size);
 	}
   
       if (menu->lower_arrow_visible && !menu->tearoff_active)
@@ -1891,7 +1923,7 @@ gtk_menu_paint (GtkWidget      *widget,
 			 GTK_SHADOW_OUT,
 			 NULL, widget, "menu",
 			 border_x,
-			 height - border_y - MENU_SCROLL_ARROW_HEIGHT + 1,
+			 height - border_y - MENU_SCROLL_ARROW_HEIGHT,
 			 width - 2*border_x,
 			 MENU_SCROLL_ARROW_HEIGHT);
 	  
@@ -1900,13 +1932,13 @@ gtk_menu_paint (GtkWidget      *widget,
 			   menu->lower_arrow_prelight ?
 			   GTK_STATE_PRELIGHT : GTK_STATE_NORMAL,
 			   GTK_SHADOW_OUT,
-			   NULL, widget, "menu",
+			   NULL, widget, "menu_scroll_arrow_down",
 			   GTK_ARROW_DOWN,
 			   TRUE,
-			   width / 2 - MENU_SCROLL_ARROW_HEIGHT / 2 + 1,
-			   height - MENU_SCROLL_ARROW_HEIGHT + 1,
-			   MENU_SCROLL_ARROW_HEIGHT - 2 * border_y - 2,
-			   MENU_SCROLL_ARROW_HEIGHT - 2 * border_y - 2);
+			   (width - arrow_size) / 2,
+			   height - border_y - MENU_SCROLL_ARROW_HEIGHT +
+			      widget->style->ythickness + (arrow_space - arrow_size)/2,
+			   arrow_size, arrow_size);
 	}
     }
 }
@@ -2242,13 +2274,19 @@ gtk_menu_handle_scrolling (GtkMenu *menu
   GdkRectangle rect;
   gboolean in_arrow;
   gboolean scroll_fast = FALSE;
+  guint vertical_padding;
 
   menu_shell = GTK_MENU_SHELL (menu);
 
   gdk_window_get_pointer (GTK_WIDGET (menu)->window, &x, &y, NULL);
   gdk_drawable_get_size (GTK_WIDGET (menu)->window, &width, &height);
 
-  border = GTK_CONTAINER (menu)->border_width + GTK_WIDGET (menu)->style->ythickness;
+  gtk_widget_style_get (GTK_WIDGET (menu),
+			"vertical-padding", &vertical_padding,
+			NULL);
+  
+  border = GTK_CONTAINER (menu)->border_width +
+    GTK_WIDGET (menu)->style->ythickness + vertical_padding;
 
   if (menu->upper_arrow_visible && !menu->tearoff_active)
     {
@@ -2783,6 +2821,7 @@ gtk_menu_scroll_to (GtkMenu *menu,
   gint border_width;
   gboolean last_visible;
   gint menu_height;
+  guint vertical_padding;
 
   widget = GTK_WIDGET (menu);
 
@@ -2800,13 +2839,18 @@ gtk_menu_scroll_to (GtkMenu *menu,
   view_width = widget->allocation.width;
   view_height = widget->allocation.height;
 
+  gtk_widget_style_get (GTK_WIDGET (menu),
+ 			"vertical-padding", &vertical_padding,
+ 			NULL);
+  
   border_width = GTK_CONTAINER (menu)->border_width;
   view_width -= (border_width + widget->style->xthickness) * 2;
-  view_height -= (border_width + widget->style->ythickness) * 2;
-  menu_height = widget->requisition.height - (border_width + widget->style->ythickness) * 2;
+  view_height -= (border_width + widget->style->ythickness + vertical_padding) * 2;
+  menu_height = widget->requisition.height -
+      (border_width + widget->style->ythickness + vertical_padding) * 2;
 
   x = border_width + widget->style->xthickness;
-  y = border_width + widget->style->ythickness;
+  y = border_width + widget->style->ythickness + vertical_padding;
 
   if (!menu->tearoff_active)
     {
@@ -2823,7 +2867,10 @@ gtk_menu_scroll_to (GtkMenu *menu,
 	  
 	  /* If we hid the upper arrow, possibly remove timeout */
 	  if (menu->scroll_step < 0)
-	    gtk_menu_stop_scrolling (menu);
+	    {
+	      gtk_menu_stop_scrolling (menu);
+	      gtk_widget_queue_draw (GTK_WIDGET (menu));
+	    }
 	}
 
       last_visible = menu->lower_arrow_visible;
@@ -2839,7 +2886,10 @@ gtk_menu_scroll_to (GtkMenu *menu,
 	  
 	  /* If we hid the lower arrow, possibly remove timeout */
 	  if (menu->scroll_step > 0)
-	    gtk_menu_stop_scrolling (menu);
+	    {
+	      gtk_menu_stop_scrolling (menu);
+	      gtk_widget_queue_draw (GTK_WIDGET (menu));
+	    }
 	}
       
       if (menu->upper_arrow_visible)
@@ -2926,10 +2976,16 @@ gtk_menu_scroll_item_visible (GtkMenuShe
   if (compute_child_offset (menu, menu_item,
 			    &child_offset, &child_height, &last_child))
     {
+      guint vertical_padding;
+      
       y = menu->scroll_offset;
       gdk_drawable_get_size (GTK_WIDGET (menu)->window, &width, &height);
 
-      height -= 2*GTK_CONTAINER (menu)->border_width + 2*GTK_WIDGET (menu)->style->ythickness;
+      gtk_widget_style_get (GTK_WIDGET (menu),
+			    "vertical-padding", &vertical_padding,
+			    NULL);
+			    
+      height -= 2*GTK_CONTAINER (menu)->border_width + 2*GTK_WIDGET (menu)->style->ythickness + 2*vertical_padding;
       
       if (child_offset < y)
 	{
Index: gtk/gtkmenuitem.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtkmenuitem.c,v
retrieving revision 1.96
diff -u -p -u -r1.96 gtkmenuitem.c
--- gtk/gtkmenuitem.c	28 Feb 2003 01:45:48 -0000	1.96
+++ gtk/gtkmenuitem.c	4 Jul 2003 14:26:19 -0000
@@ -35,9 +35,6 @@
 #include "gtkmenuitem.h"
 #include "gtkseparatormenuitem.h"
 
-
-#define BORDER_SPACING  3
-
 #define MENU_ITEM_CLASS(w)  GTK_MENU_ITEM_CLASS (GTK_OBJECT (w)->klass)
 
 
@@ -211,6 +208,33 @@ gtk_menu_item_class_init (GtkMenuItemCla
 								     GTK_SHADOW_NONE,
 								     G_PARAM_READABLE),
 						  gtk_rc_property_parse_enum);
+
+  gtk_widget_class_install_style_property (widget_class,
+					   g_param_spec_int ("horizontal_padding",
+							     "Horizontal Padding",
+							     "Padding to left and right of the menu item",
+							     0,
+							     G_MAXINT,
+							     3,
+							     G_PARAM_READABLE));
+
+  gtk_widget_class_install_style_property (widget_class,
+					   g_param_spec_int ("icon_spacing",
+							     "Icon Spacing",
+							     "Space between icon and label",
+							     0,
+							     G_MAXINT,
+							     5,
+							     G_PARAM_READABLE));
+
+  gtk_widget_class_install_style_property (widget_class,
+					   g_param_spec_int ("arrow_spacing",
+							     "Arrow Spacing",
+							     "Space between label and arrow",
+							     0,
+							     G_MAXINT,
+							     3,
+							     G_PARAM_READABLE));
 }
 
 static void
@@ -449,16 +473,20 @@ gtk_menu_item_size_request (GtkWidget   
   GtkMenuItem *menu_item;
   GtkBin *bin;
   guint accel_width;
+  guint horizontal_padding;
 
   g_return_if_fail (GTK_IS_MENU_ITEM (widget));
   g_return_if_fail (requisition != NULL);
 
+  gtk_widget_style_get (widget,
+ 			"horizontal padding", &horizontal_padding,
+			NULL);
+  
   bin = GTK_BIN (widget);
   menu_item = GTK_MENU_ITEM (widget);
 
   requisition->width = (GTK_CONTAINER (widget)->border_width +
-			widget->style->xthickness +
-			BORDER_SPACING) * 2;
+			widget->style->xthickness + horizontal_padding) * 2;
   requisition->height = (GTK_CONTAINER (widget)->border_width +
 			 widget->style->ythickness) * 2;
 
@@ -472,7 +500,21 @@ gtk_menu_item_size_request (GtkWidget   
       requisition->height += child_requisition.height;
 
       if (menu_item->submenu && menu_item->show_submenu_indicator)
-	requisition->width += child_requisition.height;
+	{
+	  guint arrow_spacing;
+	  
+	  gtk_widget_style_get (widget,
+				"arrow_spacing", &arrow_spacing,
+				NULL);
+
+	  requisition->width += child_requisition.height;
+	  requisition->width += arrow_spacing;
+	}
+    }
+  else
+    {
+      /* separator item */
+      requisition->height += 4;
     }
 
   accel_width = 0;
@@ -504,10 +546,15 @@ gtk_menu_item_size_allocate (GtkWidget  
   if (bin->child)
     {
       GtkRequisition child_requisition;
+      guint horizontal_padding;
+
+      gtk_widget_style_get (widget,
+			    "horizontal_padding", &horizontal_padding,
+			    NULL);
       
       child_allocation.x = (GTK_CONTAINER (widget)->border_width +
                             widget->style->xthickness +
-			    BORDER_SPACING);
+			    horizontal_padding);
       child_allocation.y = (GTK_CONTAINER (widget)->border_width +
 			    widget->style->ythickness);
       child_allocation.width = MAX (1, (gint)allocation->width - child_allocation.x * 2);
@@ -649,29 +696,36 @@ gtk_menu_item_paint (GtkWidget    *widge
 	  gint arrow_x, arrow_y;
 	  gint arrow_size;
 	  gint arrow_extent;
+	  guint horizontal_padding;
 	  GtkTextDirection direction;
 	  GtkArrowType arrow_type;
 
 	  direction = gtk_widget_get_direction (widget);
       
+ 	  gtk_widget_style_get (widget,
+ 				"horizontal_padding", &horizontal_padding,
+ 				NULL);
+ 	  
 	  gtk_widget_get_child_requisition (GTK_BIN (menu_item)->child,
 					    &child_requisition);
 
 	  arrow_size = child_requisition.height - 2 * widget->style->ythickness;
-	  arrow_extent = arrow_size * 0.6;
+	  arrow_extent = arrow_size * 0.8;
 	  
 	  shadow_type = GTK_SHADOW_OUT;
 	  if (state_type == GTK_STATE_PRELIGHT)
 	    shadow_type = GTK_SHADOW_IN;
 
-	  if (direction == GTK_TEXT_DIR_LTR) {
-	    arrow_x = x + width - 1 - arrow_size + (arrow_size - arrow_extent) / 2;
-	    arrow_type = GTK_ARROW_RIGHT;
-	  }
-	  else {
-	    arrow_x = x + 1 + (arrow_size - arrow_extent) / 2;
-	    arrow_type = GTK_ARROW_LEFT;
-	  }
+	  if (direction == GTK_TEXT_DIR_LTR)
+	    {
+	      arrow_x = x + width - horizontal_padding - arrow_extent;
+	      arrow_type = GTK_ARROW_RIGHT;
+	    }
+	  else
+	    {
+	      arrow_x = x + horizontal_padding;
+	      arrow_type = GTK_ARROW_LEFT;
+	    }
 
 	  arrow_y = y + (height - arrow_extent) / 2;
 
@@ -684,10 +738,18 @@ gtk_menu_item_paint (GtkWidget    *widge
 	}
       else if (!GTK_BIN (menu_item)->child)
 	{
+	  guint horizontal_padding;
+
+	  gtk_widget_style_get (widget,
+				"horizontal_padding", &horizontal_padding,
+				NULL);
+	  
 	  gtk_paint_hline (widget->style, widget->window, GTK_STATE_NORMAL,
 			   area, widget, "menuitem",
-			   widget->allocation.x, widget->allocation.width,
-			   widget->allocation.y);
+			   widget->allocation.x + horizontal_padding + widget->style->xthickness,
+			   widget->allocation.x + widget->allocation.width - horizontal_padding - widget->style->xthickness,
+			   widget->allocation.y + (widget->allocation.height -
+						   widget->style->ythickness) / 2);
 	}
     }
 }
Index: gtk/gtkradiomenuitem.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtkradiomenuitem.c,v
retrieving revision 1.26
diff -u -p -u -r1.26 gtkradiomenuitem.c
--- gtk/gtkradiomenuitem.c	4 Jun 2003 22:44:10 -0000	1.26
+++ gtk/gtkradiomenuitem.c	4 Jul 2003 14:26:19 -0000
@@ -312,16 +312,35 @@ gtk_radio_menu_item_draw_indicator (GtkC
 
   if (GTK_WIDGET_DRAWABLE (check_menu_item))
     {
+      guint horizontal_padding;
+      guint icon_spacing;
+      guint toggle_size;
+      
       widget = GTK_WIDGET (check_menu_item);
 
+      gtk_widget_style_get (GTK_WIDGET (check_menu_item),
+ 			    "icon_spacing", &icon_spacing,
+ 			    "horizontal_padding", &horizontal_padding,
+ 			    NULL);
+
       width = 8;
       height = 8;
+      toggle_size = GTK_MENU_ITEM (check_menu_item)->toggle_size;
       offset = GTK_CONTAINER (check_menu_item)->border_width +
 	widget->style->xthickness + 2;
+
       if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR) 
-	x = widget->allocation.x + offset;
+	{
+	  x = widget->allocation.x + offset + horizontal_padding +
+	    (toggle_size - icon_spacing - width) / 2;
+	}
       else 
-	x = widget->allocation.x + widget->allocation.width - width - offset;
+	{
+	  x = widget->allocation.x + widget->allocation.width -
+	    offset - horizontal_padding - toggle_size + icon_spacing +
+	    (toggle_size - icon_spacing - width) / 2;
+	}
+
       y = widget->allocation.y + (widget->allocation.height - height) / 2;
 
       if (check_menu_item->active ||
Index: gtk/gtkstyle.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtkstyle.c,v
retrieving revision 1.142
diff -u -p -u -r1.142 gtkstyle.c
--- gtk/gtkstyle.c	15 Apr 2003 22:51:02 -0000	1.142
+++ gtk/gtkstyle.c	4 Jul 2003 14:26:23 -0000
@@ -35,6 +35,7 @@
 #include "gtkthemes.h"
 #include "gtkiconfactory.h"
 #include "gtksettings.h"	/* _gtk_settings_parse_convert() */
+#include "gtkhandlebox.h"
 
 #define LIGHTNESS_MULT  1.3
 #define DARKNESS_MULT   0.7
@@ -2436,6 +2437,66 @@ draw_spinbutton_shadow (GtkStyle        
 }
 
 static void
+draw_menu_shadow (GtkStyle        *style,
+		  GdkWindow       *window,
+		  GtkStateType     state,
+		  GdkRectangle    *area,
+		  gint             x,
+		  gint             y,
+		  gint             width,
+		  gint             height)
+{
+  if (style->ythickness > 0)
+    {
+      if (style->ythickness > 1)
+	{
+	  gdk_draw_line (window, style->dark_gc[state],
+			 x + 1, y + height - 2, x + width - 2, y + height - 2);
+	  gdk_draw_line (window, style->black_gc,
+			 x, y + height - 1, x + width - 1, y + height - 1);
+	}
+      else
+	{
+	  gdk_draw_line (window, style->dark_gc[state],
+			 x + 1, y + height - 1, x + width - 1, y + height - 1);
+	}
+    }
+  
+  if (style->xthickness > 0)
+    {
+      if (style->xthickness > 1)
+	{
+	  gdk_draw_line (window, style->dark_gc[state],
+			 x + width - 2, y + 1, x + width - 2, y + height - 2);
+	  
+	  gdk_draw_line (window, style->black_gc,
+			 x + width - 1, y, x + width - 1, y + height - 1);
+	}
+      else
+	{
+	  gdk_draw_line (window, style->dark_gc[state],
+			 x + width - 1, y + 1, x + width - 1, y + height - 1);
+	}
+    }
+  
+  /* Light around top and left */
+  
+  if (style->ythickness > 0)
+    gdk_draw_line (window, style->black_gc,
+		   x, y, x + width - 2, y);
+  if (style->xthickness > 0)
+    gdk_draw_line (window, style->black_gc,
+		   x, y, x, y + height - 2);
+  
+  if (style->ythickness > 1)
+    gdk_draw_line (window, style->light_gc[state],
+		   x + 1, y + 1, x + width - 3, y + 1);
+  if (style->xthickness > 1)
+    gdk_draw_line (window, style->light_gc[state],
+		   x + 1, y + 1, x + 1, y + height - 3);
+}
+
+static void
 gtk_default_draw_shadow (GtkStyle      *style,
                          GdkWindow     *window,
                          GtkStateType   state_type,
@@ -2483,6 +2544,12 @@ gtk_default_draw_shadow (GtkStyle      *
 	  return;
 	}
     }
+
+  if (shadow_type == GTK_SHADOW_OUT && detail && strcmp (detail, "menu") == 0)
+    {
+      draw_menu_shadow (style, window, state_type, area, x, y, width, height);
+      return;
+    }
   
   sanitize_size (window, &width, &height);
   
@@ -3034,6 +3101,9 @@ gtk_default_draw_arrow (GtkStyle      *s
       && gtk_widget_get_direction (widget) == GTK_TEXT_DIR_LTR)
     x = original_x + original_width - width;
 
+  if (detail && strcmp (detail, "menu_scroll_arrow_up") == 0)
+    y++;
+
   if (state == GTK_STATE_INSENSITIVE)
     draw_arrow (window, style->white_gc, area, arrow_type,
 		x + 1, y + 1, width, height);
@@ -6472,7 +6542,7 @@ style_unrealize_cursor_gcs (GtkStyle *st
 static GdkGC *
 make_cursor_gc (GtkWidget   *widget,
 		const gchar *property_name,
-		GdkColor    *fallback)
+		const GdkColor *fallback)
 {
   GdkGCValues gc_values;
   GdkGCValuesMask gc_values_mask;
Index: gtk/gtktearoffmenuitem.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtktearoffmenuitem.c,v
retrieving revision 1.14
diff -u -p -u -r1.14 gtktearoffmenuitem.c
--- gtk/gtktearoffmenuitem.c	2 Nov 2002 00:18:14 -0000	1.14
+++ gtk/gtktearoffmenuitem.c	4 Jul 2003 14:26:24 -0000
@@ -118,7 +118,7 @@ gtk_tearoff_menu_item_size_request (GtkW
     }
   else
     {
-      requisition->height += widget->style->ythickness;
+      requisition->height += widget->style->ythickness + 4;
     }
 }
 
