[gtk/wip/ebassi/a11y-2] a11y: Drop notify_gtk() from GtkRangeAccessible



commit 294b7b22adc49d47db27a57ecd140973eaf8ddc9
Author: Emmanuele Bassi <ebassi gnome org>
Date:   Thu Apr 23 20:16:31 2020 +0100

    a11y: Drop notify_gtk() from GtkRangeAccessible
    
    Let the GtkRange notify the accessible instance when the adjustment
    changes.

 gtk/a11y/gtkrangeaccessible.c | 28 +++++++---------------------
 gtk/a11y/gtkrangeaccessible.h |  3 +++
 gtk/gtkrange.c                |  9 +++++++++
 3 files changed, 19 insertions(+), 21 deletions(-)
---
diff --git a/gtk/a11y/gtkrangeaccessible.c b/gtk/a11y/gtkrangeaccessible.c
index 93cfb62a7e..e91da0565c 100644
--- a/gtk/a11y/gtkrangeaccessible.c
+++ b/gtk/a11y/gtkrangeaccessible.c
@@ -73,6 +73,13 @@ gtk_range_accessible_widget_unset (GtkAccessible *accessible)
     }
 }
 
+void
+gtk_range_accessible_update_adjustment (GtkRangeAccessible *self)
+{
+  gtk_range_accessible_widget_unset (GTK_ACCESSIBLE (self));
+  gtk_range_accessible_widget_set (GTK_ACCESSIBLE (self));
+}
+
 static void
 gtk_range_accessible_initialize (AtkObject *obj,
                                  gpointer   data)
@@ -81,37 +88,16 @@ gtk_range_accessible_initialize (AtkObject *obj,
   obj->role = ATK_ROLE_SLIDER;
 }
 
-static void
-gtk_range_accessible_notify_gtk (GObject    *obj,
-                                 GParamSpec *pspec)
-{
-  GtkWidget *widget = GTK_WIDGET (obj);
-  AtkObject *range;
-
-  if (strcmp (pspec->name, "adjustment") == 0)
-    {
-      range = gtk_widget_get_accessible (widget);
-      gtk_range_accessible_widget_unset (GTK_ACCESSIBLE (range));
-      gtk_range_accessible_widget_set (GTK_ACCESSIBLE (range));
-    }
-  else
-    GTK_WIDGET_ACCESSIBLE_CLASS (gtk_range_accessible_parent_class)->notify_gtk (obj, pspec);
-}
-
-
 static void
 gtk_range_accessible_class_init (GtkRangeAccessibleClass *klass)
 {
   AtkObjectClass *class = ATK_OBJECT_CLASS (klass);
   GtkAccessibleClass *accessible_class = (GtkAccessibleClass*)klass;
-  GtkWidgetAccessibleClass *widget_class = (GtkWidgetAccessibleClass*)klass;
 
   class->initialize = gtk_range_accessible_initialize;
 
   accessible_class->widget_set = gtk_range_accessible_widget_set;
   accessible_class->widget_unset = gtk_range_accessible_widget_unset;
-
-  widget_class->notify_gtk = gtk_range_accessible_notify_gtk;
 }
 
 static void
diff --git a/gtk/a11y/gtkrangeaccessible.h b/gtk/a11y/gtkrangeaccessible.h
index 4d0352628a..1607ed16ed 100644
--- a/gtk/a11y/gtkrangeaccessible.h
+++ b/gtk/a11y/gtkrangeaccessible.h
@@ -52,6 +52,9 @@ struct _GtkRangeAccessibleClass
 GDK_AVAILABLE_IN_ALL
 GType gtk_range_accessible_get_type (void);
 
+/*< private >*/
+void    gtk_range_accessible_update_adjustment  (GtkRangeAccessible *self);
+
 G_END_DECLS
 
 #endif /* __GTK_RANGE_ACCESSIBLE_H__ */
diff --git a/gtk/gtkrange.c b/gtk/gtkrange.c
index 54292f1725..01704ccf94 100644
--- a/gtk/gtkrange.c
+++ b/gtk/gtkrange.c
@@ -673,6 +673,15 @@ gtk_range_set_adjustment (GtkRange      *range,
 
       gtk_range_adjustment_changed (adjustment, range);
       gtk_range_adjustment_value_changed (adjustment, range);
+
+      {
+        GtkRangeAccessible *accessible =
+          GTK_RANGE_ACCESSIBLE (_gtk_widget_peek_accessible (GTK_WIDGET (range)));
+
+        if (accessible != NULL)
+          gtk_range_accessible_update_adjustment (accessible);
+      }
+
       g_object_notify_by_pspec (G_OBJECT (range), properties[PROP_ADJUSTMENT]);
     }
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]