X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=libspi%2Faccessible.c;h=ad7084ff9a78780a7e684cd657894381c480e9c3;hb=d8761880c8bd6c1c2b48749f57bab780900c274b;hp=a5e29d51f5edba3547c700d9d58be4fe11d9eab2;hpb=83f8d9669b1e996439a3ef2815339235655d0093;p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git diff --git a/libspi/accessible.c b/libspi/accessible.c index a5e29d5..ad7084f 100644 --- a/libspi/accessible.c +++ b/libspi/accessible.c @@ -334,9 +334,11 @@ impl_accessibility_accessible_get_state (PortableServer_Servant servant, atk_set = atk_object_ref_state_set (object); set = spi_state_set_new (atk_set); - retval = bonobo_object_dup_ref ( + retval = CORBA_Object_duplicate ( BONOBO_OBJREF(set), - ev); + NULL); + + g_object_unref (atk_set); return retval; } @@ -349,7 +351,7 @@ impl_accessibility_accessible_get_relation_set (PortableServer_Servant servant, CORBA_Environment *ev) { Accessibility_RelationSet *retval; - gint n_relations; + gint n_relations = 0; gint i; AtkRelationSet *relation_set; AtkObject *object = get_atkobject_from_servant (servant); @@ -358,7 +360,8 @@ impl_accessibility_accessible_get_relation_set (PortableServer_Servant servant, relation_set = atk_object_ref_relation_set (object); - n_relations = atk_relation_set_get_n_relations (relation_set); + if (relation_set) + n_relations = atk_relation_set_get_n_relations (relation_set); retval = CORBA_sequence_Accessibility_Relation__alloc (); retval->_length = retval->_maximum = n_relations; @@ -368,10 +371,10 @@ impl_accessibility_accessible_get_relation_set (PortableServer_Servant servant, for (i = 0; i < n_relations; ++i) { retval->_buffer[i] = - bonobo_object_dup_ref ( + CORBA_Object_duplicate ( BONOBO_OBJREF ( spi_relation_new (atk_relation_set_get_relation (relation_set, i))), - ev); + NULL); } return retval; @@ -461,9 +464,9 @@ impl_accessibility_accessible_get_attributes (PortableServer_Servant servant, g_return_val_if_fail (object != NULL, NULL); attributes = atk_object_get_attributes (object); - - bonobo_return_val_if_fail (attributes != NULL, NULL, ev); - n_attributes = g_slist_length (attributes); + + if (attributes) + n_attributes = g_slist_length (attributes); retval = CORBA_sequence_CORBA_string__alloc (); retval->_length = retval->_maximum = n_attributes; @@ -627,10 +630,26 @@ spi_accessible_construct (GType type, AtkObject *o) bonobo_object_add_interface (bonobo_object (retval), BONOBO_OBJECT (spi_streamable_interface_new (o))); } - if (ATK_IS_DOCUMENT (o)) + if (ATK_IS_DOCUMENT (o)) /* We add collection interface to document */ + { + + + SpiDocument *doc = spi_document_interface_new (o); + bonobo_object_add_interface (BONOBO_OBJECT (doc), + BONOBO_OBJECT (spi_collection_interface_new (o))); + + bonobo_object_add_interface (bonobo_object (retval), + BONOBO_OBJECT (doc)); + } + if (ATK_IS_HYPERLINK_IMPL (o)) { + /* !!! the cast below is used instead of the ATK_HYPERLINK macro, since + the object 'o' is not really a hyperlink, but is in fact an AtkHyperlinkImpl. + Ouch. This works since it gets cast back to GObject, but it's nasty and needs + to be cleaned up. + */ bonobo_object_add_interface (bonobo_object (retval), - BONOBO_OBJECT (spi_document_interface_new (o))); + BONOBO_OBJECT (spi_hyperlink_new ((AtkHyperlink*)o))); } return retval;