* Boston, MA 02111-1307, USA.
*/
+#include "config.h"
#include "atkcomponent.h"
/**
- * atk_component_add_focus_handler:
+ * atk_component_add_focus_handler: (skip)
* @component: The #AtkComponent to attach the @handler to
* @handler: The #AtkFocusHandler to be attached to @component
*
* when this object receives focus events (in or out). If the handler is
* already added it is not added again
*
- * Deprecated: This method is deprecated since ATK version 2.9.4. If
- * you need to track when an object gains or lose the focus, use
- * state-changed:focused notification instead.
+ * Deprecated: 2.9.4: If you need to track when an object gains or
+ * lose the focus, use the #AtkObject::state-change "focused" notification instead.
*
* Returns: a handler id which can be used in atk_component_remove_focus_handler()
* or zero if the handler was already added.
* functions to be executed when this object receives focus events
* (in or out).
*
- * Deprecated: This method is deprecated since ATK version 2.9.4. If
- * you need to track when an object gains or lose the focus, use
- * state-changed:focused notification instead.
+ * Deprecated: 2.9.4: If you need to track when an object gains or
+ * lose the focus, use the #AtkObject::state-change "focused" notification instead.
*
**/
void
* Gets a reference to the accessible child, if one exists, at the
* coordinate point specified by @x and @y.
*
- * Returns: (transfer full): a reference to the accessible child, if one exists
+ * Returns: (nullable) (transfer full): a reference to the accessible
+ * child, if one exists
**/
AtkObject*
atk_component_ref_accessible_at_point (AtkComponent *component,
/**
* atk_component_get_extents:
* @component: an #AtkComponent
- * @x: address of #gint to put x coordinate
- * @y: address of #gint to put y coordinate
- * @width: address of #gint to put width
- * @height: address of #gint to put height
+ * @x: (out) (optional): address of #gint to put x coordinate
+ * @y: (out) (optional): address of #gint to put y coordinate
+ * @width: (out) (optional): address of #gint to put width
+ * @height: (out) (optional): address of #gint to put height
* @coord_type: specifies whether the coordinates are relative to the screen
* or to the components top level window
*
/**
* atk_component_get_position:
* @component: an #AtkComponent
- * @x: address of #gint to put x coordinate position
- * @y: address of #gint to put y coordinate position
+ * @x: (out) (optional): address of #gint to put x coordinate position
+ * @y: (out) (optional): address of #gint to put y coordinate position
* @coord_type: specifies whether the coordinates are relative to the screen
* or to the components top level window
*
/**
* atk_component_get_size:
* @component: an #AtkComponent
- * @width: address of #gint to put width of @component
- * @height: address of #gint to put height of @component
+ * @width: (out) (optional): address of #gint to put width of @component
+ * @height: (out) (optional): address of #gint to put height of @component
*
* Gets the size of the @component in terms of width and height.
*
* @x: x coordinate
* @y: y coordinate
* @coord_type: specifies whether the coordinates are relative to the screen
- * or to the components top level window
+ * or to the component's top level window
+ *
+ * Sets the position of @component.
+ *
+ * Contrary to atk_component_scroll_to, this does not trigger any scrolling,
+ * this just moves @component in its parent.
*
- * Sets the postition of @component.
- *
* Returns: %TRUE or %FALSE whether or not the position was set or not
**/
gboolean
return FALSE;
}
+/**
+ * atk_component_scroll_to:
+ * @component: an #AtkComponent
+ * @type: specify where the object should be made visible.
+ *
+ * Makes @component visible on the screen by scrolling all necessary parents.
+ *
+ * Contrary to atk_component_set_position, this does not actually move
+ * @component in its parent, this only makes the parents scroll so that the
+ * object shows up on the screen, given its current position within the parents.
+ *
+ * Returns: whether scrolling was successful.
+ *
+ * Since: 2.30
+ */
+gboolean
+atk_component_scroll_to (AtkComponent *component,
+ AtkScrollType type)
+{
+ AtkComponentIface *iface = NULL;
+ g_return_val_if_fail (ATK_IS_COMPONENT (component), FALSE);
+
+ iface = ATK_COMPONENT_GET_IFACE (component);
+
+ if (iface->scroll_to)
+ return (iface->scroll_to) (component, type);
+
+ return FALSE;
+}
+
+/**
+ * atk_component_scroll_to_point:
+ * @component: an #AtkComponent
+ * @coords: specify whether coordinates are relative to the screen or to the
+ * parent object.
+ * @x: x-position where to scroll to
+ * @y: y-position where to scroll to
+ *
+ * Makes an object visible on the screen at a given position by scrolling all
+ * necessary parents.
+ *
+ * Returns: whether scrolling was successful.
+ *
+ * Since: 2.30
+ */
+gboolean
+atk_component_scroll_to_point (AtkComponent *component,
+ AtkCoordType coords,
+ gint x,
+ gint y)
+{
+ AtkComponentIface *iface = NULL;
+ g_return_val_if_fail (ATK_IS_COMPONENT (component), FALSE);
+
+ iface = ATK_COMPONENT_GET_IFACE (component);
+
+ if (iface->scroll_to_point)
+ return (iface->scroll_to_point) (component, coords, x, y);
+
+ return FALSE;
+}
+
static gboolean
atk_component_real_contains (AtkComponent *component,
gint x,