summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2020-10-21 15:16:54 +0100
committerEmmanuele Bassi <ebassi@gnome.org>2020-10-21 15:18:23 +0100
commit698cbee1fbe3e8d30c20effe3de14bca13fa4fec (patch)
tree13d0c6824e782c4f673d13c418714874fcfcdcf6
parentf1e14c48582195f34225955aa5e2e9fc1a744cdd (diff)
downloadgtk+-698cbee1fbe3e8d30c20effe3de14bca13fa4fec.tar.gz
a11y: Move ChildrenChanged emitter to ATSPI utilities
We are going to use it from GtkAtSpiRoot, which is not a GtkAtSpiContext.
-rw-r--r--gtk/a11y/gtkatspicontext.c32
-rw-r--r--gtk/a11y/gtkatspiutils.c34
-rw-r--r--gtk/a11y/gtkatspiutilsprivate.h8
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