document: add support for newly added AtkDocument methods and signals
authorAlejandro Piñeiro <apinheiro@igalia.com>
Thu, 28 Nov 2013 17:14:20 +0000 (18:14 +0100)
committerAlejandro Piñeiro <apinheiro@igalia.com>
Mon, 2 Dec 2013 17:48:00 +0000 (18:48 +0100)
It also bumps the atk dependency

https://bugzilla.gnome.org/show_bug.cgi?id=719508

atk-adaptor/adaptors/document-adaptor.c
atk-adaptor/event.c
configure.ac

index 062690a..f44f0c6 100644 (file)
 #include "object.h"
 #include "introspection.h"
 
+static dbus_bool_t
+impl_get_CurrentPageNumber (DBusMessageIter * iter, void *user_data)
+{
+  AtkDocument *document = (AtkDocument *) user_data;
+  g_return_val_if_fail (ATK_IS_DOCUMENT (user_data), FALSE);
+  return droute_return_v_int32 (iter, atk_document_get_current_page_number (document));
+}
+
+static dbus_bool_t
+impl_get_PageCount (DBusMessageIter * iter, void *user_data)
+{
+  AtkDocument *document = (AtkDocument *) user_data;
+  g_return_val_if_fail (ATK_IS_DOCUMENT (user_data), FALSE);
+  return droute_return_v_int32 (iter, atk_document_get_page_count (document));
+}
+
 static DBusMessage *
 impl_GetLocale (DBusConnection * bus, DBusMessage * message, void *user_data)
 {
@@ -111,9 +127,15 @@ static DRouteMethod methods[] = {
   {NULL, NULL}
 };
 
+static DRouteProperty properties[] = {
+  {impl_get_CurrentPageNumber, NULL, "CurrentPageNumber"},
+  {impl_get_PageCount, NULL, "PageCount"},
+  {NULL, NULL, NULL}
+};
+
 void
 spi_initialize_document (DRoutePath * path)
 {
   droute_path_add_interface (path,
-                             ATSPI_DBUS_INTERFACE_DOCUMENT, spi_org_a11y_atspi_Document, methods, NULL);
+                             ATSPI_DBUS_INTERFACE_DOCUMENT, spi_org_a11y_atspi_Document, methods, properties);
 };
index d8a74cc..fa7cbbd 100644 (file)
@@ -686,6 +686,7 @@ window_event_listener (GSignalInvocationHint * signal_hint,
  * Gtk:AtkDocument:load-complete ->  document:load-complete
  * Gtk:AtkDocument:load-stopped  ->  document:load-stopped
  * Gtk:AtkDocument:reload        ->  document:reload
+ * Gtk:AtkDocument:page-changed  ->  document:page-changed
  */
 static gboolean
 document_event_listener (GSignalInvocationHint * signal_hint,
@@ -695,13 +696,18 @@ document_event_listener (GSignalInvocationHint * signal_hint,
   AtkObject *accessible;
   GSignalQuery signal_query;
   const gchar *name, *s;
+  gint detail1 = 0;
 
   g_signal_query (signal_hint->signal_id, &signal_query);
   name = signal_query.signal_name;
 
+  if (n_param_values > 0) // on the case of page-changed
+    if (G_VALUE_TYPE (&param_values[1]) == G_TYPE_INT)
+      detail1 = g_value_get_int (&param_values[1]);
+
   accessible = ATK_OBJECT (g_value_get_object (&param_values[0]));
   s = atk_object_get_name (accessible);
-  emit_event (accessible, ITF_EVENT_DOCUMENT, name, "", 0, 0,
+  emit_event (accessible, ITF_EVENT_DOCUMENT, name, "", detail1, 0,
               DBUS_TYPE_STRING_AS_STRING, s, append_basic);
 
   return TRUE;
@@ -1159,6 +1165,8 @@ spi_atk_register_event_listeners (void)
   add_signal_listener (document_event_listener, "Gtk:AtkDocument:reload");
   add_signal_listener (document_event_listener,
                        "Gtk:AtkDocument:load-stopped");
+  add_signal_listener (document_event_listener,
+                       "Gtk:AtkDocument:page-changed");
   /* TODO Fake this event on the client side */
   add_signal_listener (state_event_listener, "Gtk:AtkObject:state-change");
   /* TODO */
index 0dc0a25..701ebc4 100644 (file)
@@ -51,7 +51,7 @@ PKG_CHECK_MODULES(GMODULE, [gmodule-2.0 >= 2.0.0])
 AC_SUBST(GMODULE_LIBS)
 AC_SUBST(GMODULE_CFLAGS)
 
-PKG_CHECK_MODULES(ATK, [atk >= 2.11.2])
+PKG_CHECK_MODULES(ATK, [atk >= 2.11.3])
 AC_SUBST(ATK_LIBS)
 AC_SUBST(ATK_CFLAGS)