adjustment: Remove adjustment_changed_stamp
authorTimm Bäder <mail@baedert.org>
Fri, 23 Mar 2018 13:22:45 +0000 (14:22 +0100)
committerTimm Bäder <mail@baedert.org>
Wed, 20 Jun 2018 18:47:17 +0000 (20:47 +0200)
gtk/gtkadjustment.c

index 9046de52985ff647b0043c484680a45a9d3a2e6d..2e932f2938b253cd2f80525659028b5c92fc545a 100644 (file)
@@ -100,8 +100,6 @@ static guint adjustment_signals[LAST_SIGNAL] = { 0 };
 
 static GParamSpec *adjustment_props[NUM_PROPERTIES] = { NULL, };
 
-static guint64 adjustment_changed_stamp = 0; /* protected by global gdk lock */
-
 G_DEFINE_TYPE_WITH_PRIVATE (GtkAdjustment, gtk_adjustment, G_TYPE_INITIALLY_UNOWNED)
 
 static void
@@ -363,7 +361,6 @@ gtk_adjustment_dispatch_properties_changed (GObject     *object,
 
   if (changed)
     {
-      adjustment_changed_stamp++;
       emit_changed (GTK_ADJUSTMENT (object));
     }
 }
@@ -827,19 +824,41 @@ gtk_adjustment_configure (GtkAdjustment *adjustment,
 {
   GtkAdjustmentPrivate *priv = gtk_adjustment_get_instance_private (adjustment);
   gboolean value_changed = FALSE;
-  guint64 old_stamp = adjustment_changed_stamp;
+  gboolean changed = FALSE;
 
   g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
 
   g_object_freeze_notify (G_OBJECT (adjustment));
 
-  g_object_set (adjustment,
-                "lower", lower,
-                "upper", upper,
-                "step-increment", step_increment,
-                "page-increment", page_increment,
-                "page-size", page_size,
-                NULL);
+  if (priv->lower != lower)
+    {
+      gtk_adjustment_set_lower (adjustment, lower);
+      changed = TRUE;
+    }
+
+  if (priv->upper != upper)
+    {
+      gtk_adjustment_set_upper (adjustment, upper);
+      changed = TRUE;
+    }
+
+  if (priv->step_increment != step_increment)
+    {
+      gtk_adjustment_set_step_increment (adjustment, step_increment);
+      changed = TRUE;
+    }
+
+  if (priv->page_increment != page_increment)
+    {
+      gtk_adjustment_set_page_increment (adjustment, page_increment);
+      changed = TRUE;
+    }
+
+  if (priv->page_size != page_size)
+    {
+      gtk_adjustment_set_page_size (adjustment, page_size);
+      changed = TRUE;
+    }
 
   /* don't use CLAMP() so we don't end up below lower if upper - page_size
    * is smaller than lower
@@ -858,7 +877,7 @@ gtk_adjustment_configure (GtkAdjustment *adjustment,
 
   g_object_thaw_notify (G_OBJECT (adjustment));
 
-  if (old_stamp == adjustment_changed_stamp)
+  if (changed)
     emit_changed (adjustment); /* force emission before ::value-changed */
 
   if (value_changed)