Index: gtkspinbutton.c
===================================================================
--- gtkspinbutton.c	(revisión: 17204)
+++ gtkspinbutton.c	(copia de trabajo)
@@ -204,7 +204,7 @@ gtk_spin_button_class_init (GtkSpinButto
                                                         P_("Adjustment"),
                                                         P_("The adjustment that holds the value of the spinbutton"),
                                                         GTK_TYPE_ADJUSTMENT,
-                                                        GTK_PARAM_READWRITE));
+                                                        GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT));
   
   g_object_class_install_property (gobject_class,
                                    PROP_CLIMB_RATE,
@@ -353,6 +353,20 @@ gtk_spin_button_editable_init (GtkEditab
 }
 
 static void
+gtk_spin_button_set_climb_rate (GtkSpinButton *spin_button,
+				gdouble climb_rate)
+{
+  g_object_freeze_notify (G_OBJECT (spin_button));
+
+  if (spin_button->climb_rate != climb_rate)
+    {
+      spin_button->climb_rate = climb_rate;
+      g_object_notify (G_OBJECT (spin_button), "climb-rate");
+    }
+  g_object_thaw_notify (G_OBJECT (spin_button));
+}
+
+static void
 gtk_spin_button_set_property (GObject      *object,
 			      guint         prop_id,
 			      const GValue *value,
@@ -373,16 +387,10 @@ gtk_spin_button_set_property (GObject   
       gtk_spin_button_set_adjustment (spin_button, adjustment);
       break;
     case PROP_CLIMB_RATE:
-      gtk_spin_button_configure (spin_button,
-				 spin_button->adjustment,
-				 g_value_get_double (value),
-				 spin_button->digits);
+      gtk_spin_button_set_climb_rate (spin_button, g_value_get_double (value));
       break;
     case PROP_DIGITS:
-      gtk_spin_button_configure (spin_button,
-				 spin_button->adjustment,
-				 spin_button->climb_rate,
-				 g_value_get_uint (value));
+      gtk_spin_button_set_digits (spin_button, g_value_get_uint (value));
       break;
     case PROP_SNAP_TO_TICKS:
       gtk_spin_button_set_snap_to_ticks (spin_button, g_value_get_boolean (value));
@@ -1548,26 +1556,11 @@ gtk_spin_button_configure (GtkSpinButton
 {
   g_return_if_fail (GTK_IS_SPIN_BUTTON (spin_button));
 
-  if (adjustment)
-    gtk_spin_button_set_adjustment (spin_button, adjustment);
-  else
-    adjustment = spin_button->adjustment;
-
-  g_object_freeze_notify (G_OBJECT (spin_button));
-  if (spin_button->digits != digits) 
-    {
-      spin_button->digits = digits;
-      g_object_notify (G_OBJECT (spin_button), "digits");
-    }
-
-  if (spin_button->climb_rate != climb_rate)
-    {
-      spin_button->climb_rate = climb_rate;
-      g_object_notify (G_OBJECT (spin_button), "climb-rate");
-    }
-  g_object_thaw_notify (G_OBJECT (spin_button));
-
-  gtk_adjustment_value_changed (adjustment);
+  g_object_set (G_OBJECT (spin_button),
+		"climb-rate", climb_rate,
+		"digits", digits,
+		adjustment ? "adjustment" : NULL, adjustment,
+		NULL);
 }
 
 GtkWidget *
@@ -1580,9 +1573,11 @@ gtk_spin_button_new (GtkAdjustment *adju
   if (adjustment)
     g_return_val_if_fail (GTK_IS_ADJUSTMENT (adjustment), NULL);
 
-  spin = g_object_new (GTK_TYPE_SPIN_BUTTON, NULL);
-
-  gtk_spin_button_configure (spin, adjustment, climb_rate, digits);
+  spin = g_object_new (GTK_TYPE_SPIN_BUTTON,
+		       "climb-rate", climb_rate,
+		       "digits", digits,
+		       adjustment ? "adjustment" : NULL, adjustment,
+		       NULL);
 
   return GTK_WIDGET (spin);
 }
@@ -1610,16 +1605,14 @@ gtk_spin_button_new_with_range (gdouble 
 				gdouble max,
 				gdouble step)
 {
-  GtkObject *adj;
+  GtkObject *adjustment;
   GtkSpinButton *spin;
   gint digits;
 
   g_return_val_if_fail (min <= max, NULL);
   g_return_val_if_fail (step != 0.0, NULL);
 
-  spin = g_object_new (GTK_TYPE_SPIN_BUTTON, NULL);
-
-  adj = gtk_adjustment_new (min, min, max, step, 10 * step, 0);
+  adjustment = gtk_adjustment_new (min, min, max, step, 10 * step, 0);
 
   if (fabs (step) >= 1.0 || step == 0.0)
     digits = 0;
@@ -1629,7 +1622,11 @@ gtk_spin_button_new_with_range (gdouble 
       digits = MAX_DIGITS;
   }
 
-  gtk_spin_button_configure (spin, GTK_ADJUSTMENT (adj), step, digits);
+  spin = g_object_new (GTK_TYPE_SPIN_BUTTON,
+		       "climb-rate", step,
+		       "digits", digits,
+		       adjustment ? "adjustment" : NULL, adjustment,
+		       NULL);
 
   gtk_spin_button_set_numeric (spin, TRUE);
 
@@ -1692,6 +1689,8 @@ gtk_spin_button_set_adjustment (GtkSpinB
     }
 
   g_object_notify (G_OBJECT (spin_button), "adjustment");
+
+  gtk_spin_button_value_changed (spin_button->adjustment, spin_button);
 }
 
 /**
