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;
}
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);
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;
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;
CORBA_Environment *ev)
{
Accessibility_AttributeSet *retval;
- GSList *attributes;
+ AtkAttributeSet *attributes = NULL;
+ AtkAttribute *attr = NULL;
gint n_attributes = 0;
gint i;
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;
for (i = 0; i < n_attributes; ++i)
{
- retval->_buffer[i] = CORBA_string_dup (g_slist_nth_data (attributes, i));
+ attr = g_slist_nth_data (attributes, i);
+ retval->_buffer[i] = CORBA_string_dup (g_strconcat (attr->name, ":", attr->value, NULL));
}
+
+ atk_attribute_set_free (attributes);
return retval;
}
bonobo_object_add_interface (bonobo_object (retval),
BONOBO_OBJECT (spi_streamable_interface_new (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_hyperlink_new ((AtkHyperlink*)o)));
+ }
return retval;
}