summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gorse <mgorse@novell.com>2011-07-12 13:23:02 -0500
committerMike Gorse <mgorse@novell.com>2011-07-12 13:23:57 -0500
commit2878d33d08f8bb787300226f053804a50b0fa3eb (patch)
tree5a7cc61977681d7fde79b71572a14bef89a7c9b4
parent186b2b27b4ab1704fec6858c755db1668bef4e76 (diff)
downloadatk-3.tar.gz
Add some functions from IA2atk-3
Add atk_component_get_group_position, atk_component_scroll_to, atk_text_scroll_substring_to, and atk_text_scroll_substring_to_point
-rwxr-xr-xatk/atkcomponent.c71
-rwxr-xr-xatk/atkcomponent.h16
-rwxr-xr-xatk/atktext.c65
-rwxr-xr-xatk/atktext.h48
-rwxr-xr-xatk/atkutil.h70
-rw-r--r--docs/atk-sections.txt5
-rw-r--r--docs/tmpl/atkcomponent.sgml21
-rw-r--r--docs/tmpl/atkobject.sgml13
-rw-r--r--docs/tmpl/atktext.sgml26
-rw-r--r--docs/tmpl/atkutil.sgml13
10 files changed, 332 insertions, 16 deletions
diff --git a/atk/atkcomponent.c b/atk/atkcomponent.c
index 46e80c8..35e155e 100755
--- a/atk/atkcomponent.c
+++ b/atk/atkcomponent.c
@@ -402,6 +402,52 @@ atk_component_get_alpha (AtkComponent *component)
}
/**
+ * atk_component_get_group_position:
+ * @component: an #AtkComponent
+ * @group_level: (out): the group's level of nesting. 1 based, 0 indicates
+ * that this value is not applicable.
+ * @similar_items: (out): the total number of items in this group, including
+ * the item being queried. 1 based, 0 indicates that this value is not
+ * applicable.
+ *
+ * Returns grouping information.
+ * Used for tree items, list items, tab panel labels, radio buttons, etc.
+ * Also used for collections of non-text objects.
+ *
+ * Note: This method is meant to describe the nature of an object's
+ * containment structure. It's exposed by trees, tree grids, nested lists,
+ * nested menus, but not headings, which uses the level object attribute. It
+ * is also exposed by radio buttons (with groupLevel == 0). This is normally
+ * not implemented on a combo box to describe the nature of its contents.
+ * Normally an AT will get that information from its child list object.
+ * However, in some cases when non-edit combo boxes are not able to be
+ * structured such that the list is a child of the combo box, this method is
+ * implemented on the combo box itself. ATs can use this interface if a child
+ * list is not found.
+ *
+ * Returns: an index into the objects in the current group (this is not an
+ * index into all the objects at the same group level. 1 based, 0 indicates
+ * that this value is not applicable.
+ *
+ * Since: 3.0
+ **/
+gint
+atk_component_get_group_position (AtkComponent *component,
+ gint *group_level,
+ gint *similar_items)
+{
+ AtkComponentIface *iface = NULL;
+ g_return_val_if_fail (ATK_IS_COMPONENT (component), -1);
+
+ iface = ATK_COMPONENT_GET_IFACE (component);
+
+ if (iface->get_group_position)
+ return (iface->get_group_position) (component, group_level, similar_items);
+ else
+ return -1;
+}
+
+/**
* atk_component_grab_focus:
* @component: an #AtkComponent
*
@@ -424,6 +470,31 @@ atk_component_grab_focus (AtkComponent *component)
}
/**
+ * atk_component_scroll_to:
+ * @component: an #AtkComponent
+ * @scroll_type: a #AtkScrollType describing the type of scrolling desired
+ *
+ * Makes an object visible on the screen.
+ *
+ * Returns: %TRUE if successful, %FALSE otherwise.
+ *
+ * Since: 3.0
+ **/
+gboolean
+atk_component_scroll_to (AtkComponent *component, AtkScrollType scroll_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, scroll_type);
+ else
+ return FALSE;
+}
+
+/**
* atk_component_set_extents:
* @component: an #AtkComponent
* @x: x coordinate
diff --git a/atk/atkcomponent.h b/atk/atkcomponent.h
index cf6dc9f..4cab538 100755
--- a/atk/atkcomponent.h
+++ b/atk/atkcomponent.h
@@ -110,13 +110,22 @@ struct _AtkComponentIface
AtkLayer (* get_layer) (AtkComponent *component);
gint (* get_mdi_zorder) (AtkComponent *component);
+ gdouble (* get_alpha) (AtkComponent *component);
+
+ gboolean (* scroll_to) (AtkComponent *component,
+ AtkScrollType scroll_type);
+
+ gint (*get_group_position) (AtkComponent *component,
+ gint *group_level,
+ gint *similar_items);
/*
* signal handlers
*/
void (* bounds_changed) (AtkComponent *component,
AtkRectangle *bounds);
- gdouble (* get_alpha) (AtkComponent *component);
+
+ gpointer _padding_dummy[16];
};
GType atk_component_get_type (void);
@@ -165,6 +174,11 @@ gboolean atk_component_set_size (AtkComponent *com
gint width,
gint height);
gdouble atk_component_get_alpha (AtkComponent *component);
+gboolean atk_component_scroll_to (AtkComponent *component,
+ AtkScrollType scroll_type);
+gint atk_component_get_group_position (AtkComponent *component,
+ gint *group_level,
+ gint *similar_items);
G_END_DECLS
diff --git a/atk/atktext.c b/atk/atktext.c
index a1e90de..f006822 100755
--- a/atk/atktext.c
+++ b/atk/atktext.c
@@ -1037,6 +1037,71 @@ atk_text_get_bounded_ranges (AtkText *text,
}
/**
+ * atk_text_scroll_substring_to:
+ * @text: an #AtkText
+ * @start_index: the start index of the string that should be scrolled
+ * @end_index: the end index of the string that should be scrolled
+ * @scroll_type: the type of scrolling desired
+ *
+ * Makes a specific part of a string visible on screen.
+ *
+ * Returns: %TRUE if success, %FALSE otherwise.
+ *
+ * Since: 3.0
+ **/
+gboolean
+atk_text_scroll_substring_to (AtkText *text,
+ gint start_index,
+ gint end_index,
+ AtkScrollType scroll_type)
+{
+ AtkTextIface *iface;
+
+ g_return_val_if_fail (ATK_IS_TEXT (text), FALSE);
+ iface = ATK_TEXT_GET_IFACE (text);
+
+ if (iface->scroll_substring_to)
+ return (*(iface->scroll_substring_to)) (text, start_index, end_index, scroll_type);
+ else
+ return FALSE;
+}
+
+/**
+ * atk_text_scroll_substring_to_point:
+ * @text: an #AtkText
+ * @start_index: the start index of the string that should be scrolled
+ * @end_index: the end index of the string that should be scrolled
+ * @x: the X coordinate to which the string should be scrolled
+ * @y: the Y coordinate to which the string should be scrolled
+ * @coord_type: Specify whether coordinates are relative to the screen or widget window.
+ *
+ * Moves the top left of a substring to a specified location.
+ *
+ * Returns: %TRUE if success, %FALSE otherwise.
+ *
+ * Since: 3.0
+ **/
+gboolean
+atk_text_scroll_substring_to_point (AtkText *text,
+ gint start_index,
+ gint end_index,
+ gint x,
+ gint y,
+ AtkCoordType coord_type)
+{
+ AtkTextIface *iface;
+
+ g_return_val_if_fail (ATK_IS_TEXT (text), FALSE);
+
+ iface = ATK_TEXT_GET_IFACE (text);
+
+ if (iface->scroll_substring_to_point)
+ return (*(iface->scroll_substring_to_point)) (text, start_index, end_index, x, y, coord_type);
+ else
+ return FALSE;
+}
+
+/**
* atk_attribute_set_free:
* @attrib_set: The #AtkAttributeSet to free
*
diff --git a/atk/atktext.h b/atk/atktext.h
index 81ad312..413482f 100755
--- a/atk/atktext.h
+++ b/atk/atktext.h
@@ -250,6 +250,27 @@ struct _AtkTextIface
gint end_offset);
gboolean (* set_caret_offset) (AtkText *text,
gint offset);
+ void (* get_range_extents) (AtkText *text,
+ gint start_offset,
+ gint end_offset,
+ AtkCoordType coord_type,
+ AtkTextRectangle *rect);
+ AtkTextRange** (* get_bounded_ranges) (AtkText *text,
+ AtkTextRectangle *rect,
+ AtkCoordType coord_type,
+ AtkTextClipType x_clip_type,
+ AtkTextClipType y_clip_type);
+ gboolean (*scroll_substring_to) (AtkText *text,
+ gint start_index,
+ gint end_index,
+ AtkScrollType scroll_type);
+ gboolean (*scroll_substring_to_point) (AtkText *text,
+ gint start_index,
+ gint end_index,
+ gint x,
+ gint y,
+ AtkCoordType coord_type);
+
/*
* signal handlers
@@ -263,21 +284,7 @@ struct _AtkTextIface
void (* text_attributes_changed) (AtkText *text);
-
- void (* get_range_extents) (AtkText *text,
- gint start_offset,
- gint end_offset,
- AtkCoordType coord_type,
- AtkTextRectangle *rect);
-
- AtkTextRange** (* get_bounded_ranges) (AtkText *text,
- AtkTextRectangle *rect,
- AtkCoordType coord_type,
- AtkTextClipType x_clip_type,
- AtkTextClipType y_clip_type);
-
-
- AtkFunction pad4;
+ gpointer _padding_dummy[16];
};
GType atk_text_get_type (void);
@@ -355,6 +362,17 @@ AtkTextRange** atk_text_get_bounded_ranges (AtkText *tex
AtkCoordType coord_type,
AtkTextClipType x_clip_type,
AtkTextClipType y_clip_type);
+gboolean atk_text_scroll_substring_to (AtkText *text,
+ gint start_index,
+ gint end_index,
+ AtkScrollType scroll_type);
+gboolean atk_text_scroll_substring_to_point (AtkText *text,
+ gint start_index,
+ gint end_index,
+ gint x,
+ gint y,
+ AtkCoordType coord_type);
+
void atk_text_free_ranges (AtkTextRange **ranges);
void atk_attribute_set_free (AtkAttributeSet *attrib_set);
const gchar* atk_text_attribute_get_name (AtkTextAttribute attr);
diff --git a/atk/atkutil.h b/atk/atkutil.h
index 20eddc8..2ca4edf 100755
--- a/atk/atkutil.h
+++ b/atk/atkutil.h
@@ -166,6 +166,76 @@ typedef enum {
ATK_XY_WINDOW
}AtkCoordType;
+/**
+ *AtkScrollType:
+ *@ATK_SCROLL_TYPE_TOP_LEFT: Scroll the top left corner of the object or
+ * substring such that the top left corner (and as much as possible of the
+ * rest of the object or substring) is within the top level window. In cases
+ * where the entire object or substring fits within the top level window,
+ * the placement of the object or substring is dependent on the application.
+ * For example, the object or substring may be scrolled to the closest edge,
+ * the furthest edge, or midway between those two edges. In cases where
+ * there is a hierarchy of nested scrollable controls, more than one control
+ * may have to be scrolled.
+ *@ATK_SCROLL_TYPE_BOTTOM_RIGHT: Scroll the bottom right corner of the
+ * object or substring such that the bottom right corner (and as much as
+ * possible of the rest of the object or substring) is within the top
+ * level window. In cases where the entire object or substring fits within
+ * the top level window, the placement of the object or substring is dependent
+ * on the application. For example, the object or substring may be scrolled
+ * to the closest edge, the furthest edge, or midway between those two edges.
+ * In cases where there is a hierarchy of nested scrollable controls, more
+ * than one control may have to be scrolled.
+ *@ATK_SCROLL_TYPE_TOP_EDGE: Scroll the top edge of the object or substring
+ * such that the top edge (and as much as possible of the rest of the object
+ * or substring) is within the top level window. In cases where the entire
+ * object or substring fits within the top level window, the placement of the
+ * object or substring is dependent on the application. For example, the
+ * object or substring may be scrolled to the closest edge, the furthest edge,
+ * or midway between those two edges. In cases where there is a hierarchy of
+ * nested scrollable controls, more than one control may have to be scrolled.
+ *@ATK_SCROLL_TYPE_BOTTOM_EDGE: Scroll the bottom edge of the object or
+ * substring such that the bottom edge (and as much as possible of the rest of
+ * the object or substring) is within the top level window. In cases where the
+ * entire object or substring fits within the top level window, the placement
+ * of the object or substring is dependent on the application. For example, the
+ * object or substring may be scrolled to the closest edge, the furthest edge,
+ * or midway between those two edges. In cases where there is a hierarchy of
+ * nested scrollable controls, more than one control may have to be scrolled.
+ *@ATK_SCROLL_TYPE_LEFT_EDGE: Scroll the left edge of the object or substring
+ * such that the left edge (and as much as possible of the rest of the object
+ * or substring) is within the top level window. In cases where the entire
+ * object or substring fits within the top level window, the placement of the
+ * object or substring is dependent on the application. For example, the
+ * object or substring may be scrolled to the closest edge, the furthest edge,
+ * or midway between those two edges. In cases where there is a hierarchy of
+ * nested scrollable controls, more than one control may have to be scrolled.
+ *@ATK_SCROLL_TYPE_RIGHT_EDGE: Scroll the right edge of the object or
+ * substring such that the right edge (and as much as possible of the rest of
+ * the object or substring) is within the top level window. In cases where the
+ * entire object or substring fits within the top level window, the placement
+ * of the object or substring is dependent on the application. For example, the
+ * object or substring may be scrolled to the closest edge, the furthest edge,
+ * or midway between those two edges. In cases where there is a hierarchy of
+ * nested scrollable controls, more than one control may have to be scrolled.
+ *@ATK_SCROLL_TYPE_ANYWHERE: Scroll the object or substring such that as much
+ * as possible of the object or substring is within the top level window. The
+ * placement of the object is dependent on the application. For example, the
+ * object or substring may be scrolled to to closest edge, the furthest edge, or midway between those two edges.
+ *
+ * Values defining where to place an object or substring on the screen.
+ **/
+typedef enum
+{
+ ATK_SCROLL_TYPE_TOP_LEFT,
+ ATK_SCROLL_TYPE_BOTTOM_RIGHT,
+ ATK_SCROLL_TYPE_TOP_EDGE,
+ ATK_SCROLL_TYPE_BOTTOM_EDGE,
+ ATK_SCROLL_TYPE_LEFT_EDGE,
+ ATK_SCROLL_TYPE_RIGHT_EDGE,
+ ATK_SCROLL_TYPE_ANYWHERE
+} AtkScrollType;
+
/*
* Adds the specified function to the list of functions to be called
* when an object receives focus.
diff --git a/docs/atk-sections.txt b/docs/atk-sections.txt
index a2b2ced..862267c 100644
--- a/docs/atk-sections.txt
+++ b/docs/atk-sections.txt
@@ -28,10 +28,12 @@ atk_component_get_extents
atk_component_get_layer
atk_component_get_mdi_zorder
atk_component_get_position
+atk_component_get_group_position
atk_component_get_size
atk_component_grab_focus
atk_component_ref_accessible_at_point
atk_component_remove_focus_handler
+atk_component_scroll_to
atk_component_set_extents
atk_component_set_position
atk_component_set_size
@@ -416,6 +418,8 @@ atk_text_get_n_selections
atk_text_get_selection
atk_text_add_selection
atk_text_remove_selection
+atk_text_scroll_substring_to
+atk_text_scroll_substring_to_point
atk_text_set_selection
atk_text_set_caret_offset
atk_attribute_set_free
@@ -531,6 +535,7 @@ ATK_STREAMABLE_CONTENT_GET_IFACE
<TITLE>AtkUtil</TITLE>
AtkUtil
AtkCoordType
+AtkScrollType
atk_add_focus_tracker
atk_remove_focus_tracker
atk_focus_tracker_init
diff --git a/docs/tmpl/atkcomponent.sgml b/docs/tmpl/atkcomponent.sgml
index df7a84a..11daa52 100644
--- a/docs/tmpl/atkcomponent.sgml
+++ b/docs/tmpl/atkcomponent.sgml
@@ -111,6 +111,17 @@ a component changes.
@coord_type:
+<!-- ##### FUNCTION atk_component_get_group_position ##### -->
+<para>
+
+</para>
+
+@component:
+@group_level:
+@similar_items:
+@Returns:
+
+
<!-- ##### FUNCTION atk_component_get_size ##### -->
<para>
@@ -151,6 +162,16 @@ a component changes.
@handler_id:
+<!-- ##### FUNCTION atk_component_scroll_to ##### -->
+<para>
+
+</para>
+
+@component:
+@scroll_type:
+@Returns:
+
+
<!-- ##### FUNCTION atk_component_set_extents ##### -->
<para>
diff --git a/docs/tmpl/atkobject.sgml b/docs/tmpl/atkobject.sgml
index 9d6aa88..cae9677 100644
--- a/docs/tmpl/atkobject.sgml
+++ b/docs/tmpl/atkobject.sgml
@@ -285,6 +285,19 @@ the object changed.
@ATK_ROLE_FORM:
@ATK_ROLE_LINK:
@ATK_ROLE_INPUT_METHOD_WINDOW:
+@ATK_ROLE_TABLE_ROW:
+@ATK_ROLE_TREE_ITEM:
+@ATK_ROLE_DOCUMENT_SPREADSHEET:
+@ATK_ROLE_DOCUMENT_PRESENTATION:
+@ATK_ROLE_DOCUMENT_TEXT:
+@ATK_ROLE_DOCUMENT_WEB:
+@ATK_ROLE_DOCUMENT_EMAIL:
+@ATK_ROLE_COMMENT:
+@ATK_ROLE_LIST_BOX:
+@ATK_ROLE_GROUPING:
+@ATK_ROLE_IMAGE_MAP:
+@ATK_ROLE_NOTIFICATION:
+@ATK_ROLE_INFO_BAR:
@ATK_ROLE_LAST_DEFINED:
<!-- ##### FUNCTION atk_role_register ##### -->
diff --git a/docs/tmpl/atktext.sgml b/docs/tmpl/atktext.sgml
index af3360e..b20507c 100644
--- a/docs/tmpl/atktext.sgml
+++ b/docs/tmpl/atktext.sgml
@@ -405,6 +405,32 @@ an object which implements AtkText changes.
@Returns:
+<!-- ##### FUNCTION atk_text_scroll_substring_to ##### -->
+<para>
+
+</para>
+
+@text:
+@start_index:
+@end_index:
+@scroll_type:
+@Returns:
+
+
+<!-- ##### FUNCTION atk_text_scroll_substring_to_point ##### -->
+<para>
+
+</para>
+
+@text:
+@start_index:
+@end_index:
+@x:
+@y:
+@coord_type:
+@Returns:
+
+
<!-- ##### FUNCTION atk_text_set_selection ##### -->
<para>
diff --git a/docs/tmpl/atkutil.sgml b/docs/tmpl/atkutil.sgml
index 6331d36..ae5487a 100644
--- a/docs/tmpl/atkutil.sgml
+++ b/docs/tmpl/atkutil.sgml
@@ -36,6 +36,19 @@ The AtkUtil struct does not contain any fields.
@ATK_XY_SCREEN:
@ATK_XY_WINDOW:
+<!-- ##### ENUM AtkScrollType ##### -->
+<para>
+
+</para>
+
+@ATK_SCROLL_TYPE_TOP_LEFT:
+@ATK_SCROLL_TYPE_BOTTOM_RIGHT:
+@ATK_SCROLL_TYPE_TOP_EDGE:
+@ATK_SCROLL_TYPE_BOTTOM_EDGE:
+@ATK_SCROLL_TYPE_LEFT_EDGE:
+@ATK_SCROLL_TYPE_RIGHT_EDGE:
+@ATK_SCROLL_TYPE_ANYWHERE:
+
<!-- ##### FUNCTION atk_add_focus_tracker ##### -->
<para>