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);
+
+ if (attributes == NULL)
+ return NULL;
+
n_attributes = g_slist_length (attributes);
retval = CORBA_sequence_CORBA_string__alloc ();
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))
+ {
+ bonobo_object_add_interface (bonobo_object (retval),
+ BONOBO_OBJECT (spi_document_interface_new (o)));
+ }
+ 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;
}