#include <atk/atk.h>
#include <droute/droute.h>
-#include "common/spi-dbus.h"
+#include "spi-dbus.h"
+#include "accessible-stateset.h"
#include "accessible-cache.h"
#include "bridge.h"
#include "object.h"
+#include "introspection.h"
/* TODO - This should possibly be a common define */
-#define SPI_OBJECT_PREFIX "/org/at_spi"
+#define SPI_OBJECT_PREFIX "/org/a11y/atspi"
#define SPI_CACHE_OBJECT_SUFFIX "/cache"
#define SPI_CACHE_OBJECT_PATH SPI_OBJECT_PREFIX SPI_CACHE_OBJECT_SUFFIX
const char *name, *desc;
dbus_uint32_t role;
+ g_object_ref (G_OBJECT (obj));
+
set = atk_object_ref_state_set (obj);
{
AtkObject *application, *parent;
parent = atk_object_get_parent (obj);
if (parent == NULL)
{
-#ifdef SPI_ATK_PLUG_SOCKET
/* TODO, move in to a 'Plug' wrapper. */
if (ATK_IS_PLUG (obj))
{
if (id)
{
bus_parent = g_strdup (id);
- if (bus_parent && (path_parent = g_utf8_strchr (bus_parent + 1, -1, ':')))
- {
- DBusMessageIter iter_parent;
- *(path_parent++) = '\0';
- dbus_message_iter_open_container (&iter_struct, DBUS_TYPE_STRUCT, NULL,
- &iter_parent);
- dbus_message_iter_append_basic (&iter_parent, DBUS_TYPE_STRING, &bus_parent);
- dbus_message_iter_append_basic (&iter_parent, DBUS_TYPE_OBJECT_PATH, &path_parent);
- dbus_message_iter_close_container (&iter_struct, &iter_parent);
- }
+ if (bus_parent && (path_parent = g_utf8_strchr (bus_parent + 1, -1, ':')))
+ {
+ DBusMessageIter iter_parent;
+ *(path_parent++) = '\0';
+ dbus_message_iter_open_container (&iter_struct, DBUS_TYPE_STRUCT, NULL,
+ &iter_parent);
+ dbus_message_iter_append_basic (&iter_parent, DBUS_TYPE_STRING, &bus_parent);
+ dbus_message_iter_append_basic (&iter_parent, DBUS_TYPE_OBJECT_PATH, &path_parent);
+ dbus_message_iter_close_container (&iter_struct, &iter_parent);
+ }
+ else
+ {
+ spi_object_append_null_reference (&iter_struct);
+ }
+ }
+ else
+ {
+ spi_object_append_null_reference (&iter_struct);
}
}
- else if (role != Accessibility_ROLE_APPLICATION)
-#else
- if (role != Accessibility_ROLE_APPLICATION)
-#endif
+ else if (role != ATSPI_ROLE_APPLICATION)
spi_object_append_null_reference (&iter_struct);
else
spi_object_append_desktop_reference (&iter_struct);
/* Marshall children */
dbus_message_iter_open_container (&iter_struct, DBUS_TYPE_ARRAY, "(so)",
&iter_sub_array);
- if (!atk_state_set_contains_state (set, ATK_STATE_MANAGES_DESCENDANTS))
+ if (!atk_state_set_contains_state (set, ATK_STATE_MANAGES_DESCENDANTS) &&
+ !atk_state_set_contains_state (set, ATK_STATE_DEFUNCT))
{
gint childcount, i;
g_object_unref (G_OBJECT (child));
}
}
-#ifdef SPI_ATK_PLUG_SOCKET
if (ATK_IS_SOCKET (obj) && atk_socket_is_occupied (ATK_SOCKET (obj)))
{
AtkSocket *socket = ATK_SOCKET (obj);
}
g_free (child_name);
}
-#endif
dbus_message_iter_close_container (&iter_struct, &iter_sub_array);
}
dbus_message_iter_close_container (iter_array, &iter_struct);
g_object_unref (set);
+ g_object_unref (obj);
}
/*---------------------------------------------------------------------------*/
append_accessible_hf (gpointer key, gpointer obj_data, gpointer data)
{
/* Make sure it isn't a hyperlink */
- if (ATK_IS_OBJECT (obj_data))
- append_cache_item (ATK_OBJECT (obj_data), data);
+ if (ATK_IS_OBJECT (key))
+ append_cache_item (ATK_OBJECT (key), data);
}
/*---------------------------------------------------------------------------*/
DBusMessage *message;
if ((message = dbus_message_new_signal (SPI_CACHE_OBJECT_PATH,
- SPI_DBUS_INTERFACE_CACHE,
+ ATSPI_DBUS_INTERFACE_CACHE,
"RemoveAccessible")))
{
DBusMessageIter iter;
DBusMessage *message;
if ((message = dbus_message_new_signal (SPI_CACHE_OBJECT_PATH,
- SPI_DBUS_INTERFACE_CACHE,
+ ATSPI_DBUS_INTERFACE_CACHE,
"AddAccessible")))
{
DBusMessageIter iter;
static DBusMessage *
impl_GetRoot (DBusConnection * bus, DBusMessage * message, void *user_data)
{
- return spi_object_return_reference (message,
- g_object_ref (G_OBJECT (spi_global_app_data->root)));
+ return spi_object_return_reference (message, spi_global_app_data->root);
}
/*---------------------------------------------------------------------------*/
DBusMessage *reply;
DBusMessageIter iter, iter_array;
+ if (bus == spi_global_app_data->bus)
+ spi_atk_add_client (dbus_message_get_sender (message));
+
reply = dbus_message_new_method_return (message);
dbus_message_iter_init_append (reply, &iter);
void
spi_initialize_cache (DRoutePath * path)
{
- droute_path_add_interface (path, SPI_DBUS_INTERFACE_CACHE, methods, NULL);
+ droute_path_add_interface (path, ATSPI_DBUS_INTERFACE_CACHE, spi_org_a11y_atspi_Cache, methods, NULL);
g_signal_connect (spi_global_cache,
"object-added",