--- gtk+-2.4.1/gtk/gtkarrow.c	2004-03-13 09:51:13.000000000 +1100
+++ gtk+-2.4.1/gtk/gtkarrow.c	2004-05-26 14:52:17.000000000 +1000
@@ -29,7 +29,7 @@
 #include "gtkarrow.h"
 #include "gtkintl.h"
 
-#define MIN_ARROW_SIZE  15
+#define MIN_ARROW_SIZE  7
 
 enum {
   PROP_0,
@@ -53,6 +53,8 @@
 				    guint            prop_id,
 				    GValue          *value,
 				    GParamSpec      *pspec);
+static void gtk_arrow_size_request (GtkWidget *arrow, 
+				    GtkRequisition *requisition);
 
 GType
 gtk_arrow_get_type (void)
@@ -111,6 +113,7 @@
                                                       G_PARAM_READABLE | G_PARAM_WRITABLE));
   
   widget_class->expose_event = gtk_arrow_expose;
+  widget_class->size_request = gtk_arrow_size_request;
 }
 
 static void
@@ -166,13 +169,18 @@
 }
 
 static void
+gtk_arrow_size_request (GtkWidget *arrow, 
+			GtkRequisition *requisition)
+{
+  requisition->width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
+  requisition->height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
+}
+
+static void
 gtk_arrow_init (GtkArrow *arrow)
 {
   GTK_WIDGET_SET_FLAGS (arrow, GTK_NO_WINDOW);
 
-  GTK_WIDGET (arrow)->requisition.width = MIN_ARROW_SIZE + GTK_MISC (arrow)->xpad * 2;
-  GTK_WIDGET (arrow)->requisition.height = MIN_ARROW_SIZE + GTK_MISC (arrow)->ypad * 2;
-
   arrow->arrow_type = GTK_ARROW_RIGHT;
   arrow->shadow_type = GTK_SHADOW_OUT;
 }
--- gtk+-2.4.1/gtk/gtkcalendar.c	2004-03-06 14:37:26.000000000 +1100
+++ gtk+-2.4.1/gtk/gtkcalendar.c	2004-05-26 14:58:57.000000000 +1000
@@ -340,6 +340,9 @@
 static void gtk_calendar_select_and_focus_day (GtkCalendar *calendar,
 					       guint        day);
 
+static void gtk_calendar_do_select_day (GtkCalendar *calendar,
+					guint	      day);
+
 static void gtk_calendar_paint_arrow	(GtkWidget    *widget,
 					 guint	       arrow);
 static void gtk_calendar_paint_day_num	(GtkWidget    *widget,
@@ -861,13 +864,13 @@
   if (month_len < calendar->selected_day)
     {
       calendar->selected_day = 0;
-      gtk_calendar_select_day (calendar, month_len);
+      gtk_calendar_do_select_day (calendar, month_len);
     }
   else
     {
       if (calendar->selected_day < 0)
 	calendar->selected_day = calendar->selected_day + 1 + month_length[leap (calendar->year)][calendar->month + 1];
-      gtk_calendar_select_day (calendar, calendar->selected_day);
+      gtk_calendar_do_select_day (calendar, calendar->selected_day);
     }
 
   gtk_widget_queue_draw (GTK_WIDGET (calendar));
@@ -908,10 +911,10 @@
   if (month_len < calendar->selected_day)
     {
       calendar->selected_day = 0;
-      gtk_calendar_select_day (calendar, month_len);
+      gtk_calendar_do_select_day (calendar, month_len);
     }
   else
-    gtk_calendar_select_day (calendar, calendar->selected_day);
+    gtk_calendar_do_select_day (calendar, calendar->selected_day);
 
   gtk_widget_queue_draw (GTK_WIDGET (calendar));
   gtk_calendar_thaw (calendar);
@@ -939,10 +942,10 @@
   if (month_len < calendar->selected_day)
     {
       calendar->selected_day = 0;
-      gtk_calendar_select_day (calendar, month_len);
+      gtk_calendar_do_select_day (calendar, month_len);
     }
   else
-    gtk_calendar_select_day (calendar, calendar->selected_day);
+    gtk_calendar_do_select_day (calendar, calendar->selected_day);
   
   gtk_widget_queue_draw (GTK_WIDGET (calendar));
   gtk_calendar_thaw (calendar);
@@ -974,10 +977,10 @@
   if (month_len < calendar->selected_day)
     {
       calendar->selected_day = 0;
-      gtk_calendar_select_day (calendar, month_len);
+      gtk_calendar_do_select_day (calendar, month_len);
     }
   else
-    gtk_calendar_select_day (calendar, calendar->selected_day);
+    gtk_calendar_do_select_day (calendar, calendar->selected_day);
   
   gtk_widget_queue_draw (GTK_WIDGET (calendar));
   gtk_calendar_thaw (calendar);
@@ -2480,9 +2483,9 @@
   return TRUE;
 }
 
-void
-gtk_calendar_select_day (GtkCalendar *calendar,
-			 guint	      day)
+static void
+gtk_calendar_do_select_day (GtkCalendar *calendar,
+			    guint	      day)
 {
   g_return_if_fail (GTK_IS_CALENDAR (calendar));
   g_return_if_fail (day <= 31);
@@ -2499,6 +2502,13 @@
       if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar)))
 	gtk_calendar_paint_day_num (GTK_WIDGET (calendar), selected_day);
     }
+}
+
+void
+gtk_calendar_select_day (GtkCalendar *calendar,
+			 guint	      day)
+{
+  gtk_calendar_do_select_day (calendar, day);
   
   calendar->selected_day = day;
   
--- gtk+-2.4.1/gtk/gtkentry.c	2004-04-22 08:08:08.000000000 +1000
+++ gtk+-2.4.1/gtk/gtkentry.c	2004-05-26 14:52:17.000000000 +1000
@@ -557,6 +557,15 @@
 						       0.0,
 						       G_PARAM_READABLE | G_PARAM_WRITABLE));
   
+  gtk_widget_class_install_style_property (widget_class,
+					   g_param_spec_int ("min_width",
+                                                             _("Minimum width"),
+                                                             _("Minimum width of the entry field"),
+                                                             0,
+                                                             G_MAXINT,
+                                                             MIN_ENTRY_WIDTH,
+                                                             G_PARAM_READABLE));
+
   signals[POPULATE_POPUP] =
     g_signal_new ("populate_popup",
 		  G_OBJECT_CLASS_TYPE (gobject_class),
@@ -1124,7 +1133,7 @@
 {
   GtkEntry *entry = GTK_ENTRY (widget);
   PangoFontMetrics *metrics;
-  gint xborder, yborder;
+  gint xborder, yborder, min_width;
   PangoContext *context;
   
   gtk_widget_ensure_style (widget);
@@ -1140,9 +1149,11 @@
   
   xborder += INNER_BORDER;
   yborder += INNER_BORDER;
-  
+
+  gtk_widget_style_get (widget, "min_width", &min_width, NULL);
+
   if (entry->width_chars < 0)
-    requisition->width = MIN_ENTRY_WIDTH + xborder * 2;
+    requisition->width = min_width + xborder * 2;
   else
     {
       gint char_width = pango_font_metrics_get_approximate_char_width (metrics);
--- gtk+-2.4.1/gtk/gtkrange.c	2004-03-06 14:38:08.000000000 +1100
+++ gtk+-2.4.1/gtk/gtkrange.c	2004-05-26 14:52:17.000000000 +1000
@@ -180,6 +180,7 @@
 static GtkWidgetClass *parent_class = NULL;
 static guint signals[LAST_SIGNAL];
 
+static GdkAtom recognize_protocols_atom, atom_atom;
 
 GType
 gtk_range_get_type (void)
@@ -220,6 +221,9 @@
   object_class = (GtkObjectClass*) class;
   widget_class = (GtkWidgetClass*) class;
 
+  recognize_protocols_atom = gdk_atom_intern ("RECOGNIZE_PROTOCOLS", FALSE);
+  atom_atom = gdk_atom_intern ("ATOM", FALSE);
+
   parent_class = g_type_class_peek_parent (class);
 
   gobject_class->set_property = gtk_range_set_property;
@@ -815,6 +819,12 @@
 					&attributes, attributes_mask);
   gdk_window_set_user_data (range->event_window, range);
 
+  gdk_property_change (range->event_window,
+		       recognize_protocols_atom,
+		       atom_atom,
+		       32, GDK_PROP_MODE_REPLACE,
+		       NULL, 0);
+
   widget->style = gtk_style_attach (widget->style, widget->window);
 }
 
@@ -1186,7 +1196,7 @@
 
   /* ignore presses when we're already doing something else. */
   if (range->layout->grab_location != MOUSE_OUTSIDE)
-    return FALSE;
+    return TRUE;
 
   range->layout->mouse_x = event->x;
   range->layout->mouse_y = event->y;
@@ -1364,7 +1374,7 @@
       return TRUE;
     }
 
-  return FALSE;
+  return TRUE;
 }
 
 /**