* Boston, MA 02111-1307, USA.
*/
-#include "accessible.h"
-#include "bitarray.h"
+#include <atk/atk.h>
+#include <droute/droute.h>
-#define get_object(message) spi_dbus_get_object(dbus_message_get_path(message))
-
-static AtkObject *
-get_object_from_path (const char *path, void *user_data)
-{
- return spi_dbus_get_object (path);
-}
+#include "atk-dbus.h"
+#include "spi-common/spi-dbus.h"
static dbus_bool_t
-impl_get_name (const char *path, DBusMessageIter * iter, void *user_data)
+impl_get_name (DBusMessageIter *iter, void *user_data)
{
- AtkObject *object = spi_dbus_get_object (path);
- if (!object)
- return FALSE;
+ AtkObject *object = (AtkObject *) user_data;
+
+ g_return_val_if_fail (ATK_IS_OBJECT (user_data), FALSE);
+
return droute_return_v_string (iter, atk_object_get_name (object));
}
static dbus_bool_t
-impl_set_name (const char *path, DBusMessageIter * iter, void *user_data)
+impl_set_name (DBusMessageIter *iter, void *user_data)
{
- AtkObject *object = spi_dbus_get_object (path);
+ AtkObject *object = (AtkObject *) user_data;
const char *name = droute_get_v_string (iter);
+
+ g_return_val_if_fail (ATK_IS_OBJECT (user_data), FALSE);
+
atk_object_set_name (object, name);
return TRUE;
}
static dbus_bool_t
-impl_get_description (const char *path, DBusMessageIter * iter,
- void *user_data)
+impl_get_description (DBusMessageIter *iter, void *user_data)
{
- AtkObject *object = spi_dbus_get_object (path);
- if (!object)
- return FALSE;
+ AtkObject *object = (AtkObject *) user_data;
+
+ g_return_val_if_fail (ATK_IS_OBJECT (user_data), FALSE);
+
return droute_return_v_string (iter, atk_object_get_description (object));
}
static dbus_bool_t
-impl_set_description (const char *path, DBusMessageIter * iter,
- void *user_data)
+impl_set_description (DBusMessageIter *iter, void *user_data)
{
- AtkObject *object = spi_dbus_get_object (path);
+ AtkObject *object = (AtkObject *) user_data;
const char *description = droute_get_v_string (iter);
+
+ g_return_val_if_fail (ATK_IS_OBJECT (user_data), FALSE);
+
atk_object_set_description (object, description);
return TRUE;
}
static dbus_bool_t
-impl_get_parent (const char *path, DBusMessageIter * iter, void *user_data)
+impl_get_parent (DBusMessageIter *iter, void *user_data)
{
- AtkObject *object = spi_dbus_get_object (path);
+ AtkObject *object = (AtkObject *) user_data;
+
+ g_return_val_if_fail (ATK_IS_OBJECT (user_data), FALSE);
- if (!object)
- return FALSE;
- return spi_dbus_return_v_object (iter, atk_object_get_parent (object),
- FALSE);
+ return spi_dbus_return_v_object (iter,
+ atk_object_get_parent (object),
+ FALSE);
}
static dbus_bool_t
-impl_get_childCount (const char *path, DBusMessageIter * iter,
- void *user_data)
+impl_get_childCount (DBusMessageIter *iter, void *user_data)
{
- AtkObject *object = spi_dbus_get_object (path);
+ AtkObject *object = (AtkObject *) user_data;
+
+ g_return_val_if_fail (ATK_IS_OBJECT (user_data), FALSE);
- if (!object)
- return FALSE;
return droute_return_v_int32 (iter,
- atk_object_get_n_accessible_children
- (object));
+ atk_object_get_n_accessible_children
+ (object));
}
static DBusMessage *
-impl_getChildren (DBusConnection * bus, DBusMessage * message,
- void *user_data)
+impl_getChildAtIndex (DBusConnection *bus,
+ DBusMessage *message,
+ void *user_data)
{
- AtkObject *object = get_object (message);
+ AtkObject *object = (AtkObject *) user_data;
+ DBusError error;
+ dbus_int32_t i;
+ AtkObject *child;
+
+ dbus_error_init (&error);
+ g_return_val_if_fail (ATK_IS_OBJECT (user_data),
+ droute_not_yet_handled_error (message));
+ if (!dbus_message_get_args (message, &error, DBUS_TYPE_INT32, &i, DBUS_TYPE_INVALID))
+ return spi_dbus_general_error (message);
+ child = atk_object_ref_accessible_child (object, i);
+ return spi_dbus_return_object (message, child, FALSE);
+}
+
+static DBusMessage *
+impl_getChildren (DBusConnection *bus,
+ DBusMessage *message,
+ void *user_data)
+{
+ AtkObject *object = (AtkObject *) user_data;
gint i;
gint count;
DBusMessage *reply;
DBusMessageIter iter, iter_array;
- if (!object)
- return spi_dbus_general_error (message);
+ g_return_val_if_fail (ATK_IS_OBJECT (user_data),
+ droute_not_yet_handled_error (message));
count = atk_object_get_n_accessible_children (object);
reply = dbus_message_new_method_return (message);
if (!reply) goto oom;
for (i = 0; i < count; i++)
{
AtkObject *child = atk_object_ref_accessible_child (object, i);
- char *path = spi_dbus_get_path (child);
+ char *path = atk_dbus_get_path (child);
if (path)
{
dbus_message_iter_append_basic (&iter_array, DBUS_TYPE_OBJECT_PATH,
}
static DBusMessage *
-impl_getIndexInParent (DBusConnection * bus, DBusMessage * message,
- void *user_data)
+impl_getIndexInParent (DBusConnection *bus,
+ DBusMessage *message,
+ void *user_data)
{
- AtkObject *object = get_object (message);
+ AtkObject *object = (AtkObject *) user_data;
dbus_uint32_t rv;
DBusMessage *reply;
- if (!object)
- return spi_dbus_general_error (message);
+ g_return_val_if_fail (ATK_IS_OBJECT (user_data),
+ droute_not_yet_handled_error (message));
rv = atk_object_get_index_in_parent (object);
reply = dbus_message_new_method_return (message);
if (reply)
return reply;
}
-#if 0
+static gboolean
+spi_init_relation_type_table (Accessibility_RelationType *types)
+{
+ gint i;
+
+ for (i = 0; i < ATK_RELATION_LAST_DEFINED; i++)
+ types[i] = Accessibility_RELATION_NULL;
+
+ types[ATK_RELATION_CONTROLLED_BY] = Accessibility_RELATION_CONTROLLED_BY;
+ types[ATK_RELATION_CONTROLLER_FOR] = Accessibility_RELATION_CONTROLLER_FOR;
+ types[ATK_RELATION_LABEL_FOR] = Accessibility_RELATION_LABEL_FOR;
+ types[ATK_RELATION_LABELLED_BY] = Accessibility_RELATION_LABELLED_BY;
+ types[ATK_RELATION_MEMBER_OF] = Accessibility_RELATION_MEMBER_OF;
+ types[ATK_RELATION_NODE_CHILD_OF] = Accessibility_RELATION_NODE_CHILD_OF;
+ types[ATK_RELATION_FLOWS_TO] = Accessibility_RELATION_FLOWS_TO;
+ types[ATK_RELATION_FLOWS_FROM] = Accessibility_RELATION_FLOWS_FROM;
+ types[ATK_RELATION_SUBWINDOW_OF] = Accessibility_RELATION_SUBWINDOW_OF;
+ types[ATK_RELATION_EMBEDS] = Accessibility_RELATION_EMBEDS;
+ types[ATK_RELATION_EMBEDDED_BY] = Accessibility_RELATION_EMBEDDED_BY;
+ types[ATK_RELATION_POPUP_FOR] = Accessibility_RELATION_POPUP_FOR;
+ types[ATK_RELATION_PARENT_WINDOW_OF] = Accessibility_RELATION_PARENT_WINDOW_OF;
+ types[ATK_RELATION_DESCRIPTION_FOR] = Accessibility_RELATION_DESCRIPTION_FOR;
+ types[ATK_RELATION_DESCRIBED_BY] = Accessibility_RELATION_DESCRIBED_BY;
+
+ return TRUE;
+}
+
+static Accessibility_RelationType
+spi_relation_type_from_atk_relation_type (AtkRelationType type)
+{
+ static gboolean is_initialized = FALSE;
+ static Accessibility_RelationType spi_relation_type_table [ATK_RELATION_LAST_DEFINED];
+ Accessibility_RelationType spi_type;
+
+ if (!is_initialized)
+ is_initialized = spi_init_relation_type_table (spi_relation_type_table);
+
+ if (type > ATK_RELATION_NULL && type < ATK_RELATION_LAST_DEFINED)
+ spi_type = spi_relation_type_table[type];
+ else
+ spi_type = Accessibility_RELATION_EXTENDED;
+ return spi_type;
+}
+
static DBusMessage *
-impl_getRelationSet (DBusConnection * bus, DBusMessage * message,
- void *user_data)
+impl_getRelationSet (DBusConnection *bus,
+ DBusMessage *message,
+ void *user_data)
{
+ AtkObject *object = (AtkObject *) user_data;
+ DBusMessage *reply;
+ AtkRelationSet *set;
+ DBusMessageIter iter, iter_array, iter_struct, iter_targets;
+ gint count;
+ gint i, j;
+
+ g_return_val_if_fail (ATK_IS_OBJECT (user_data),
+ droute_not_yet_handled_error (message));
+ reply = dbus_message_new_method_return (message);
+ if (!reply) return NULL;
+ set = atk_object_ref_relation_set (object);
+ dbus_message_iter_init_append (reply, &iter);
+ if (!dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, "(uao)", &iter_array))
+ {
+ goto oom;
+ }
+ count = atk_relation_set_get_n_relations (set);
+ for (i = 0; i < count; i++)
+ {
+ AtkRelation *r = atk_relation_set_get_relation (set, i);
+ AtkRelationType rt;
+ GPtrArray *target;
+ dbus_uint32_t type;
+ if (!r) continue;
+ rt= atk_relation_get_relation_type (r);
+ type = spi_relation_type_from_atk_relation_type (rt);
+ target = atk_relation_get_target (r);
+ if (!dbus_message_iter_open_container (&iter_array, DBUS_TYPE_STRUCT, NULL, &iter_struct))
+ {
+ goto oom;
+ }
+ dbus_message_iter_append_basic (&iter_struct, DBUS_TYPE_UINT32, &type);
+ if (!dbus_message_iter_open_container (&iter_struct, DBUS_TYPE_ARRAY, "o", &iter_targets))
+ {
+ goto oom;
+ }
+ for (j = 0; j < target->len; j++)
+ {
+ AtkObject *obj = target->pdata[j];
+ char *path;
+ if (!obj) continue;
+ path = atk_dbus_get_path (obj);
+ dbus_message_iter_append_basic (&iter_targets, DBUS_TYPE_OBJECT_PATH, &path);
+ }
+ dbus_message_iter_close_container (&iter_struct, &iter_targets);
+ dbus_message_iter_close_container (&iter_array, &iter_struct);
+ }
+ dbus_message_iter_close_container (&iter, &iter_array);
+oom:
+ // TODO: handle out of memory */
+ return reply;
}
-#endif
static gboolean
spi_init_role_lookup_table (Accessibility_Role * role_table)
}
static DBusMessage *
-impl_getRole (DBusConnection * bus, DBusMessage * message, void *user_data)
+impl_getRole (DBusConnection *bus, DBusMessage *message, void *user_data)
{
- AtkObject *object = get_object (message);
+ AtkObject *object = (AtkObject *) user_data;
gint role;
dbus_uint32_t rv;
DBusMessage *reply;
- if (!object)
- return spi_dbus_general_error (message);
+ g_return_val_if_fail (ATK_IS_OBJECT (user_data),
+ droute_not_yet_handled_error (message));
role = atk_object_get_role (object);
rv = spi_accessible_role_from_atk_role (role);
reply = dbus_message_new_method_return (message);
}
static DBusMessage *
-impl_getRoleName (DBusConnection * bus, DBusMessage * message,
- void *user_data)
+impl_getRoleName (DBusConnection *bus,
+ DBusMessage *message,
+ void *user_data)
{
- AtkObject *object = get_object (message);
+ AtkObject *object = (AtkObject *) user_data;
gint role;
const char *role_name;
DBusMessage *reply;
- if (!object)
- return spi_dbus_general_error (message);
+ g_return_val_if_fail (ATK_IS_OBJECT (user_data),
+ droute_not_yet_handled_error (message));
role = atk_object_get_role (object);
role_name = atk_role_get_name (role);
if (!role_name)
}
static DBusMessage *
-impl_getLocalizedRoleName (DBusConnection * bus, DBusMessage * message,
- void *user_data)
+impl_getLocalizedRoleName (DBusConnection *bus,
+ DBusMessage *message,
+ void *user_data)
{
- AtkObject *object = get_object (message);
+ AtkObject *object = (AtkObject *) user_data;
gint role;
const char *role_name;
DBusMessage *reply;
- if (!object)
- return spi_dbus_general_error (message);
+ g_return_val_if_fail (ATK_IS_OBJECT (user_data),
+ droute_not_yet_handled_error (message));
role = atk_object_get_role (object);
role_name = atk_role_get_localized_name (role);
if (!role_name)
return reply;
}
-static Accessibility_StateType *accessible_state_types = NULL;
-static AtkStateType *atk_state_types = NULL;
-
-static gboolean
-spi_init_state_type_tables (void)
-{
- gint i;
-
- if (accessible_state_types || atk_state_types)
- return FALSE;
- if (!accessible_state_types)
- accessible_state_types =
- g_new (Accessibility_StateType, ATK_STATE_LAST_DEFINED);
- if (!atk_state_types)
- atk_state_types = g_new (AtkStateType, Accessibility_STATE_LAST_DEFINED);
- g_return_val_if_fail (accessible_state_types, FALSE);
- g_return_val_if_fail (atk_state_types, FALSE);
-
- for (i = 0; i < Accessibility_STATE_LAST_DEFINED; i++)
- {
- atk_state_types[i] = ATK_STATE_INVALID;
- }
-
- for (i = 0; i < ATK_STATE_LAST_DEFINED; i++)
- {
- accessible_state_types[i] = Accessibility_STATE_INVALID;
- }
-
- accessible_state_types[ATK_STATE_ACTIVE] = Accessibility_STATE_ACTIVE;
- atk_state_types[Accessibility_STATE_ACTIVE] = ATK_STATE_ACTIVE;
- accessible_state_types[ATK_STATE_ARMED] = Accessibility_STATE_ARMED;
- atk_state_types[Accessibility_STATE_ARMED] = ATK_STATE_ARMED;
- accessible_state_types[ATK_STATE_BUSY] = Accessibility_STATE_BUSY;
- atk_state_types[Accessibility_STATE_BUSY] = ATK_STATE_BUSY;
- accessible_state_types[ATK_STATE_CHECKED] = Accessibility_STATE_CHECKED;
- atk_state_types[Accessibility_STATE_CHECKED] = ATK_STATE_CHECKED;
- accessible_state_types[ATK_STATE_DEFUNCT] = Accessibility_STATE_DEFUNCT;
- atk_state_types[Accessibility_STATE_DEFUNCT] = ATK_STATE_DEFUNCT;
- accessible_state_types[ATK_STATE_EDITABLE] = Accessibility_STATE_EDITABLE;
- atk_state_types[Accessibility_STATE_EDITABLE] = ATK_STATE_EDITABLE;
- accessible_state_types[ATK_STATE_ENABLED] = Accessibility_STATE_ENABLED;
- atk_state_types[Accessibility_STATE_ENABLED] = ATK_STATE_ENABLED;
- accessible_state_types[ATK_STATE_EXPANDABLE] =
- Accessibility_STATE_EXPANDABLE;
- atk_state_types[Accessibility_STATE_EXPANDABLE] = ATK_STATE_EXPANDABLE;
- accessible_state_types[ATK_STATE_EXPANDED] = Accessibility_STATE_EXPANDED;
- atk_state_types[Accessibility_STATE_EXPANDED] = ATK_STATE_EXPANDED;
- accessible_state_types[ATK_STATE_FOCUSABLE] = Accessibility_STATE_FOCUSABLE;
- atk_state_types[Accessibility_STATE_FOCUSABLE] = ATK_STATE_FOCUSABLE;
- accessible_state_types[ATK_STATE_FOCUSED] = Accessibility_STATE_FOCUSED;
- atk_state_types[Accessibility_STATE_FOCUSED] = ATK_STATE_FOCUSED;
- accessible_state_types[ATK_STATE_HORIZONTAL] =
- Accessibility_STATE_HORIZONTAL;
- atk_state_types[Accessibility_STATE_HORIZONTAL] = ATK_STATE_HORIZONTAL;
- accessible_state_types[ATK_STATE_ICONIFIED] = Accessibility_STATE_ICONIFIED;
- atk_state_types[Accessibility_STATE_ICONIFIED] = ATK_STATE_ICONIFIED;
- accessible_state_types[ATK_STATE_MODAL] = Accessibility_STATE_MODAL;
- atk_state_types[Accessibility_STATE_MODAL] = ATK_STATE_MODAL;
- accessible_state_types[ATK_STATE_MULTI_LINE] =
- Accessibility_STATE_MULTI_LINE;
- atk_state_types[Accessibility_STATE_MULTI_LINE] = ATK_STATE_MULTI_LINE;
- accessible_state_types[ATK_STATE_MULTISELECTABLE] =
- Accessibility_STATE_MULTISELECTABLE;
- atk_state_types[Accessibility_STATE_MULTISELECTABLE] =
- ATK_STATE_MULTISELECTABLE;
- accessible_state_types[ATK_STATE_OPAQUE] = Accessibility_STATE_OPAQUE;
- atk_state_types[Accessibility_STATE_OPAQUE] = ATK_STATE_OPAQUE;
- accessible_state_types[ATK_STATE_PRESSED] = Accessibility_STATE_PRESSED;
- atk_state_types[Accessibility_STATE_PRESSED] = ATK_STATE_PRESSED;
- accessible_state_types[ATK_STATE_RESIZABLE] = Accessibility_STATE_RESIZABLE;
- atk_state_types[Accessibility_STATE_RESIZABLE] = ATK_STATE_RESIZABLE;
- accessible_state_types[ATK_STATE_SELECTABLE] =
- Accessibility_STATE_SELECTABLE;
- atk_state_types[Accessibility_STATE_SELECTABLE] = ATK_STATE_SELECTABLE;
- accessible_state_types[ATK_STATE_SELECTED] = Accessibility_STATE_SELECTED;
- atk_state_types[Accessibility_STATE_SELECTED] = ATK_STATE_SELECTED;
- accessible_state_types[ATK_STATE_SENSITIVE] = Accessibility_STATE_SENSITIVE;
- atk_state_types[Accessibility_STATE_SENSITIVE] = ATK_STATE_SENSITIVE;
- accessible_state_types[ATK_STATE_SHOWING] = Accessibility_STATE_SHOWING;
- atk_state_types[Accessibility_STATE_SHOWING] = ATK_STATE_SHOWING;
- accessible_state_types[ATK_STATE_SINGLE_LINE] =
- Accessibility_STATE_SINGLE_LINE;
- atk_state_types[Accessibility_STATE_SINGLE_LINE] = ATK_STATE_SINGLE_LINE;
- accessible_state_types[ATK_STATE_STALE] = Accessibility_STATE_STALE;
- atk_state_types[Accessibility_STATE_STALE] = ATK_STATE_STALE;
- accessible_state_types[ATK_STATE_TRANSIENT] = Accessibility_STATE_TRANSIENT;
- atk_state_types[Accessibility_STATE_TRANSIENT] = ATK_STATE_TRANSIENT;
- accessible_state_types[ATK_STATE_VERTICAL] = Accessibility_STATE_VERTICAL;
- atk_state_types[Accessibility_STATE_VERTICAL] = ATK_STATE_VERTICAL;
- accessible_state_types[ATK_STATE_VISIBLE] = Accessibility_STATE_VISIBLE;
- atk_state_types[Accessibility_STATE_VISIBLE] = ATK_STATE_VISIBLE;
- accessible_state_types[ATK_STATE_MANAGES_DESCENDANTS] =
- Accessibility_STATE_MANAGES_DESCENDANTS;
- atk_state_types[Accessibility_STATE_MANAGES_DESCENDANTS] =
- ATK_STATE_MANAGES_DESCENDANTS;
- accessible_state_types[ATK_STATE_INDETERMINATE] =
- Accessibility_STATE_INDETERMINATE;
- atk_state_types[Accessibility_STATE_INDETERMINATE] =
- ATK_STATE_INDETERMINATE;
- accessible_state_types[ATK_STATE_TRUNCATED] = Accessibility_STATE_TRUNCATED;
- atk_state_types[Accessibility_STATE_TRUNCATED] = ATK_STATE_TRUNCATED;
- accessible_state_types[ATK_STATE_REQUIRED] = Accessibility_STATE_REQUIRED;
- atk_state_types[Accessibility_STATE_REQUIRED] = ATK_STATE_REQUIRED;
- accessible_state_types[ATK_STATE_INVALID_ENTRY] =
- Accessibility_STATE_INVALID_ENTRY;
- atk_state_types[Accessibility_STATE_INVALID_ENTRY] =
- ATK_STATE_INVALID_ENTRY;
- accessible_state_types[ATK_STATE_SUPPORTS_AUTOCOMPLETION] =
- Accessibility_STATE_SUPPORTS_AUTOCOMPLETION;
- atk_state_types[Accessibility_STATE_SUPPORTS_AUTOCOMPLETION] =
- ATK_STATE_SUPPORTS_AUTOCOMPLETION;
- accessible_state_types[ATK_STATE_SELECTABLE_TEXT] =
- Accessibility_STATE_SELECTABLE_TEXT;
- atk_state_types[Accessibility_STATE_SELECTABLE_TEXT] =
- ATK_STATE_SELECTABLE_TEXT;
- accessible_state_types[ATK_STATE_DEFAULT] = Accessibility_STATE_IS_DEFAULT;
- atk_state_types[Accessibility_STATE_IS_DEFAULT] = ATK_STATE_DEFAULT;
- accessible_state_types[ATK_STATE_VISITED] = Accessibility_STATE_VISITED;
- atk_state_types[Accessibility_STATE_VISITED] = ATK_STATE_VISITED;
-
-
- return TRUE;
-}
-
-static void
-get_state (AtkObject * object, dbus_uint32_t * array)
-{
- AtkStateSet *set = atk_object_ref_state_set (object);
- int i;
-
- array[0] = 0;
- array[1] = 0;
- if (!set)
- return;
- spi_init_state_type_tables ();
-
- g_assert (ATK_STATE_LAST_DEFINED <= 64);
- for (i = 0; i < ATK_STATE_LAST_DEFINED; i++)
- {
- if (atk_state_set_contains_state (set, i))
- {
- int a = accessible_state_types[i];
- g_assert (a < 64);
- BITARRAY_SET (array, a);
- }
- }
- g_object_unref (set);
-}
-
static DBusMessage *
-impl_getState (DBusConnection * bus, DBusMessage * message, void *user_data)
+impl_getState (DBusConnection *bus,
+ DBusMessage *message,
+ void *user_data)
{
- AtkObject *object = get_object (message);
+ AtkObject *object = (AtkObject *) user_data;
dbus_uint32_t rv[2];
+ dbus_uint32_t *array = rv;
DBusMessage *reply;
- if (!object)
- return spi_dbus_general_error (message);
- get_state (object, rv);
+ g_return_val_if_fail (ATK_IS_OBJECT (user_data),
+ droute_not_yet_handled_error (message));
+ spi_atk_state_to_dbus_array (object, rv);
reply = dbus_message_new_method_return (message);
if (reply)
{
- dbus_message_append_args (reply, DBUS_TYPE_ARRAY, DBUS_TYPE_INT32, &rv,
+ dbus_message_append_args (reply, DBUS_TYPE_ARRAY, DBUS_TYPE_UINT32, &array,
2, DBUS_TYPE_INVALID);
}
return reply;
}
static DBusMessage *
-impl_getAttributes (DBusConnection * bus, DBusMessage * message,
- void *user_data)
+impl_getAttributes (DBusConnection *bus,
+ DBusMessage *message,
+ void *user_data)
{
- AtkObject *object = get_object (message);
+ AtkObject *object = (AtkObject *) user_data;
DBusMessage *reply;
AtkAttributeSet *attributes;
AtkAttribute *attr = NULL;
gint n_attributes = 0;
gint i;
- if (!object)
- return spi_dbus_general_error (message);
+ g_return_val_if_fail (ATK_IS_OBJECT (user_data),
+ droute_not_yet_handled_error (message));
attributes = atk_object_get_attributes (object);
if (attributes)
}
static DBusMessage *
-impl_getApplication (DBusConnection * bus, DBusMessage * message,
- void *user_data)
+impl_getApplication (DBusConnection *bus,
+ DBusMessage *message,
+ void *user_data)
{
AtkObject *root = atk_get_root ();
return spi_dbus_return_object (message, root, FALSE);
}
static DRouteMethod methods[] = {
- //{impl_isEqual, "isEqual"},
+ {impl_getChildAtIndex, "getChildAtIndex"},
{impl_getChildren, "getChildren"},
{impl_getIndexInParent, "getIndexInParent"},
- //{impl_getRelationSet, "getRelationSet"},,o" },
+ {impl_getRelationSet, "getRelationSet"},
{impl_getRole, "getRole"},
{impl_getRoleName, "getRoleName"},
{impl_getLocalizedRoleName, "getLocalizedRoleName"},
{impl_get_name, impl_set_name, "name"},
{impl_get_description, impl_set_description, "description"},
{impl_get_parent, NULL, "parent"},
- //{impl_get_childCount, NULL, "childCount"},
- //{NULL, NULL, NULL, "role"},
+ {impl_get_childCount, NULL, "childCount"},
{NULL, NULL, NULL}
};
void
-spi_initialize_accessible (DRouteData * data)
+spi_initialize_accessible (DRoutePath *path)
{
- droute_add_interface (data, "org.freedesktop.atspi.Accessible",
- methods, properties,
- (DRouteGetDatumFunction) get_object_from_path, NULL);
+ droute_path_add_interface (path,
+ SPI_DBUS_INTERFACE_ACCESSIBLE,
+ methods,
+ properties);
};