commit 8ce33c852d9c0efc78c7f0dd0fcf971955f43041
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date:   Tue Jan 30 19:14:14 2018 +0100

    Initial interface

diff --git a/atspi/atspi-accessible.c b/atspi/atspi-accessible.c
index e7f1446..e87bd36 100644
--- a/atspi/atspi-accessible.c
+++ b/atspi/atspi-accessible.c
@@ -669,6 +669,62 @@ atspi_accessible_get_attributes_as_array (AtspiAccessible *obj, GError **error)
   return _atspi_dbus_return_attribute_array_from_message (message);
 }
 
+/**
+ * atspi_accessible_scroll_to:
+ * @obj: a pointer to the #AtspiAccessible object on which to operate.
+ * @type: a #long indicating where the object should be placed on the screen.
+ *
+ * Scrolls whatever container of the #AtspiAccessible object so it becomes
+ * visible on the screen.
+ *
+ * Returns: #TRUE if successful, #FALSE otherwise.
+ **/
+AtspiAccessible *
+atspi_accessible_scroll_to (AtspiAccessible *obj,
+                            AtspiScrollType type,
+                            GError **error)
+{
+  dbus_bool_t retval = FALSE;
+
+  g_return_val_if_fail (obj != NULL, NULL);
+
+  _atspi_dbus_call (obj, atspi_interface_accessible,
+                    "ScrollTo", error, "i", type, &retval);
+
+  return retval;
+}
+
+/**
+ * atspi_accessible_scroll_to_point:
+ * @obj: a pointer to the #AtspiAccessible object on which to operate.
+ * @type: a #long indicating whether the coordinates are relative to the screen,
+ *        to the window, or to the parent object.
+ * @x: the x coordinate of the point to reach
+ * @y: the y coordinate of the point to reach
+ *
+ * Scrolls whatever container of the #AtspiAccessible object so it becomes
+ * visible on the screen at a given position.
+ *
+ * Returns: #TRUE if successful, #FALSE otherwise.
+ **/
+AtspiAccessible *
+atspi_accessible_scroll_to_point (AtspiAccessible *obj,
+                                  AtspiCoordType type,
+                                  gint x,
+                                  gint y,
+                                  GError **error)
+{
+  dbus_bool_t retval = FALSE;
+
+  g_return_val_if_fail (obj != NULL, NULL);
+
+  _atspi_dbus_call (obj, atspi_interface_accessible,
+                    "ScrollTo", error, "iii", type, x, y &retval);
+
+  return retval;
+}
+
+
 /**
  * atspi_accessible_get_application:
  * @obj: The #AtspiAccessible being queried.
diff --git a/idl/accessible.didl b/idl/accessible.didl
index eee462f..8fb30ff 100644
--- a/idl/accessible.didl
+++ b/idl/accessible.didl
@@ -157,6 +157,29 @@ interface org.freestandards.atspi.Accessible {
 		STATE_LAST_DEFINED
 	} 
 
+	/*
+	  Describes where the object should be placed on the screen.
+	 */
+	enum uint32 ScrollType {
+		SCROLL_TOP_LEFT = 0,
+		SCROLL_BOTTOM_RIGHT,
+		SCROLL_TOP_EDGE,
+		SCROLL_BOTTOM_EDGE,
+		SCROLL_LEFT_EDGE,
+		SCROLL_RIGHT_EDGE,
+		SCROLL_ANYWHERE
+	}
+
+	/*
+          Specifies whether the coordinates are relative to the screen, to the
+          window, or to the parent object.
+	 */
+	enum uint32 CoordType {
+		COORD_SCREEN_RELATIVE = 0,
+		COORD_WINDOW_RELATIVE,
+		COORD_PARENT_RELATIVE
+	}
+
         /* 
 	  A two integer array representing a bit-field of currently held states.
 	 */
@@ -230,5 +253,22 @@ interface org.freestandards.atspi.Accessible {
 	method GetApplication reply {
 		Reference application;
 	}
+
+	/*
+	  Scroll this object so it becomes visible on the screen.
+	 */
+	method ScrollTo {
+		ScrollType type;
+	}
+
+	/*
+	  Scroll this object so it becomes visible on the screen at a given position.
+	 */
+	method ScrollToPoint {
+		CoordType type;
+		int32 x;
+		int32 y;
+	}
+
 }
 
diff --git a/xml/Accessible.xml b/xml/Accessible.xml
index 9240882..a7710ee 100644
--- a/xml/Accessible.xml
+++ b/xml/Accessible.xml
@@ -61,5 +61,15 @@
     <annotation name="com.trolltech.QtDBus.QtTypeName.Out0" value="QSpiObjectReference"/>
   </method>
 
+  <method name="ScrollTo">
+    <arg direction="in" name="type" type="u"/>
+  </method>
+
+  <method name="ScrollToPoint">
+    <arg direction="in" name="type" type="u"/>
+    <arg direction="in" name="x" type="i"/>
+    <arg direction="in" name="y" type="i"/>
+  </method>
+
 </interface>
 </node>
