[at-spi2-atk] Translate child changed ATK signals to AT-SPI.
- From: Mark Doffman <markdoffman src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [at-spi2-atk] Translate child changed ATK signals to AT-SPI.
- Date: Mon, 11 Jan 2010 14:02:15 +0000 (UTC)
commit 338e58d49bf2c1fd995911542eb2dd4d2cb593d3
Author: Mark Doffman <mark doffman codethink co uk>
Date: Tue Jan 5 16:29:30 2010 -0800
Translate child changed ATK signals to AT-SPI.
atk-adaptor/event.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 51 insertions(+), 1 deletions(-)
---
diff --git a/atk-adaptor/event.c b/atk-adaptor/event.c
index 7dc9e45..e65cdd4 100644
--- a/atk-adaptor/event.c
+++ b/atk-adaptor/event.c
@@ -330,7 +330,7 @@ focus_tracker (AtkObject * accessible)
/*---------------------------------------------------------------------------*/
-#define PCHANGE "property-change"
+#define PCHANGE "property_change"
/*
* This handler handles the following ATK signals and
@@ -701,6 +701,52 @@ text_selection_changed_event_listener (GSignalInvocationHint * signal_hint,
/*---------------------------------------------------------------------------*/
/*
+ * Children changed signal converter and forwarder.
+ *
+ * Klass (Interface) org.freedesktop.atspi.Event.Object
+ * Major is the signal name.
+ * Minor is 'add' or 'remove'
+ * detail1 is the index.
+ * detail2 is 0.
+ * any_data is the child reference.
+ */
+static gboolean
+children_changed_event_listener (GSignalInvocationHint * signal_hint,
+ guint n_param_values,
+ const GValue * param_values, gpointer data)
+{
+ AtkObject *accessible, *child;
+ GSignalQuery signal_query;
+ const gchar *name, *minor;
+ gint detail1, detail2;
+
+ g_signal_query (signal_hint->signal_id, &signal_query);
+ name = signal_query.signal_name;
+
+ accessible = ATK_OBJECT (g_value_get_object (¶m_values[0]));
+ minor = g_quark_to_string (signal_hint->detail);
+
+ if (G_VALUE_TYPE (¶m_values[1]) == G_TYPE_INT)
+ detail1 = g_value_get_int (¶m_values[1]);
+
+ if (G_VALUE_TYPE (¶m_values[2]) == G_TYPE_OBJECT)
+ {
+ child = ATK_OBJECT(g_value_get_pointer (¶m_values[2]));
+ emit_event (accessible, ITF_EVENT_OBJECT, name, minor, detail1, detail2,
+ "(so)", child, append_object);
+ }
+ else
+ {
+ emit_event (accessible, ITF_EVENT_OBJECT, name, minor, detail1, detail2,
+ "s", "", append_basic);
+ }
+ return TRUE;
+}
+
+/*---------------------------------------------------------------------------*/
+
+
+/*
* Generic signal converter and forwarder.
*
* Klass (Interface) org.freedesktop.atspi.Event.Object
@@ -820,6 +866,10 @@ spi_atk_register_event_listeners (void)
add_signal_listener (generic_event_listener, "Gtk:AtkTable:column-deleted");
add_signal_listener (generic_event_listener, "Gtk:AtkTable:model-changed");
+ /* Children signal listeners */
+ atk_add_global_event_listener (children_changed_event_listener,
+ "Gtk:AtkObject:children-changed");
+
/*
* May add the following listeners to implement preemptive key listening for GTK+
*
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]