Index: gtkbutton.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtkbutton.c,v
retrieving revision 1.125
diff -u -p -u -r1.125 gtkbutton.c
--- gtkbutton.c	31 Mar 2005 17:04:25 -0000	1.125
+++ gtkbutton.c	22 Apr 2005 23:28:52 -0000
@@ -1078,7 +1078,7 @@ _gtk_button_paint (GtkButton    *button,
 			    "focus-line-width", &focus_width,
 			    "focus-padding", &focus_pad,
 			    NULL); 
-	
+      
       x = widget->allocation.x + border_width;
       y = widget->allocation.y + border_width;
       width = widget->allocation.width - border_width * 2;
@@ -1113,8 +1113,7 @@ _gtk_button_paint (GtkButton    *button,
 	  height -= 2 * (focus_width + focus_pad);
 	}
 
-      if (button->relief != GTK_RELIEF_NONE || button->depressed ||
-	  GTK_WIDGET_STATE(widget) == GTK_STATE_PRELIGHT)
+      if (button->relief != GTK_RELIEF_NONE || button->depressed || state_type == GTK_STATE_PRELIGHT)
 	gtk_paint_box (widget->style, widget->window,
 		       state_type,
 		       shadow_type, area, widget, "button",
@@ -1167,9 +1166,17 @@ gtk_button_expose (GtkWidget      *widge
   if (GTK_WIDGET_DRAWABLE (widget))
     {
       GtkButton *button = GTK_BUTTON (widget);
+      GtkStateType state_type;
+
+      state_type = GTK_WIDGET_STATE (widget);
+
+      if (state_type == GTK_STATE_PRELIGHT)
+	  state_type = GTK_STATE_NORMAL;
+      
+      if (button->in_button && !button->depressed)
+	state_type = GTK_STATE_PRELIGHT;
       
-      _gtk_button_paint (button, &event->area,
-			 GTK_WIDGET_STATE (widget),
+      _gtk_button_paint (button, &event->area, state_type,
 			 button->depressed ? GTK_SHADOW_IN : GTK_SHADOW_OUT,
 			 "button", "buttondefault");
       
Index: gtktogglebutton.c
===================================================================
RCS file: /cvs/gnome/gtk+/gtk/gtktogglebutton.c,v
retrieving revision 1.59
diff -u -p -u -r1.59 gtktogglebutton.c
--- gtktogglebutton.c	26 Mar 2005 05:49:14 -0000	1.59
+++ gtktogglebutton.c	22 Apr 2005 23:28:52 -0000
@@ -400,10 +400,16 @@ gtk_toggle_button_expose (GtkWidget     
     {
       GtkWidget *child = GTK_BIN (widget)->child;
       GtkButton *button = GTK_BUTTON (widget);
-      GtkStateType state_type;
       GtkShadowType shadow_type;
+      GtkStateType state_type;
 
       state_type = GTK_WIDGET_STATE (widget);
+
+      if (state_type == GTK_STATE_PRELIGHT)
+	state_type = GTK_STATE_NORMAL;
+
+      if (button->in_button && !button->depressed)
+	state_type = GTK_STATE_PRELIGHT;
       
       if (GTK_TOGGLE_BUTTON (widget)->inconsistent)
         {
