[gtk/wip/ebassi/a11y-2: 28/28] a11y: Simplify GtkWindowAccessible



commit 7c8a6c57b0629cfc8e4b366716d75cab76096039
Author: Emmanuele Bassi <ebassi gnome org>
Date:   Thu May 28 14:02:04 2020 +0100

    a11y: Simplify GtkWindowAccessible
    
    Have GtkWindow notify of title changes, instead of overriding
    GtkWidgetAccessible.notify_gtk.

 gtk/a11y/gtkwindowaccessible.c        | 20 +++++---------------
 gtk/a11y/gtkwindowaccessibleprivate.h |  1 +
 gtk/gtkwindow.c                       |  7 +++++++
 3 files changed, 13 insertions(+), 15 deletions(-)
---
diff --git a/gtk/a11y/gtkwindowaccessible.c b/gtk/a11y/gtkwindowaccessible.c
index b25eeffb96..1d9d48e55c 100644
--- a/gtk/a11y/gtkwindowaccessible.c
+++ b/gtk/a11y/gtkwindowaccessible.c
@@ -60,20 +60,13 @@ gtk_window_accessible_focus_event (AtkObject *obj,
   atk_object_notify_state_change (obj, ATK_STATE_ACTIVE, focus_in);
 }
 
-static void
-gtk_window_accessible_notify_gtk (GObject    *obj,
-                                  GParamSpec *pspec)
+void
+gtk_window_accessible_update_title (GtkWindowAccessible *self)
 {
-  GtkWidget *widget = GTK_WIDGET (obj);
-  AtkObject* atk_obj = gtk_widget_get_accessible (widget);
+  AtkObject *atk_obj = ATK_OBJECT (self);
 
-  if (g_strcmp0 (pspec->name, "title") == 0)
-    {
-      g_object_notify (G_OBJECT (atk_obj), "accessible-name");
-      g_signal_emit_by_name (atk_obj, "visible-data-changed");
-    }
-  else
-    GTK_WIDGET_ACCESSIBLE_CLASS (gtk_window_accessible_parent_class)->notify_gtk (obj, pspec);
+  g_object_notify (G_OBJECT (atk_obj), "accessible-name");
+  g_signal_emit_by_name (atk_obj, "visible-data-changed");
 }
 
 static const gchar *
@@ -247,11 +240,8 @@ gtk_window_accessible_ref_child (AtkObject *object,
 static void
 gtk_window_accessible_class_init (GtkWindowAccessibleClass *klass)
 {
-  GtkWidgetAccessibleClass *widget_class = (GtkWidgetAccessibleClass*)klass;
   AtkObjectClass *class = ATK_OBJECT_CLASS (klass);
 
-  widget_class->notify_gtk = gtk_window_accessible_notify_gtk;
-
   class->get_name = gtk_window_accessible_get_name;
   class->get_index_in_parent = gtk_window_accessible_get_index_in_parent;
   class->ref_relation_set = gtk_window_accessible_ref_relation_set;
diff --git a/gtk/a11y/gtkwindowaccessibleprivate.h b/gtk/a11y/gtkwindowaccessibleprivate.h
index ba2fbfb9e8..8c337b23d0 100644
--- a/gtk/a11y/gtkwindowaccessibleprivate.h
+++ b/gtk/a11y/gtkwindowaccessibleprivate.h
@@ -24,6 +24,7 @@ G_BEGIN_DECLS
 
 void            _gtk_window_accessible_set_is_active    (GtkWindow              *window,
                                                          gboolean                is_active);
+void            gtk_window_accessible_update_title      (GtkWindowAccessible    *self);
 
 G_END_DECLS
 
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 4e687fa680..3660796673 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -1985,6 +1985,13 @@ gtk_window_set_title (GtkWindow   *window,
   if (_gtk_widget_get_realized (GTK_WIDGET (window)))
     gdk_toplevel_set_title (GDK_TOPLEVEL (priv->surface), new_title != NULL ? new_title : "");
 
+  {
+    AtkObject *accessible = _gtk_widget_peek_accessible (GTK_WIDGET (window));
+
+    if (accessible != NULL)
+      gtk_window_accessible_update_title (GTK_WINDOW_ACCESSIBLE (accessible));
+  }
+
   g_object_notify_by_pspec (G_OBJECT (window), window_props[PROP_TITLE]);
 }
 


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