From: Matthias Clasen Date: Fri, 31 Mar 2023 01:18:35 +0000 (-0400) Subject: Make adjustment setters behave X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~1^2~478^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=fdce10fb96d1739e0b2fd9bca5244cbb307473d1;p=gtk4.git Make adjustment setters behave --- diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c index bae4a2b796..a51c7d447d 100644 --- a/gtk/gtkrange.c +++ b/gtk/gtkrange.c @@ -376,7 +376,7 @@ gtk_range_class_init (GtkRangeClass *class) properties[PROP_ADJUSTMENT] = g_param_spec_object ("adjustment", NULL, NULL, GTK_TYPE_ADJUSTMENT, - GTK_PARAM_READWRITE|G_PARAM_CONSTRUCT); + GTK_PARAM_READWRITE|G_PARAM_CONSTRUCT|G_PARAM_EXPLICIT_NOTIFY); /** * GtkRange:inverted: (attributes org.gtk.Property.get=gtk_range_get_inverted org.gtk.Property.set=gtk_range_set_inverted) diff --git a/gtk/gtkscalebutton.c b/gtk/gtkscalebutton.c index 7b2c2a11a0..e1a78b1bfe 100644 --- a/gtk/gtkscalebutton.c +++ b/gtk/gtkscalebutton.c @@ -229,7 +229,7 @@ gtk_scale_button_class_init (GtkScaleButtonClass *klass) PROP_ADJUSTMENT, g_param_spec_object ("adjustment", NULL, NULL, GTK_TYPE_ADJUSTMENT, - GTK_PARAM_READWRITE)); + GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); /** * GtkScaleButton:icons: (attributes org.gtk.Property.set=gtk_scale_button_set_icons) diff --git a/gtk/gtkscrollbar.c b/gtk/gtkscrollbar.c index 20b49a78a2..ec9702ae9c 100644 --- a/gtk/gtkscrollbar.c +++ b/gtk/gtkscrollbar.c @@ -218,7 +218,7 @@ gtk_scrollbar_class_init (GtkScrollbarClass *class) props[PROP_ADJUSTMENT] = g_param_spec_object ("adjustment", NULL, NULL, GTK_TYPE_ADJUSTMENT, - GTK_PARAM_READWRITE|G_PARAM_CONSTRUCT); + GTK_PARAM_READWRITE|G_PARAM_CONSTRUCT|G_PARAM_EXPLICIT_NOTIFY); g_object_class_install_properties (object_class, LAST_PROP, props); @@ -310,6 +310,9 @@ gtk_scrollbar_set_adjustment (GtkScrollbar *self, g_return_if_fail (adjustment == NULL || GTK_IS_ADJUSTMENT (adjustment)); adj = gtk_range_get_adjustment (GTK_RANGE (priv->range)); + if (adj == adjustment) + return; + if (adj) { g_signal_handlers_disconnect_by_func (adj, gtk_scrollbar_adjustment_changed, self); diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c index 40e4379f69..b81777784b 100644 --- a/gtk/gtkscrolledwindow.c +++ b/gtk/gtkscrolledwindow.c @@ -587,7 +587,7 @@ gtk_scrolled_window_class_init (GtkScrolledWindowClass *class) properties[PROP_HADJUSTMENT] = g_param_spec_object ("hadjustment", NULL, NULL, GTK_TYPE_ADJUSTMENT, - GTK_PARAM_READWRITE|G_PARAM_CONSTRUCT); + GTK_PARAM_READWRITE|G_PARAM_CONSTRUCT|G_PARAM_EXPLICIT_NOTIFY); /** * GtkScrolleWindow:vadjustment: (attributes org.gtk.Property.get=gtk_scrolled_window_get_vadjustment org.gtk.Property.set=gtk_scrolled_window_set_vadjustment) @@ -597,7 +597,7 @@ gtk_scrolled_window_class_init (GtkScrolledWindowClass *class) properties[PROP_VADJUSTMENT] = g_param_spec_object ("vadjustment", NULL, NULL, GTK_TYPE_ADJUSTMENT, - GTK_PARAM_READWRITE|G_PARAM_CONSTRUCT); + GTK_PARAM_READWRITE|G_PARAM_CONSTRUCT|G_PARAM_EXPLICIT_NOTIFY); /** * GtkScrolledWindow:hscrollbar-policy: diff --git a/gtk/gtkspinbutton.c b/gtk/gtkspinbutton.c index e56265a15b..d5a2e6c798 100644 --- a/gtk/gtkspinbutton.c +++ b/gtk/gtkspinbutton.c @@ -374,7 +374,7 @@ gtk_spin_button_class_init (GtkSpinButtonClass *class) spinbutton_props[PROP_ADJUSTMENT] = g_param_spec_object ("adjustment", NULL, NULL, GTK_TYPE_ADJUSTMENT, - GTK_PARAM_READWRITE); + GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY); /** * GtkSpinButton:climb-rate: (attributes org.gtk.Property.get=gtk_spin_button_get_climb_rate org.gtk.Property.set=gtk_spin_button_set_climb_rate) @@ -1860,6 +1860,8 @@ gtk_spin_button_set_adjustment (GtkSpinButton *spin_button, if (!adjustment) adjustment = gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + else if (spin_button->adjustment == adjustment) + return; gtk_spin_button_configure (spin_button, adjustment,