X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=atspi%2Fatspi-component.c;h=c2463488f2b41c2c3cf466ea129d70539ba86957;hb=20039e5dd5f5a5c2defdfc294ff2e841e5fad93d;hp=a4c3632472cb1e4119c48c5e2e3ac5d73212889a;hpb=fe1d7ed88ac5d931029d008c727823de2c1d5e0a;p=platform%2Fupstream%2Fat-spi2-core.git diff --git a/atspi/atspi-component.c b/atspi/atspi-component.c index a4c3632..c246348 100644 --- a/atspi/atspi-component.c +++ b/atspi/atspi-component.c @@ -28,6 +28,7 @@ */ #include "atspi-private.h" +#include "atspi-accessible-private.h" void atspi_rect_free (AtspiRect *rect) @@ -39,13 +40,10 @@ AtspiRect * atspi_rect_copy (AtspiRect *src) { AtspiRect *dst = g_new (AtspiRect, 1); - if (dst) - { - dst->x = src->x; - dst->y = src->y; - dst->height = src->height; - dst->width = src->width; - } + dst->x = src->x; + dst->y = src->y; + dst->height = src->height; + dst->width = src->width; return dst; } @@ -55,11 +53,8 @@ AtspiPoint * atspi_point_copy (AtspiPoint *src) { AtspiPoint *dst = g_new (AtspiPoint, 1); - if (dst) - { - dst->x = src->x; - dst->y = src->y; - } + dst->x = src->x; + dst->y = src->y; return dst; } @@ -68,15 +63,15 @@ G_DEFINE_BOXED_TYPE (AtspiPoint, atspi_point, atspi_point_copy, g_free) /** * atspi_component_contains: * @obj: a pointer to the #AtspiComponent to query. - * @x: a #long specifying the x coordinate in question. - * @y: a #long specifying the y coordinate in question. + * @x: a #gint specifying the x coordinate in question. + * @y: a #gint specifying the y coordinate in question. * @ctype: the desired coordinate system of the point (@x, @y) * (e.g. CSPI_COORD_TYPE_WINDOW, CSPI_COORD_TYPE_SCREEN). * - * Query whether a given #AtspiComponent contains a particular point. + * Queries whether a given #AtspiComponent contains a particular point. * - * Returns: a #TRUE if the specified component contains the point (@x, @y), - * otherwise #FALSE. + * Returns: #TRUE if the specified component contains the point (@x, @y), + * #FALSE otherwise. **/ gboolean atspi_component_contains (AtspiComponent *obj, @@ -90,7 +85,7 @@ atspi_component_contains (AtspiComponent *obj, g_return_val_if_fail (obj != NULL, FALSE); - _atspi_dbus_call (obj, atspi_interface_component, "Contains", error, "iin=>b", d_x, d_y, d_ctype, &retval); + _atspi_dbus_call (obj, atspi_interface_component, "Contains", error, "iiu=>b", d_x, d_y, d_ctype, &retval); return retval; } @@ -103,11 +98,12 @@ atspi_component_contains (AtspiComponent *obj, * @ctype: the coordinate system of the point (@x, @y) * (e.g. ATSPI_COORD_TYPE_WINDOW, ATSPI_COORD_TYPE_SCREEN). * - * Get the accessible child at a given coordinate within an #AtspiComponent. + * Gets the accessible child at a given coordinate within an #AtspiComponent. * - * Returns: (transfer full): a pointer to an #AtspiAccessible child of the - * specified component which contains the point (@x, @y), or NULL of - * no child contains the point. + * Returns: (nullable) (transfer full): a pointer to an + * #AtspiAccessible child of the specified component which + * contains the point (@x, @y), or NULL if no child contains + * the point. **/ AtspiAccessible * atspi_component_get_accessible_at_point (AtspiComponent *obj, @@ -126,16 +122,16 @@ atspi_component_get_accessible_at_point (AtspiComponent *obj, return _atspi_dbus_return_accessible_from_message (reply); } + /** * atspi_component_get_extents: * @obj: a pointer to the #AtspiComponent to query. * @ctype: the desired coordinate system into which to return the results, * (e.g. ATSPI_COORD_TYPE_WINDOW, ATSPI_COORD_TYPE_SCREEN). * - * Returns: A #AtspiRect giving the accessible's extents. - * - * Get the bounding box of the specified #AtspiComponent. + * Gets the bounding box of the specified #AtspiComponent. * + * Returns: An #AtspiRect giving the accessible's extents. **/ AtspiRect * atspi_component_get_extents (AtspiComponent *obj, @@ -143,10 +139,21 @@ atspi_component_get_extents (AtspiComponent *obj, { dbus_uint32_t d_ctype = ctype; AtspiRect bbox; + AtspiAccessible *accessible; bbox.x = bbox.y = bbox.width = bbox.height = -1; g_return_val_if_fail (obj != NULL, atspi_rect_copy (&bbox)); + accessible = ATSPI_ACCESSIBLE (obj); + if (accessible->priv->cache && ctype == ATSPI_COORD_TYPE_SCREEN) + { + GValue *val = g_hash_table_lookup (accessible->priv->cache, "Component.ScreenExtents"); + if (val) + { + return g_value_dup_boxed (val); + } + } + _atspi_dbus_call (obj, atspi_interface_component, "GetExtents", error, "u=>(iiii)", d_ctype, &bbox); return atspi_rect_copy (&bbox); } @@ -157,9 +164,9 @@ atspi_component_get_extents (AtspiComponent *obj, * @ctype: the desired coordinate system into which to return the results, * (e.g. ATSPI_COORD_TYPE_WINDOW, ATSPI_COORD_TYPE_SCREEN). * - * returns: A #AtspiPoint giving the position. - * Get the minimum x and y coordinates of the specified #AtspiComponent. + * Gets the minimum x and y coordinates of the specified #AtspiComponent. * + * returns: An #AtspiPoint giving the @obj's position. **/ AtspiPoint * atspi_component_get_position (AtspiComponent *obj, @@ -184,10 +191,10 @@ atspi_component_get_position (AtspiComponent *obj, /** * atspi_component_get_size: * @obj: a pointer to the #AtspiComponent to query. - * returns: A #AtspiPoint giving the size. * - * Get the size of the specified #AtspiComponent. + * Gets the size of the specified #AtspiComponent. * + * returns: An #AtspiPoint giving the @obj's size. **/ AtspiPoint * atspi_component_get_size (AtspiComponent *obj, GError **error) @@ -209,7 +216,7 @@ atspi_component_get_size (AtspiComponent *obj, GError **error) * atspi_component_get_layer: * @obj: a pointer to the #AtspiComponent to query. * - * Query which layer the component is painted into, to help determine its + * Queries which layer the component is painted into, to help determine its * visibility in terms of stacking order. * * Returns: the #AtspiComponentLayer into which this component is painted. @@ -228,10 +235,10 @@ atspi_component_get_layer (AtspiComponent *obj, GError **error) * atspi_component_get_mdi_z_order: * @obj: a pointer to the #AtspiComponent to query. * - * Query the z stacking order of a component which is in the MDI or window + * Queries the z stacking order of a component which is in the MDI or window * layer. (Bigger z-order numbers mean nearer the top) * - * Returns: a short integer indicating the stacking order of the component + * Returns: a #gshort indicating the stacking order of the component * in the MDI layer, or -1 if the component is not in the MDI layer. **/ gshort @@ -248,7 +255,7 @@ atspi_component_get_mdi_z_order (AtspiComponent *obj, GError **error) * atspi_component_grab_focus: * @obj: a pointer to the #AtspiComponent on which to operate. * - * Attempt to set the keyboard input focus to the specified + * Attempts to set the keyboard input focus to the specified * #AtspiComponent. * * Returns: #TRUE if successful, #FALSE otherwise. @@ -265,14 +272,54 @@ atspi_component_grab_focus (AtspiComponent *obj, GError **error) } /** + * atspi_component_grab_highlight: + * @obj: a pointer to the #AtspiComponent on which to operate. + * + * Attempts to set highlight to the specified + * #AtspiComponent. + * + * Returns: #TRUE if successful, #FALSE otherwise. + * + **/ +gboolean +atspi_component_grab_highlight (AtspiComponent *obj, GError **error) +{ + dbus_bool_t retval = FALSE; + + _atspi_dbus_call (obj, atspi_interface_component, "GrabHighlight", error, "=>b", &retval); + + return retval; +} + +/** + * atspi_component_clear_highlight: + * @obj: a pointer to the #AtspiComponent on which to operate. + * + * Attempts to clear highlight on the specified + * #AtspiComponent. + * + * Returns: #TRUE if successful, #FALSE otherwise. + * + **/ +gboolean +atspi_component_clear_highlight (AtspiComponent *obj, GError **error) +{ + dbus_bool_t retval = FALSE; + + _atspi_dbus_call (obj, atspi_interface_component, "ClearHighlight", error, "=>b", &retval); + + return retval; +} + +/** * atspi_component_get_alpha: * @obj: The #AtspiComponent to be queried. * - * Get the opacity/alpha value of a component, if alpha blending is in use. + * Gets the opacity/alpha value of a component, if alpha blending is in use. * - * Returns: the opacity value of a component, as a double between 0.0 and 1.0. + * Returns: the opacity value of a component, as a #gdouble between 0.0 and 1.0. **/ -gdouble +gdouble atspi_component_get_alpha (AtspiComponent *obj, GError **error) { double retval = 1; @@ -292,10 +339,9 @@ atspi_component_get_alpha (AtspiComponent *obj, GError **error) * @ctype: the coordinate system in which the position is specified. * (e.g. ATSPI_COORD_TYPE_WINDOW, ATSPI_COORD_TYPE_SCREEN). * - * Returns: #TRUE if successful; #FALSE otherwise. - * - * Move and resize the specified component. + * Moves and resizes the specified component. * + * Returns: #TRUE if successful; #FALSE otherwise. **/ gboolean atspi_component_set_extents (AtspiComponent *obj, @@ -315,10 +361,19 @@ atspi_component_set_extents (AtspiComponent *obj, g_return_val_if_fail (obj != NULL, FALSE); + if (!aobj->parent.app || !aobj->parent.app->bus_name) + { + g_set_error_literal (error, ATSPI_ERROR, ATSPI_ERROR_APPLICATION_GONE, + _("The application no longer exists")); + return FALSE; + } + message = dbus_message_new_method_call (aobj->parent.app->bus_name, aobj->parent.path, atspi_interface_component, "SetExtents"); + if (!message) + return FALSE; dbus_message_iter_init_append (message, &iter); if (!dbus_message_iter_open_container (&iter, DBUS_TYPE_STRUCT, NULL, &iter_struct)) @@ -348,9 +403,9 @@ atspi_component_set_extents (AtspiComponent *obj, * @ctype: the coordinate system in which the position is specified. * (e.g. ATSPI_COORD_TYPE_WINDOW, ATSPI_COORD_TYPE_SCREEN). * - * Returns: #TRUE if successful; #FALSE otherwise. - * * Moves the component to the specified position. + * + * Returns: #TRUE if successful; #FALSE otherwise. **/ gboolean atspi_component_set_position (AtspiComponent *obj, @@ -377,9 +432,9 @@ atspi_component_set_position (AtspiComponent *obj, * @width: the width to which the component should be resized. * @height: the height to which the component should be resized. * - * Returns: #TRUE if successful; #FALSE otherwise. + * Resizes the specified component to the given coordinates. * - * Resize the specified component to the given coordinates. + * Returns: #TRUE if successful; #FALSE otherwise. **/ gboolean atspi_component_set_size (AtspiComponent *obj, @@ -398,6 +453,23 @@ atspi_component_set_size (AtspiComponent *obj, return ret; } +/** + * atspi_component_get_highlight_index + * @obj: a pointer to the #AtspiComponent to query. + * + * Returns: highlight index of object if (>0), 0 if highlight index is not set + * or -1 if an error occured. + **/ +int +atspi_component_get_highlight_index (AtspiComponent *obj, GError **error) +{ + gint ret = -1; + g_return_val_if_fail (obj != NULL, -1); + _atspi_dbus_get_property (obj, atspi_interface_component, + "HighlightIndex", error, "i", &ret); + return ret; +} + static void atspi_component_base_init (AtspiComponent *klass) {