*/
void
+spi_object_append_null_reference (DBusMessageIter * iter)
+{
+ DBusMessageIter iter_struct;
+ const char *name;
+ const char *path = SPI_DBUS_PATH_NULL;
+
+ name = dbus_bus_get_unique_name (spi_global_app_data->bus);
+
+ dbus_message_iter_open_container (iter, DBUS_TYPE_STRUCT, NULL,
+ &iter_struct);
+ dbus_message_iter_append_basic (&iter_struct, DBUS_TYPE_STRING, &name);
+ dbus_message_iter_append_basic (&iter_struct, DBUS_TYPE_OBJECT_PATH, &path);
+ dbus_message_iter_close_container (iter, &iter_struct);
+}
+
+void
spi_object_append_reference (DBusMessageIter * iter, AtkObject * obj)
{
DBusMessageIter iter_struct;
const gchar *name;
gchar *path;
+ if (!obj) {
+ spi_object_append_null_reference (iter);
+ return;
+ }
+
maybe_lease (obj);
name = dbus_bus_get_unique_name (spi_global_app_data->bus);
spi_object_append_desktop_reference (DBusMessageIter * iter)
{
DBusMessageIter iter_struct;
- const char *name = SPI_DBUS_NAME_REGISTRY;
- const char *path = SPI_DBUS_PATH_ROOT;
-
- dbus_message_iter_open_container (iter, DBUS_TYPE_STRUCT, NULL,
- &iter_struct);
- dbus_message_iter_append_basic (&iter_struct, DBUS_TYPE_STRING, &name);
- dbus_message_iter_append_basic (&iter_struct, DBUS_TYPE_OBJECT_PATH, &path);
- dbus_message_iter_close_container (iter, &iter_struct);
-}
-
-void
-spi_object_append_null_reference (DBusMessageIter * iter)
-{
- DBusMessageIter iter_struct;
- const char *name;
- const char *path = "/org/at_spi/null";
-
- name = dbus_bus_get_unique_name (spi_global_app_data->bus);
+ const char *name = spi_global_app_data->desktop_name;
+ const char *path = spi_global_app_data->desktop_path;
dbus_message_iter_open_container (iter, DBUS_TYPE_STRUCT, NULL,
&iter_struct);
dbus_message_iter_append_basic (iter, DBUS_TYPE_STRING, &itf);
}
+ if (atk_object_get_role (obj) == ATK_ROLE_APPLICATION)
+ {
+ itf = SPI_DBUS_INTERFACE_APPLICATION;
+ dbus_message_iter_append_basic (iter, DBUS_TYPE_STRING, &itf);
+ }
+
if (ATK_IS_COMPONENT (obj))
{
itf = SPI_DBUS_INTERFACE_COMPONENT;
#if 0
if (ATK_IS_STREAMABLE_CONTENT (obj))
{
- itf = "org.freedesktop.atspi.StreamableContent";
+ itf = "org.a11y.atspi.StreamableContent";
dbus_message_iter_append_basic (iter, DBUS_TYPE_STRING, &itf);
}
#endif
if (ATK_IS_DOCUMENT (obj))
{
- itf = "org.freedesktop.atspi.Collection";
+ itf = "org.a11y.atspi.Collection";
dbus_message_iter_append_basic (iter, DBUS_TYPE_STRING, &itf);
itf = SPI_DBUS_INTERFACE_DOCUMENT;
dbus_message_iter_append_basic (iter, DBUS_TYPE_STRING, &itf);