summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Doffman <mdoff@altair-voyager.(none)>2009-10-07 09:42:50 +0100
committerMark Doffman <mdoff@altair-voyager.(none)>2009-10-07 09:42:50 +0100
commit15ac172c02ba704488039c0ddb33677e7ddc9ee2 (patch)
treefdeae991613e8fa1233ac11ab19bd72b362153da
parent590c185517181d7efc05875084fc8454cc539ee1 (diff)
downloadat-spi2-atk-15ac172c02ba704488039c0ddb33677e7ddc9ee2.tar.gz
2009-07-10 Mark Doffman <mark.doffman@codethink.co.uk>
Update the accessible adaptor for use without client side caching. Add a method to get the interfaces supported by an accessible.
-rw-r--r--atk-adaptor/accessible-adaptor.c25
-rw-r--r--atk-adaptor/accessible-marshaller.c2
-rw-r--r--atk-adaptor/accessible-marshaller.h3
3 files changed, 29 insertions, 1 deletions
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 */