Blob Blame History Raw
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