From 15ac172c02ba704488039c0ddb33677e7ddc9ee2 Mon Sep 17 00:00:00 2001 From: Mark Doffman Date: Wed, 7 Oct 2009 09:42:50 +0100 Subject: [PATCH] 2009-07-10 Mark Doffman Update the accessible adaptor for use without client side caching. Add a method to get the interfaces supported by an accessible. --- atk-adaptor/accessible-adaptor.c | 25 +++++++++++++++++++++++++ atk-adaptor/accessible-marshaller.c | 2 +- atk-adaptor/accessible-marshaller.h | 3 +++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/atk-adaptor/accessible-adaptor.c b/atk-adaptor/accessible-adaptor.c index 1c24e92..c59f39e 100644 --- a/atk-adaptor/accessible-adaptor.c +++ b/atk-adaptor/accessible-adaptor.c @@ -546,6 +546,30 @@ impl_getApplication (DBusConnection *bus, return spi_dbus_return_object (message, root, FALSE); } +static DBusMessage * +impl_getInterfaces (DBusConnection *bus, + DBusMessage *message, + void *user_data) +{ + AtkObject *object = (AtkObject *) user_data; + gint role; + const char *role_name; + DBusMessage *reply; + DBusMessageIter iter, iter_array; + + 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) + { + dbus_message_iter_init_append (reply, &iter); + dbus_message_iter_open_container (&iter, DBUS_TYPE_ARRAY, "s", &iter_array); + append_atk_object_interfaces (object, &iter_array); + dbus_message_iter_close_container (&iter, &iter_array); + } + return reply; +} + static DRouteMethod methods[] = { {impl_getChildAtIndex, "getChildAtIndex"}, {impl_getChildren, "getChildren"}, @@ -557,6 +581,7 @@ static DRouteMethod methods[] = { {impl_getState, "getState"}, {impl_getAttributes, "getAttributes"}, {impl_getApplication, "getApplication"}, + {impl_getInterfaces, "getInterfaces"}, {NULL, NULL} }; diff --git a/atk-adaptor/accessible-marshaller.c b/atk-adaptor/accessible-marshaller.c index 0247804..b6b052b 100644 --- a/atk-adaptor/accessible-marshaller.c +++ b/atk-adaptor/accessible-marshaller.c @@ -86,7 +86,7 @@ spi_dbus_return_v_object (DBusMessageIter *iter, AtkObject *obj, int unref) /*---------------------------------------------------------------------------*/ -static void +void append_atk_object_interfaces (AtkObject *object, DBusMessageIter *iter) { const gchar *itf; diff --git a/atk-adaptor/accessible-marshaller.h b/atk-adaptor/accessible-marshaller.h index a150fe5..d372537 100644 --- a/atk-adaptor/accessible-marshaller.h +++ b/atk-adaptor/accessible-marshaller.h @@ -41,4 +41,7 @@ spi_atk_append_attribute_set (DBusMessageIter *iter, AtkAttributeSet *attr); void spi_atk_append_attribute_set_inner (DBusMessageIter *iter, AtkAttributeSet *attr); + +void +append_atk_object_interfaces (AtkObject *object, DBusMessageIter *iter); #endif /* ACCESSIBLE_MARSHALLER */ -- 2.7.4