+
+static void
+spi_atk_signal_emit_event (const GObject *gobject,
+ const GSignalQuery *signal_query,
+ long detail1,
+ long detail2,
+ const gchar *name,
+ const gchar *detail)
+{
+ CORBA_any any;
+ CORBA_char *sp = NULL;
+ AtkObject *ao;
+
+ if (signal_query->signal_id == atk_signal_text_changed)
+ {
+ sp = atk_text_get_text (ATK_TEXT (gobject),
+ detail1,
+ detail1+detail2);
+ spi_init_any_string (&any, &sp);
+ }
+#ifdef EXTENDED_OBJECT_EVENTS_ARE_WORKING
+ else if ((signal_query->signal_id == atk_signal_child_changed) && gobject)
+ {
+ ao = atk_object_ref_accessible_child (ATK_OBJECT (gobject),
+ detail1);
+ if (ao)
+ {
+ spi_init_any_object (&any, ao);
+ atk_object_unref (ao);
+ }
+ else
+ {
+ spi_init_any_nil (&any);
+ }
+ }
+#endif
+ else
+ {
+ spi_init_any_nil (&any);
+ }
+
+ if (detail)
+ spi_atk_emit_eventv (gobject, detail1, detail2, &any,
+ "object:%s:%s", name, detail);
+ else
+ spi_atk_emit_eventv (gobject, detail1, detail2, &any,
+ "object:%s", name);
+}
+
+
+