Index: gtk+-2.10.6/gtk/gtkarrow.c
===================================================================
--- gtk+-2.10.6.orig/gtk/gtkarrow.c	2006-05-14 05:25:28.000000000 +0100
+++ gtk+-2.10.6/gtk/gtkarrow.c	2006-11-14 12:03:45.000000000 +0000
@@ -31,7 +31,7 @@
 #include "gtkintl.h"
 #include "gtkalias.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);
 
 
 G_DEFINE_TYPE (GtkArrow, gtk_arrow, GTK_TYPE_MISC)
@@ -88,6 +90,7 @@
                                                       GTK_PARAM_READWRITE));
   
   widget_class->expose_event = gtk_arrow_expose;
+  widget_class->size_request = gtk_arrow_size_request;
 }
 
 static void
@@ -143,13 +146,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;
 }
Index: gtk+-2.10.6/gtk/gtkentry.c
===================================================================
--- gtk+-2.10.6.orig/gtk/gtkentry.c	2006-11-14 12:03:45.000000000 +0000
+++ gtk+-2.10.6/gtk/gtkentry.c	2006-11-14 12:07:02.000000000 +0000
@@ -577,6 +577,18 @@
 						       0.0,
 						       GTK_PARAM_READWRITE));
 
+  // Added by gtk+-handhelds.patch
+  gtk_widget_class_install_style_property (widget_class,
+                                         g_param_spec_int ("min_width",
+                                         P_("Minimum width"),
+                                         P_("Minimum width of the entry field"),
+                                         0,
+                                         G_MAXINT,
+                                         MIN_ENTRY_WIDTH,
+                                         G_PARAM_READABLE));
+
+
+
   /**
    * GtkEntry:truncate-multiline:
    *
@@ -1286,7 +1298,7 @@
 {
   GtkEntry *entry = GTK_ENTRY (widget);
   PangoFontMetrics *metrics;
-  gint xborder, yborder;
+  gint xborder, yborder, min_width;
   GtkBorder inner_border;
   PangoContext *context;
   
@@ -1302,8 +1314,10 @@
   _gtk_entry_get_borders (entry, &xborder, &yborder);
   _gtk_entry_effective_inner_border (entry, &inner_border);
 
+  gtk_widget_style_get (widget, "min_width", &min_width, NULL);
+
   if (entry->width_chars < 0)
-    requisition->width = MIN_ENTRY_WIDTH + xborder * 2 + inner_border.left + inner_border.right;
+    requisition->width = min_width + xborder * 2 + inner_border.left + inner_border.right;
   else
     {
       gint char_width = pango_font_metrics_get_approximate_char_width (metrics);
Index: gtk+-2.10.6/gtk/gtkrange.c
===================================================================
--- gtk+-2.10.6.orig/gtk/gtkrange.c	2006-11-14 12:03:44.000000000 +0000
+++ gtk+-2.10.6/gtk/gtkrange.c	2006-11-14 12:07:40.000000000 +0000
@@ -197,6 +197,7 @@
 static gboolean      gtk_range_key_press                (GtkWidget     *range,
 							 GdkEventKey   *event);
 
+static GdkAtom recognize_protocols_atom, atom_atom;
 
 static guint signals[LAST_SIGNAL];
 
@@ -213,6 +214,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);
+
   gobject_class->set_property = gtk_range_set_property;
   gobject_class->get_property = gtk_range_get_property;
   gobject_class->finalize = gtk_range_finalize;
@@ -1020,6 +1024,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);
 }
 
@@ -1569,7 +1579,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;
@@ -1778,7 +1788,7 @@
       return TRUE;
     }
 
-  return FALSE;
+  return TRUE;
 }
 
 /**