[gtk/a11y/atspi-child] a11y: Move ChildrenChanged emitter to ATSPI utilities



commit 698cbee1fbe3e8d30c20effe3de14bca13fa4fec
Author: Emmanuele Bassi <ebassi gnome org>
Date:   Wed Oct 21 15:16:54 2020 +0100

    a11y: Move ChildrenChanged emitter to ATSPI utilities
    
    We are going to use it from GtkAtSpiRoot, which is not a
    GtkAtSpiContext.

 gtk/a11y/gtkatspicontext.c      | 32 +++++++-------------------------
 gtk/a11y/gtkatspiutils.c        | 34 ++++++++++++++++++++++++++++++++++
 gtk/a11y/gtkatspiutilsprivate.h |  8 ++++++++
 3 files changed, 49 insertions(+), 25 deletions(-)
---
diff --git a/gtk/a11y/gtkatspicontext.c b/gtk/a11y/gtkatspicontext.c
index b5ff4cbbc5..a3b5d8bb22 100644
--- a/gtk/a11y/gtkatspicontext.c
+++ b/gtk/a11y/gtkatspicontext.c
@@ -816,33 +816,15 @@ emit_children_changed (GtkAtSpiContext         *self,
                        int                      idx,
                        GtkAccessibleChildState  state)
 {
-  const char *change;
-
-  switch (state)
-    {
-    case GTK_ACCESSIBLE_CHILD_STATE_ADDED:
-      change = "add";
-      break;
-
-    case GTK_ACCESSIBLE_CHILD_STATE_REMOVED:
-      change = "remove";
-      break;
-
-    default:
-      g_assert_not_reached ();
-      return;
-    }
-
-  GVariant *ref = gtk_at_spi_context_to_ref (child_context);
+  GVariant *child_ref = gtk_at_spi_context_to_ref (child_context);
   GVariant *context_ref = gtk_at_spi_context_to_ref (self);
 
-  g_dbus_connection_emit_signal (self->connection,
-                                 NULL,
-                                 self->context_path,
-                                 "org.a11y.atspi.Event.Object",
-                                 "ChildrenChanged",
-                                 g_variant_new ("(siiv@(so))", change, idx, 0, ref, context_ref),
-                                 NULL);
+  gtk_at_spi_emit_children_changed (self->connection,
+                                    self->context_path,
+                                    state,
+                                    idx,
+                                    child_ref,
+                                    context_ref);
 }
 
 static void
diff --git a/gtk/a11y/gtkatspiutils.c b/gtk/a11y/gtkatspiutils.c
index 1fef628144..fad5ee10fd 100644
--- a/gtk/a11y/gtkatspiutils.c
+++ b/gtk/a11y/gtkatspiutils.c
@@ -305,3 +305,37 @@ gtk_at_spi_null_ref (void)
 {
   return g_variant_new ("(so)", "", "/org/a11y/atspi/null");
 }
+
+void
+gtk_at_spi_emit_children_changed (GDBusConnection         *connection,
+                                  const char              *path,
+                                  GtkAccessibleChildState  state,
+                                  int                      idx,
+                                  GVariant                *child_ref,
+                                  GVariant                *sender_ref)
+{
+  const char *change;
+
+  switch (state)
+    {
+    case GTK_ACCESSIBLE_CHILD_STATE_ADDED:
+      change = "add";
+      break;
+
+    case GTK_ACCESSIBLE_CHILD_STATE_REMOVED:
+      change = "remove";
+      break;
+
+    default:
+      g_assert_not_reached ();
+      return;
+    }
+
+  g_dbus_connection_emit_signal (connection,
+                                 NULL,
+                                 path,
+                                 "org.a11y.atspi.Event.Object",
+                                 "ChildrenChanged",
+                                 g_variant_new ("(siiv@(so))", change, idx, 0, child_ref, sender_ref),
+                                 NULL);
+}
diff --git a/gtk/a11y/gtkatspiutilsprivate.h b/gtk/a11y/gtkatspiutilsprivate.h
index 20b0b09305..d54f5896c7 100644
--- a/gtk/a11y/gtkatspiutilsprivate.h
+++ b/gtk/a11y/gtkatspiutilsprivate.h
@@ -31,4 +31,12 @@ gtk_atspi_role_for_context (GtkATContext *context);
 GVariant *
 gtk_at_spi_null_ref (void);
 
+void
+gtk_at_spi_emit_children_changed (GDBusConnection         *connection,
+                                  const char              *path,
+                                  GtkAccessibleChildState  state,
+                                  int                      idx,
+                                  GVariant                *child_ref,
+                                  GVariant                *sender_ref);
+
 G_END_DECLS


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