http://bugzilla.gnome.org/show_bug.cgi?id=350552
https://bugzilla.mozilla.org/show_bug.cgi?id=418845#c28
https://bugzilla.mozilla.org/show_bug.cgi?id=418845#c41 (part 2)
Index: atk-bridge/bridge.c
===================================================================
--- atk-bridge/bridge.c (revision 988)
+++ atk-bridge/bridge.c (working copy)
@@ -1160,13 +1160,22 @@
else if ((signal_query.signal_id == atk_signal_children_changed) && gobject)
{
detail1 = g_value_get_uint (param_values + 1);
- ao = atk_object_ref_accessible_child (ATK_OBJECT (gobject),
- detail1);
- if (ao)
- {
- s_ao = spi_accessible_new (ao);
- c_obj = BONOBO_OBJREF (s_ao);
- spi_atk_bridge_init_object (&any, ATK_OBJECT (gobject), &c_obj);
+ gpointer child = g_value_get_pointer (param_values + 2);
+ if (ATK_IS_OBJECT (child))
+ {
+ ao = ATK_OBJECT (child);
+ g_object_ref (ao);
+ }
+ else
+ {
+ ao = atk_object_ref_accessible_child (ATK_OBJECT (gobject),
+ detail1);
+ }
+ if (ao)
+ {
+ s_ao = spi_accessible_new (ao);
+ c_obj = BONOBO_OBJREF (s_ao);
+ spi_atk_bridge_init_object (&any, ATK_OBJECT (gobject), &c_obj);
g_object_unref (ao);
}
else