Index: gtk/gtkdnd.c
===================================================================
--- gtk/gtkdnd.c	(revision 17182)
+++ gtk/gtkdnd.c	(working copy)
@@ -982,7 +982,7 @@ gtk_drag_highlight_expose (GtkWidget    
       
       gtk_paint_shadow (widget->style, widget->window,
 		        GTK_STATE_NORMAL, GTK_SHADOW_OUT,
-		        NULL, widget, "dnd",
+		        &event->area, widget, "dnd",
 			x, y, width, height);
 
       cr = gdk_cairo_create (widget->window);
Index: gtk/gtktreeview.c
===================================================================
--- gtk/gtktreeview.c	(revision 17182)
+++ gtk/gtktreeview.c	(working copy)
@@ -4628,7 +4628,7 @@ gtk_tree_view_bin_expose (GtkWidget     
 		gtk_paint_focus (widget->style,
 			         tree_view->priv->bin_window,
 				 GTK_WIDGET_STATE (widget),
-				 NULL,
+				 &event->area,
 				 widget,
 				 (is_first
 				  ? (is_last ? "treeview-drop-indicator" : "treeview-drop-indicator-left" )
@@ -4641,7 +4641,7 @@ gtk_tree_view_bin_expose (GtkWidget     
 		gtk_paint_focus (widget->style,
 			         tree_view->priv->bin_window,
 				 GTK_WIDGET_STATE (widget),
-				 NULL,
+				 &event->area,
 				 widget,
 				 "treeview-drop-indicator",
 				 0, BACKGROUND_FIRST_PIXEL (tree_view, tree, node)
@@ -4695,7 +4695,7 @@ gtk_tree_view_bin_expose (GtkWidget     
 	    gtk_paint_focus (widget->style,
 			     tree_view->priv->bin_window,
 			     focus_rect_state,
-			     NULL,
+			     &event->area,
 			     widget,
 			     (is_first
 			      ? (is_last ? "treeview" : "treeview-left" )
@@ -4706,7 +4706,7 @@ gtk_tree_view_bin_expose (GtkWidget     
 	    gtk_paint_focus (widget->style,
 			     tree_view->priv->bin_window,
 			     focus_rect_state,
-			     NULL,
+			     &event->area,
 			     widget,
 			     "treeview",
 			     0, tmp_y,
Index: gtk/gtkentry.c
===================================================================
--- gtk/gtkentry.c	(revision 17182)
+++ gtk/gtkentry.c	(working copy)
@@ -159,7 +159,8 @@ static void   gtk_entry_size_request    
 					      GtkRequisition   *requisition);
 static void   gtk_entry_size_allocate        (GtkWidget        *widget,
 					      GtkAllocation    *allocation);
-static void   gtk_entry_draw_frame           (GtkWidget        *widget);
+static void   gtk_entry_draw_frame           (GtkWidget        *widget,
+                                              GdkRectangle     *area);
 static gint   gtk_entry_expose               (GtkWidget        *widget,
 					      GdkEventExpose   *event);
 static gint   gtk_entry_button_press         (GtkWidget        *widget,
@@ -1505,7 +1506,8 @@ gtk_entry_size_allocate (GtkWidget     *
 }
 
 static void
-gtk_entry_draw_frame (GtkWidget *widget)
+gtk_entry_draw_frame (GtkWidget    *widget,
+                      GdkRectangle *area)
 {
   gint x = 0, y = 0;
   gint width, height;
@@ -1529,7 +1531,7 @@ gtk_entry_draw_frame (GtkWidget *widget)
 
   gtk_paint_shadow (widget->style, widget->window,
 		    GTK_STATE_NORMAL, GTK_SHADOW_IN,
-		    NULL, widget, "entry",
+		    area, widget, "entry",
 		    x, y, width, height);
 
   if (GTK_WIDGET_HAS_FOCUS (widget) && !interior_focus)
@@ -1540,7 +1542,7 @@ gtk_entry_draw_frame (GtkWidget *widget)
       height += 2 * focus_width;
       
       gtk_paint_focus (widget->style, widget->window, GTK_WIDGET_STATE (widget), 
-		       NULL, widget, "entry",
+		       area, widget, "entry",
 		       0, 0, width, height);
     }
 }
@@ -1552,7 +1554,7 @@ gtk_entry_expose (GtkWidget      *widget
   GtkEntry *entry = GTK_ENTRY (widget);
 
   if (widget->window == event->window)
-    gtk_entry_draw_frame (widget);
+    gtk_entry_draw_frame (widget, &event->area);
   else if (entry->text_area == event->window)
     {
       gint area_width, area_height;
@@ -1561,7 +1563,7 @@ gtk_entry_expose (GtkWidget      *widget
 
       gtk_paint_flat_box (widget->style, entry->text_area, 
 			  GTK_WIDGET_STATE(widget), GTK_SHADOW_NONE,
-			  NULL, widget, "entry_bg", 
+			  &event->area, widget, "entry_bg",
 			  0, 0, area_width, area_height);
       
       if ((entry->visible || entry->invisible_char != 0) &&
Index: gtk/gtkmenu.c
===================================================================
--- gtk/gtkmenu.c	(revision 17182)
+++ gtk/gtkmenu.c	(working copy)
@@ -2458,7 +2458,7 @@ gtk_menu_paint (GtkWidget      *widget,
 		     widget->window,
 		     GTK_STATE_NORMAL,
 		     GTK_SHADOW_OUT,
-		     NULL, widget, "menu",
+		     &event->area, widget, "menu",
 		     0, 0, -1, -1);
 
       if (menu->upper_arrow_visible && !menu->tearoff_active)
@@ -2477,7 +2477,7 @@ gtk_menu_paint (GtkWidget      *widget,
 			   widget->window,
 			   priv->upper_arrow_state,
 			   GTK_SHADOW_OUT,
-			   NULL, widget, "menu_scroll_arrow_up",
+			   &event->area, widget, "menu_scroll_arrow_up",
 			   GTK_ARROW_UP,
 			   TRUE,
 			   (width - arrow_size ) / 2,
@@ -2501,7 +2501,7 @@ gtk_menu_paint (GtkWidget      *widget,
 			   widget->window,
 			   priv->lower_arrow_state,
 			   GTK_SHADOW_OUT,
-			   NULL, widget, "menu_scroll_arrow_down",
+			   &event->area, widget, "menu_scroll_arrow_down",
 			   GTK_ARROW_DOWN,
 			   TRUE,
 			   (width - arrow_size) / 2,
Index: gtk/gtkcheckbutton.c
===================================================================
--- gtk/gtkcheckbutton.c	(revision 17182)
+++ gtk/gtkcheckbutton.c	(working copy)
@@ -155,14 +155,14 @@ gtk_check_button_paint (GtkWidget    *wi
 	  
 	  if (interior_focus && child && GTK_WIDGET_VISIBLE (child))
 	    gtk_paint_focus (widget->style, widget->window, GTK_WIDGET_STATE (widget),
-			     NULL, widget, "checkbutton",
+			     area, widget, "checkbutton",
 			     child->allocation.x - focus_width - focus_pad,
 			     child->allocation.y - focus_width - focus_pad,
 			     child->allocation.width + 2 * (focus_width + focus_pad),
 			     child->allocation.height + 2 * (focus_width + focus_pad));
 	  else
 	    gtk_paint_focus (widget->style, widget->window, GTK_WIDGET_STATE (widget), 
-			     NULL, widget, "checkbutton",
+			     area, widget, "checkbutton",
 			     border_width + widget->allocation.x,
 			     border_width + widget->allocation.y,
 			     widget->allocation.width - 2 * border_width,
Index: gtk/gtkviewport.c
===================================================================
--- gtk/gtkviewport.c	(revision 17182)
+++ gtk/gtkviewport.c	(working copy)
@@ -656,7 +656,7 @@ gtk_viewport_paint (GtkWidget    *widget
 
       gtk_paint_shadow (widget->style, widget->window,
 			GTK_STATE_NORMAL, viewport->shadow_type,
-			NULL, widget, "viewport",
+			area, widget, "viewport",
 			0, 0, -1, -1);
     }
 }
