*
* Gets the name of an #AtspiAccessible object.
*
- * Returns: a UTF-8 string indicating the name of the #AtspiAccessible object
+ * Returns: a UTF-8 string indicating the name of the #AtspiAccessible object
* or NULL on exception.
**/
gchar *
return g_strdup (obj->name);
}
+
+/**
+ * atspi_accessible_get_unique_id:
+ * @obj: a pointer to the #AtspiAccessible object on which to operate.
+ *
+ * Gets the identificator, uniquely identifying object, or NULL if an error occured.
+ *
+ * Returns: a UTF-8 string describing the #AtspiAccessible object
+ * or NULL on exception or NULL object passed.
+ **/
+gchar *
+atspi_accessible_get_unique_id(AtspiAccessible *obj, GError **error)
+{
+ if (!obj) {
+ g_set_error(error, ATSPI_ERROR, ATSPI_ERROR_IPC, "argument is null");
+ return NULL;
+ }
+
+ gchar *id = NULL;
+ gchar *bus_name = atspi_accessible_get_bus_name(obj, error);
+ if (bus_name && bus_name[0]) {
+ gchar *path = atspi_accessible_get_path(obj, error);
+ if (path && path[0])
+ id = g_strdup_printf("%s:%s", bus_name, path);
+ else
+ g_set_error(error, ATSPI_ERROR, ATSPI_ERROR_IPC, "failed to get path");
+ g_free(path);
+ }
+ else
+ g_set_error(error, ATSPI_ERROR, ATSPI_ERROR_IPC, "failed to get bus name");
+ g_free(bus_name);
+ return id;
+}
+
+/**
+ * atspi_accessible_get_bus_name:
+ * @obj: a pointer to the #AtspiAccessible object on which to operate.
+ *
+ * Gets the bus name, where object belongs.
+ *
+ * Returns: a UTF-8 string describing the #AtspiAccessible object's
+ * bus name or empty string on exception or NULL object passed.
+ **/
+gchar *
+atspi_accessible_get_bus_name(AtspiAccessible *obj, GError **error)
+{
+ if (!obj || !obj->parent.app)
+ return g_strdup("");
+ return g_strdup (obj->parent.app->bus_name);
+}
+
+/**
+ * atspi_accessible_get_path:
+ * @obj: a pointer to the #AtspiAccessible object on which to operate.
+ *
+ * Gets the path, uniquely identifying object over its bus name.
+ *
+ * Returns: a UTF-8 string describing the #AtspiAccessible object
+ * or empty string on exception or NULL object passed.
+ **/
+gchar *
+atspi_accessible_get_path(AtspiAccessible *obj, GError **error)
+{
+ static const char *prefix = "/org/a11y/atspi/accessible/";
+ static int prefix_len = 27;
+
+ if (!obj)
+ return g_strdup("");
+ AtspiObject *o = ATSPI_OBJECT (obj);
+ if (!o)
+ return g_strdup("");
+ if (strncmp(o->path, prefix, prefix_len) == 0)
+ return g_strdup(o->path + prefix_len);
+ return g_strdup (o->path);
+}
+
+/**
+ * atspi_accessible_get_navigable_at_point:
+ * @root: a pointer to the #AtspiAccessible to start search from.
+ * @x: a #gint specifying the x coordinate of the point in question.
+ * @y: a #gint specifying the y coordinate of the point in question.
+ * @ctype: the coordinate system of the point (@x, @y)
+ * (e.g. ATSPI_COORD_TYPE_WINDOW, ATSPI_COORD_TYPE_SCREEN).
+ *
+ * Finds the accessible element closest to user (highest in z-order), at a given coordinate within an #AtspiAccessible.
+ * This should be the element, that should be picked, when doing mouse click or finger tap at given coordinates.
+ *
+ * Returns: (nullable) (transfer full): a pointer to an
+ * #AtspiAccessible descendant (of any depth) of the specified component which
+ * contains the point (@x, @y), or NULL if no descendant contains
+ * the point.
+ **/
+AtspiAccessible *
+atspi_accessible_get_navigable_at_point (AtspiAccessible *root,
+ gint x,
+ gint y,
+ AtspiCoordType ctype, GError **error)
+{
+ dbus_int32_t d_x = x, d_y = y;
+ dbus_uint32_t d_ctype = ctype;
+ DBusMessage *reply;
+ AtspiAccessible *return_value = NULL;
+ unsigned char recurse = 0;
+
+ g_return_val_if_fail (root != NULL, FALSE);
+ do {
+ reply = _atspi_dbus_call_partial (root, atspi_interface_accessible, "GetNavigableAtPoint", error, "iiu", d_x, d_y, d_ctype);
+
+ AtspiAccessible *tmp = _atspi_dbus_return_accessible_and_recurse_info_from_message (reply, &recurse);
+ if (!tmp) break;
+ if (return_value)
+ g_object_unref(return_value);
+ return_value = root = tmp;
+ } while(recurse);
+ return return_value;
+}
+
/**
* atspi_accessible_get_description:
* @obj: a pointer to the #AtspiAccessible object on which to operate.
*
* Gets the description of an #AtspiAccessible object.
*
- * Returns: a UTF-8 string describing the #AtspiAccessible object
+ * Returns: a UTF-8 string describing the #AtspiAccessible object
* or NULL on exception.
**/
gchar *
* atspi_accessible_get_index_in_parent:
* @obj: a pointer to the #AtspiAccessible object on which to operate.
*
- * Gets the index of an #AtspiAccessible object within its parent's
+ * Gets the index of an #AtspiAccessible object within its parent's
* #AtspiAccessible children list.
*
* Returns: a #glong indicating the index of the #AtspiAccessible object
* atspi_accessible_get_localized_role_name:
* @obj: a pointer to the #AtspiAccessible object on which to operate.
*
- * Gets a UTF-8 string corresponding to the name of the role played by an
+ * Gets a UTF-8 string corresponding to the name of the role played by an
* object, translated to the current locale.
* This method will return useful values for roles that fall outside the
* enumeration used in atspi_accessible_getRole ().
*
- * Returns: a localized, UTF-8 string specifying the type of UI role played
+ * Returns: a localized, UTF-8 string specifying the type of UI role played
* by an #AtspiAccessible object.
*
**/
dbus_message_unref (reply);
_atspi_accessible_add_cache (obj, ATSPI_CACHE_STATES);
}
-
return g_object_ref (obj->states);
}
* atspi_accessible_get_attributes:
* @obj: The #AtspiAccessible being queried.
*
- * Gets the #AttributeSet representing any assigned
+ * Gets the #AttributeSet representing any assigned
* name-value pair attributes or annotations for this object.
* For typographic, textual, or textually-semantic attributes, see
* atspi_text_get_attributes instead.
* atspi_accessible_get_attributes_as_array:
* @obj: The #AtspiAccessible being queried.
*
- * Gets a #GArray representing any assigned
+ * Gets a #GArray representing any assigned
* name-value pair attributes or annotations for this object.
* For typographic, textual, or textually-semantic attributes, see
* atspi_text_get_attributes_as_array instead.
* Gets the application id for a #AtspiAccessible object.
* Only works on application root objects.
*
- * Returns: a positive #gint indicating the id for the #AtspiAccessible object
+ * Returns: a positive #gint indicating the id for the #AtspiAccessible object
* or -1 on exception.
**/
gint
* atspi_accessible_is_action:
* @obj: a pointer to the #AtspiAccessible instance to query.
*
- * Query whether the specified #AtspiAccessible implements the
+ * Query whether the specified #AtspiAccessible implements the
* #AtspiAction interface.
*
* Returns: #TRUE if @obj implements the #AtspiAction interface,
atspi_interface_application);
}
-/**
+/**
* atspi_accessible_is_collection:
* @obj: a pointer to the #AtspiAccessible instance to query.
*
return _atspi_accessible_is_a (obj,
atspi_interface_editable_text);
}
-
+
/**
* atspi_accessible_is_hypertext:
* @obj: a pointer to the #AtspiAccessible instance to query.
* atspi_accessible_is_hyperlink:
* @obj: a pointer to the #AtspiAccessible instance to query.
*
- * Query whether the specified #AtspiAccessible implements the
+ * Query whether the specified #AtspiAccessible implements the
* #AtspiHyperlink interface.
*
* Returns: #TRUE if @obj implements the #AtspiHypertext interface,
* atspi_accessible_is_text:
* @obj: a pointer to the #AtspiAccessible instance to query.
*
- * Query whether the specified #AtspiAccessible implements the
+ * Query whether the specified #AtspiAccessible implements the
* #AtspiText interface.
*
* Returns: #TRUE if @obj implements the #AtspiText interface,
}
/**
- * atspi_accessible_get_action:
+ * atspi_accessible_get_action: (rename-to atspi_accessible_get_action_iface)
* @obj: a pointer to the #AtspiAccessible instance to query.
*
* Gets the #AtspiAction interface for an #AtspiAccessible.
* instance, or NULL if @obj does not implement #AtspiAction.
*
* Deprecated: 2.10: Use atspi_accessible_get_action_iface instead.
- * Rename to: atspi_accessible_get_action_iface
**/
AtspiAction *
atspi_accessible_get_action (AtspiAccessible *accessible)
{
return (_atspi_accessible_is_a (accessible, atspi_interface_action) ?
- g_object_ref (ATSPI_ACTION (accessible)) : NULL);
+ g_object_ref (ATSPI_ACTION (accessible)) : NULL);
}
/**
atspi_accessible_get_action_iface (AtspiAccessible *accessible)
{
return (_atspi_accessible_is_a (accessible, atspi_interface_action) ?
- g_object_ref (ATSPI_ACTION (accessible)) : NULL);
+ g_object_ref (ATSPI_ACTION (accessible)) : NULL);
}
/**
- * atspi_accessible_get_collection:
+ * atspi_accessible_get_collection: (rename-to atspi_accessible_get_collection_iface)
* @obj: a pointer to the #AtspiAccessible instance to query.
*
* Gets the #AtspiCollection interface for an #AtspiAccessible.
* instance, or NULL if @obj does not implement #AtspiCollection.
*
* Deprecated: 2.10: Use atspi_accessible_get_collection_iface instead.
- * Rename to: atspi_accessible_get_collection_iface
**/
AtspiCollection *
atspi_accessible_get_collection (AtspiAccessible *accessible)
{
return (_atspi_accessible_is_a (accessible, atspi_interface_collection) ?
- g_object_ref (ATSPI_COLLECTION (accessible)) : NULL);
+ g_object_ref (ATSPI_COLLECTION (accessible)) : NULL);
}
/**
atspi_accessible_get_collection_iface (AtspiAccessible *accessible)
{
return (_atspi_accessible_is_a (accessible, atspi_interface_collection) ?
- g_object_ref (ATSPI_COLLECTION (accessible)) : NULL);
+ g_object_ref (ATSPI_COLLECTION (accessible)) : NULL);
}
/**
- * atspi_accessible_get_component:
+ * atspi_accessible_get_component: (rename-to atspi_accessible_get_component_iface)
* @obj: a pointer to the #AtspiAccessible instance to query.
*
* Gets the #AtspiComponent interface for an #AtspiAccessible.
* instance, or NULL if @obj does not implement #AtspiComponent.
*
* Deprecated: 2.10: Use atspi_accessible_get_component_iface instead.
- * Rename to: atspi_accessible_get_component_iface
**/
AtspiComponent *
atspi_accessible_get_component (AtspiAccessible *obj)
}
/**
- * atspi_accessible_get_document:
+ * atspi_accessible_get_document: (rename-to atspi_accessible_get_document_iface)
* @obj: a pointer to the #AtspiAccessible instance to query.
*
* Gets the #AtspiDocument interface for an #AtspiAccessible.
* instance, or NULL if @obj does not implement #AtspiDocument.
*
* Deprecated: 2.10: Use atspi_accessible_get_document_iface instead.
- * Rename to: atspi_accessible_get_document_iface
**/
AtspiDocument *
atspi_accessible_get_document (AtspiAccessible *accessible)
{
return (_atspi_accessible_is_a (accessible, atspi_interface_document) ?
- g_object_ref (ATSPI_DOCUMENT (accessible)) : NULL);
+ g_object_ref (ATSPI_DOCUMENT (accessible)) : NULL);
}
/**
atspi_accessible_get_document_iface (AtspiAccessible *accessible)
{
return (_atspi_accessible_is_a (accessible, atspi_interface_document) ?
- g_object_ref (ATSPI_DOCUMENT (accessible)) : NULL);
+ g_object_ref (ATSPI_DOCUMENT (accessible)) : NULL);
}
/**
- * atspi_accessible_get_editable_text:
+ * atspi_accessible_get_editable_text: (rename-to atspi_accessible_get_editable_text_iface)
* @obj: a pointer to the #AtspiAccessible instance to query.
*
* Gets the #AtspiEditableText interface for an #AtspiAccessible.
* instance, or NULL if @obj does not implement #AtspiEditableText.
*
* Deprecated: 2.10: Use atspi_accessible_get_editable_text_iface instead.
- * Rename to: atspi_accessible_get_editable_text_iface
**/
AtspiEditableText *
atspi_accessible_get_editable_text (AtspiAccessible *accessible)
{
return (_atspi_accessible_is_a (accessible, atspi_interface_editable_text) ?
- g_object_ref (ATSPI_EDITABLE_TEXT (accessible)) : NULL);
+ g_object_ref (ATSPI_EDITABLE_TEXT (accessible)) : NULL);
}
/**
atspi_accessible_get_editable_text_iface (AtspiAccessible *accessible)
{
return (_atspi_accessible_is_a (accessible, atspi_interface_editable_text) ?
- g_object_ref (ATSPI_EDITABLE_TEXT (accessible)) : NULL);
+ g_object_ref (ATSPI_EDITABLE_TEXT (accessible)) : NULL);
}
/**
}
/**
- * atspi_accessible_get_hypertext:
+ * atspi_accessible_get_hypertext: (rename-to atspi_accessible_get_hypertext_iface)
* @obj: a pointer to the #AtspiAccessible instance to query.
*
* Gets the #AtspiHypertext interface for an #AtspiAccessible.
* instance, or NULL if @obj does not implement #AtspiHypertext.
*
* Deprecated: 2.10: Use atspi_accessible_get_hypertext_iface instead.
- * Rename to: atspi_accessible_get_hypertext_iface
**/
AtspiHypertext *
atspi_accessible_get_hypertext (AtspiAccessible *accessible)
{
return (_atspi_accessible_is_a (accessible, atspi_interface_hypertext) ?
- g_object_ref (ATSPI_HYPERTEXT (accessible)) : NULL);
+ g_object_ref (ATSPI_HYPERTEXT (accessible)) : NULL);
}
/**
atspi_accessible_get_hypertext_iface (AtspiAccessible *accessible)
{
return (_atspi_accessible_is_a (accessible, atspi_interface_hypertext) ?
- g_object_ref (ATSPI_HYPERTEXT (accessible)) : NULL);
+ g_object_ref (ATSPI_HYPERTEXT (accessible)) : NULL);
}
/**
- * atspi_accessible_get_image:
+ * atspi_accessible_get_image: (rename-to atspi_accessible_get_image_iface)
* @obj: a pointer to the #AtspiAccessible instance to query.
*
* Gets the #AtspiImage interface for an #AtspiAccessible.
* NULL if @obj does not implement #AtspiImage.
*
* Deprecated: 2.10: Use atspi_accessible_get_image_iface instead.
- * Rename to: atspi_accessible_get_image_iface
**/
AtspiImage *
atspi_accessible_get_image (AtspiAccessible *accessible)
{
return (_atspi_accessible_is_a (accessible, atspi_interface_image) ?
- g_object_ref (ATSPI_IMAGE (accessible)) : NULL);
+ g_object_ref (ATSPI_IMAGE (accessible)) : NULL);
}
/**
atspi_accessible_get_image_iface (AtspiAccessible *accessible)
{
return (_atspi_accessible_is_a (accessible, atspi_interface_image) ?
- g_object_ref (ATSPI_IMAGE (accessible)) : NULL);
+ g_object_ref (ATSPI_IMAGE (accessible)) : NULL);
}
/**
- * atspi_accessible_get_selection:
+ * atspi_accessible_get_selection: (rename-to atspi_accessible_get_selection_iface)
* @obj: a pointer to the #AtspiAccessible instance to query.
*
* Gets the #AtspiSelection interface for an #AtspiAccessible.
* instance, or NULL if @obj does not implement #AtspiSelection.
*
* Deprecated: 2.10: Use atspi_accessible_get_selection_iface instead.
- * Rename to: atspi_accessible_get_selection_iface
**/
AtspiSelection *
atspi_accessible_get_selection (AtspiAccessible *accessible)
{
return (_atspi_accessible_is_a (accessible, atspi_interface_selection) ?
- g_object_ref (ATSPI_SELECTION (accessible)) : NULL);
+ g_object_ref (ATSPI_SELECTION (accessible)) : NULL);
}
/**
atspi_accessible_get_selection_iface (AtspiAccessible *accessible)
{
return (_atspi_accessible_is_a (accessible, atspi_interface_selection) ?
- g_object_ref (ATSPI_SELECTION (accessible)) : NULL);
+ g_object_ref (ATSPI_SELECTION (accessible)) : NULL);
}
#if 0
atspi_accessible_get_streamable_content (AtspiAccessible *accessible)
{
return (_atspi_accessible_is_a (accessible, atspi_interface_streamable_content) ?
- accessible : NULL);
+ accessible : NULL);
}
#endif
/**
- * atspi_accessible_get_table:
+ * atspi_accessible_get_table: (rename-to atspi_accessible_get_table_iface)
* @obj: a pointer to the #AtspiAccessible instance to query.
*
* Gets the #AtspiTable interface for an #AtspiAccessible.
* NULL if @obj does not implement #AtspiTable.
*
* Deprecated: 2.10: Use atspi_accessible_get_table_iface instead.
- * Rename to: atspi_accessible_get_table_iface
**/
AtspiTable *
atspi_accessible_get_table (AtspiAccessible *obj)
{
return (_atspi_accessible_is_a (obj, atspi_interface_table) ?
- g_object_ref (ATSPI_TABLE (obj)) : NULL);
+ g_object_ref (ATSPI_TABLE (obj)) : NULL);
}
/**
atspi_accessible_get_table_iface (AtspiAccessible *obj)
{
return (_atspi_accessible_is_a (obj, atspi_interface_table) ?
- g_object_ref (ATSPI_TABLE (obj)) : NULL);
+ g_object_ref (ATSPI_TABLE (obj)) : NULL);
}
/**
atspi_accessible_get_table_cell (AtspiAccessible *obj)
{
return (_atspi_accessible_is_a (obj, atspi_interface_table_cell) ?
- g_object_ref (ATSPI_TABLE_CELL (obj)) : NULL);
+ g_object_ref (ATSPI_TABLE_CELL (obj)) : NULL);
}
/**
- * atspi_accessible_get_text:
+ * atspi_accessible_get_text: (rename-to atspi_accessible_get_text_iface)
* @obj: a pointer to the #AtspiAccessible instance to query.
*
* Gets the #AtspiTable interface for an #AtspiAccessible.
* NULL if @obj does not implement #AtspiText.
*
* Deprecated: 2.10: Use atspi_accessible_get_text_iface instead.
- * Rename to: atspi_accessible_get_text_iface
**/
AtspiText *
atspi_accessible_get_text (AtspiAccessible *obj)
}
/**
- * atspi_accessible_get_value:
+ * atspi_accessible_get_value: (rename-to atspi_accessible_get_value_iface)
* @obj: a pointer to the #AtspiAccessible instance to query.
*
* Gets the #AtspiTable interface for an #AtspiAccessible.
* NULL if @obj does not implement #AtspiValue.
*
* Deprecated: 2.10: Use atspi_accessible_get_value_iface instead.
- * Rename to: atspi_accessible_get_value_iface
**/
AtspiValue *
atspi_accessible_get_value (AtspiAccessible *accessible)
{
return (_atspi_accessible_is_a (accessible, atspi_interface_value) ?
- g_object_ref (ATSPI_VALUE (accessible)) : NULL);
+ g_object_ref (ATSPI_VALUE (accessible)) : NULL);
}
/**
atspi_accessible_get_value_iface (AtspiAccessible *accessible)
{
return (_atspi_accessible_is_a (accessible, atspi_interface_value) ?
- g_object_ref (ATSPI_VALUE (accessible)) : NULL);
+ g_object_ref (ATSPI_VALUE (accessible)) : NULL);
}
static void
return ret;
}
-AtspiAccessible *
+AtspiAccessible *
_atspi_accessible_new (AtspiApplication *app, const gchar *path)
{
AtspiAccessible *accessible;
-
+
accessible = g_object_new (ATSPI_TYPE_ACCESSIBLE, NULL);
g_return_val_if_fail (accessible != NULL, NULL);