2009-07-10 Mark Doffman <mark.doffman@codethink.co.uk>
authorMark Doffman <mdoff@altair-voyager.(none)>
Wed, 7 Oct 2009 08:42:50 +0000 (09:42 +0100)
committerMark Doffman <mdoff@altair-voyager.(none)>
Wed, 7 Oct 2009 08:42:50 +0000 (09:42 +0100)
        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
atk-adaptor/accessible-marshaller.c
atk-adaptor/accessible-marshaller.h

index 1c24e92..c59f39e 100644 (file)
@@ -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}
 };
 
index 0247804..b6b052b 100644 (file)
@@ -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;
index a150fe5..d372537 100644 (file)
@@ -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 */