Improved documentation for AtkStateType and AtkRoleType enums (bug #398038 and bug
authorBill Haneman <billh@src.gnome.org>
Tue, 13 Feb 2007 17:47:48 +0000 (17:47 +0000)
committerBill Haneman <billh@src.gnome.org>
Tue, 13 Feb 2007 17:47:48 +0000 (17:47 +0000)
#394492).

svn path=/trunk/; revision=1147

ChangeLog
atk/atkobject.h
atk/atkstate.h

index 419ad25..c88d976 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-02-13  Bill Haneman <bill.haneman@sun.com>
+
+       * atk/atkstate.h: Clarified documentation for
+       ATK_STATE enumerations.  See bug #398038.
+       
 2007-02-12  Li Yuan  <li.yuan@sun.com>
 
        * configure.in, NEWS:
 
 2007-01-08  Bill Haneman <bill.haneman@sun.com>
 
+       * atk/atkaction.c:
+       (atk_action_get_name): Clarified what is expected 
+       in an action name, and numerated some commonly-used names.
+       (atk_action_get_keybinding): Improve the documentation
+       for the string returned by this API.
+
+2007-01-08  Bill Haneman <bill.haneman@sun.com>
+
        * configure.in: Revved to 1.13.0, since new API
        has been added for gnome 2.17.5.  (ATK is
        now API frozen for gnome 2.18.)
index fbcc415..bb9b55a 100755 (executable)
@@ -99,44 +99,44 @@ extern "C" {
  *@ATK_ROLE_TABLE_COLUMN_HEADER: The header for a column of a table
  *@ATK_ROLE_TABLE_ROW_HEADER: The header for a row of a table
  *@ATK_ROLE_TEAR_OFF_MENU_ITEM: A menu item used to tear off and reattach its menu
- *@ATK_ROLE_TERMINAL: An object that represents an accessible terminal
+ *@ATK_ROLE_TERMINAL: An object that represents an accessible terminal.  @Since: ATK-0.6
  *@ATK_ROLE_TEXT: An object that presents text to the user
  *@ATK_ROLE_TOGGLE_BUTTON: A specialized push button that can be checked or unchecked, but does not provide a separate indicator for the current state
  *@ATK_ROLE_TOOL_BAR: A bar or palette usually composed of push buttons or toggle buttons
  *@ATK_ROLE_TOOL_TIP: An object that provides information about another object
  *@ATK_ROLE_TREE: An object used to represent hierarchical information to the user
- *@ATK_ROLE_TREE_TABLE: An object capable of expanding and collapsing rows as well as showing multiple columns of data
+ *@ATK_ROLE_TREE_TABLE: An object capable of expanding and collapsing rows as well as showing multiple columns of data.   @Since: ATK-0.7
  *@ATK_ROLE_UNKNOWN: The object contains some Accessible information, but its role is not known
  *@ATK_ROLE_VIEWPORT: An object usually used in a scroll pane
  *@ATK_ROLE_WINDOW: A top level window with no title or border.
- *@ATK_ROLE_HEADER: An object that serves as a document header.
- *@ATK_ROLE_FOOTER: An object that serves as a document footer.
- *@ATK_ROLE_PARAGRAPH: An object which is contains a paragraph of text content.
- *@ATK_ROLE_RULER: An object which describes margins and tab stops, etc. for text objects which it controls (should have CONTROLLER_FOR relation to such).
- *@ATK_ROLE_APPLICATION: The object is an application object, which may contain @ATK_ROLE_FRAME objects or other types of accessibles.  The root accessible of any application's ATK hierarchy should have ATK_ROLE_APPLICATION.
- *@ATK_ROLE_AUTOCOMPLETE: The object is a dialog or list containing items for insertion into an entry widget, for instance a list of words for completion of a text entry.
- *@ATK_ROLE_EDITBAR: The object is an editable text object in a toolbar
- *@ATK_ROLE_EMBEDDED: The object is an embedded container within a document or panel.  This role is a grouping "hint" indicating that the contained objects share a context.
- *@ATK_ROLE_ENTRY: The object is a component whose textual content may be entered or modified by the user, provided @ATK_STATE_EDITABLE is present.
- *@ATK_ROLE_CHART: The object is a graphical depiction of quantitative data. It may contain multiple subelements whose attributes and/or description may be queried to obtain both the quantitative data and information about how the data is being presented. The LABELLED_BY relation is particularly important in interpreting objects of this type, as is the accessible-description property.
- *@ATK_ROLE_CAPTION: The object contains descriptive information, usually textual, about another user interface element such as a table, chart, or image.
- *@ATK_ROLE_DOCUMENT_FRAME: The object is a visual frame or container which contains a view of document content. Document frames may occur within another Document instance, in which case the second document may be said to be embedded in the containing instance. HTML frames are often ROLE_DOCUMENT_FRAME. Either this object, or a singleton descendant, should implement the Document interface.
+ *@ATK_ROLE_HEADER: An object that serves as a document header. @Since:ATK 1.1.1
+ *@ATK_ROLE_FOOTER: An object that serves as a document footer.  @Since: ATK-1.1.1
+ *@ATK_ROLE_PARAGRAPH: An object which is contains a paragraph of text content.   @Since: ATK-1.1.1
+ *@ATK_ROLE_RULER: An object which describes margins and tab stops, etc. for text objects which it controls (should have CONTROLLER_FOR relation to such).   @Since: ATK-1.1.1
+ *@ATK_ROLE_APPLICATION: The object is an application object, which may contain @ATK_ROLE_FRAME objects or other types of accessibles.  The root accessible of any application's ATK hierarchy should have ATK_ROLE_APPLICATION.   @Since: ATK-1.1.4
+ *@ATK_ROLE_AUTOCOMPLETE: The object is a dialog or list containing items for insertion into an entry widget, for instance a list of words for completion of a text entry.   @Since: ATK-1.3
+ *@ATK_ROLE_EDITBAR: The object is an editable text object in a toolbar.  @Since: ATK-1.5
+ *@ATK_ROLE_EMBEDDED: The object is an embedded container within a document or panel.  This role is a grouping "hint" indicating that the contained objects share a context.  @Since: ATK-1.7.2
+ *@ATK_ROLE_ENTRY: The object is a component whose textual content may be entered or modified by the user, provided @ATK_STATE_EDITABLE is present.   @Since: ATK-1.11
+ *@ATK_ROLE_CHART: The object is a graphical depiction of quantitative data. It may contain multiple subelements whose attributes and/or description may be queried to obtain both the quantitative data and information about how the data is being presented. The LABELLED_BY relation is particularly important in interpreting objects of this type, as is the accessible-description property.  @Since: ATK-1.11
+ *@ATK_ROLE_CAPTION: The object contains descriptive information, usually textual, about another user interface element such as a table, chart, or image.  @Since: ATK-1.11
+ *@ATK_ROLE_DOCUMENT_FRAME: The object is a visual frame or container which contains a view of document content. Document frames may occur within another Document instance, in which case the second document may be said to be embedded in the containing instance. HTML frames are often ROLE_DOCUMENT_FRAME. Either this object, or a singleton descendant, should implement the Document interface.  @Since: ATK-1.11
  *@ATK_ROLE_HEADING: The object serves as a heading for content which follows it in a document. The 'heading level' of the heading, if availabe, may be obtained by querying the object's attributes.
- *@ATK_ROLE_PAGE: The object is a containing instance which encapsulates a page of information. @ATK_ROLE_PAGE is used in documents and content which support a paginated navigation model.
- *@ATK_ROLE_SECTION: The object is a containing instance of document content which constitutes a particular 'logical' section of the document. The type of content within a section, and the nature of the section division itself, may be obtained by querying the object's attributes. Sections may be nested.
- *@ATK_ROLE_REDUNDANT_OBJECT: The object is redundant with another object in the hierarchy, and is exposed for purely technical reasons.  Objects of this role should normally be ignored by clients. 
+ *@ATK_ROLE_PAGE: The object is a containing instance which encapsulates a page of information. @ATK_ROLE_PAGE is used in documents and content which support a paginated navigation model.  @Since: ATK-1.11
+ *@ATK_ROLE_SECTION: The object is a containing instance of document content which constitutes a particular 'logical' section of the document. The type of content within a section, and the nature of the section division itself, may be obtained by querying the object's attributes. Sections may be nested. @Since: ATK-1.11
+ *@ATK_ROLE_REDUNDANT_OBJECT: The object is redundant with another object in the hierarchy, and is exposed for purely technical reasons.  Objects of this role should normally be ignored by clients. @Since: ATK-1.11
  *@ATK_ROLE_FORM: The object is a container for form controls, for instance as part of a 
  * web form or user-input form within a document.  This role is primarily a tag/convenience for 
  * clients when navigating complex documents, it is not expected that ordinary GUI containers will 
- * always have ATK_ROLE_FORM.
+ * always have ATK_ROLE_FORM. @Since: ATK-1.12.0
  *@ATK_ROLE_LINK: The object is a hypertext anchor, i.e. a "link" in a
  * hypertext document.  Such objects are distinct from 'inline'
  * content which may also use the Hypertext/Hyperlink interfaces
  * to indicate the range/location within a text object where
- * an inline or embedded object lies.
+ * an inline or embedded object lies.  @Since: ATK-1.12.1
  *@ATK_ROLE_INPUT_METHOD_WINDOW: The object is a window or similar viewport 
  * which is used to allow composition or input of a 'complex character',
- * in other words it is an "input method window."
+ * in other words it is an "input method window." @Since: ATK-1.12.1
  *@ATK_ROLE_LAST_DEFINED: not a valid role, used for finding end of the enumeration
  * 
  * Describes the role of an object
index a682f91..3317346 100755 (executable)
@@ -28,46 +28,92 @@ extern "C" {
 
 /**
  *AtkStateType:
- *@ATK_STATE_INVALID: Indicates an invalid state
- *@ATK_STATE_ACTIVE: Indicates a window is currently the active window
- *@ATK_STATE_ARMED: Indicates that the object is armed.
- *@ATK_STATE_BUSY: Indicates the current object is busy.  This state may be used by implementors of Document to indicate that content loading is in process.
- *@ATK_STATE_CHECKED: Indicates this object is currently checked
- *@ATK_STATE_DEFUNCT: Indicates the user interface object corresponding to this object no longer exists
+ *@ATK_STATE_INVALID: Indicates an invalid state - probably an error condition.
+ *@ATK_STATE_ACTIVE: Indicates a window is currently the active window, or is an active subelement within a container or table
+ *@ATK_STATE_ARMED: Indicates that the object is 'armed', i.e. will be activated by if a pointer button-release event occurs within its bounds.  Buttons often enter this state when a pointer click occurs within their bounds, as a precursor to activation.
+ *@ATK_STATE_BUSY:  Indicates the current object is busy, i.e. onscreen representation is in the process of changing, or the object is temporarily unavailable for interaction due to activity already in progress.  This state may be used by implementors of Document to indicate that content loading is underway.  It also may indicate other 'pending' conditions; clients may wish to interrogate this object when the ATK_STATE_BUSY flag is removed.
+ *@ATK_STATE_CHECKED: Indicates this object is currently checked, for instance a checkbox is 'non-empty'.
+ *@ATK_STATE_DEFUNCT: Indicates that this object no longer has a valid backing widget (for instance, if its peer object has been destroyed)
  *@ATK_STATE_EDITABLE: Indicates the user can change the contents of this object
- *@ATK_STATE_ENABLED: Indicates that this object is enabled. An inconsistent GtkToggleButton is an example of an object which is sensitive but not enabled.
+ *@ATK_STATE_ENABLED:  Indicates that this object is enabled, i.e. that it currently reflects some application state. Objects that are "greyed out" may lack this state, and may lack the STATE_SENSITIVE if direct user interaction cannot cause them to acquire STATE_ENABLED. See also: ATK_STATE_SENSITIVE
  *@ATK_STATE_EXPANDABLE: Indicates this object allows progressive disclosure of its children
- *@ATK_STATE_EXPANDED: Indicates this object its expanded
+ *@ATK_STATE_EXPANDED: Indicates this object its expanded - see ATK_STATE_EXPANDABLE above
  *@ATK_STATE_FOCUSABLE: Indicates this object can accept keyboard focus, which means all events resulting from typing on the keyboard will normally be passed to it when it has focus
  *@ATK_STATE_FOCUSED: Indicates this object currently has the keyboard focus
- *@ATK_STATE_HORIZONTAL: Indicates the orientation of this object is horizontal
+ *@ATK_STATE_HORIZONTAL: Indicates the orientation of this object is horizontal; used, for instance, by objects of ATK_ROLE_SCROLL_BAR.  For objects where vertical/horizontal orientation is especially meaningful.
  *@ATK_STATE_ICONIFIED: Indicates this object is minimized and is represented only by an icon
  *@ATK_STATE_MODAL: Indicates something must be done with this object before the user can interact with an object in a different window
  *@ATK_STATE_MULTI_LINE: Indicates this (text) object can contain multiple lines of text
- *@ATK_STATE_MULTISELECTABLE: Indicates this object allows more than one of its children to be selected at the same time
+ *@ATK_STATE_MULTISELECTABLE: Indicates this object allows more than one of its children to be selected at the same time, or in the case of text objects, that the object supports non-contiguous text selections.
  *@ATK_STATE_OPAQUE: Indicates this object paints every pixel within its rectangular region.
- *@ATK_STATE_PRESSED: Indicates this object is currently pressed
+ *@ATK_STATE_PRESSED: Indicates this object is currently pressed; c.f. ATK_STATE_ARMED
  *@ATK_STATE_RESIZABLE: Indicates the size of this object is not fixed
  *@ATK_STATE_SELECTABLE: Indicates this object is the child of an object that allows its children to be selected and that this child is one of those children that can be selected
  *@ATK_STATE_SELECTED: Indicates this object is the child of an object that allows its children to be selected and that this child is one of those children that has been selected
- *@ATK_STATE_SENSITIVE: Indicates this object is sensitive
- *@ATK_STATE_SHOWING: Indicates this object, the object's parent, the object's parent's parent, and so on, are all visible
+ *@ATK_STATE_SENSITIVE: Indicates this object is sensitive, e.g. to user interaction. 
+ * STATE_SENSITIVE usually accompanies STATE_ENABLED for user-actionable controls,
+ * but may be found in the absence of STATE_ENABLED if the current visible state of the 
+ * control is "disconnected" from the application state.  In such cases, direct user interaction
+ * can often result in the object gaining STATE_SENSITIVE, for instance if a user makes 
+ * an explicit selection using an object whose current state is ambiguous or undefined.
+ * @see STATE_ENABLED, STATE_INDETERMINATE.
+ *@ATK_STATE_SHOWING: Indicates this object, the object's parent, the object's parent's parent, and so on, 
+ * are all 'shown' to the end-user, i.e. subject to "exposure" if blocking or obscuring objects do not interpose
+ * between this object and the top of the window stack.
  *@ATK_STATE_SINGLE_LINE: Indicates this (text) object can contain only a single line of text
- *@ATK_STATE_STALE: Indicates that the index associated with this object has changed since the user accessed the object.
- *@ATK_STATE_TRANSIENT: Indicates this object is transient
+ *@ATK_STATE_STALE: Indicates that the information returned for this object may no longer be
+ * synchronized with the application state.  This is implied if the object has STATE_TRANSIENT,
+ * and can also occur towards the end of the object peer's lifecycle. It can also be used to indicate that 
+ * the index associated with this object has changed since the user accessed the object (in lieu of
+ * "index-in-parent-changed" events).
+ *@ATK_STATE_TRANSIENT: Indicates this object is transient, i.e. a snapshot which may not emit events when its
+ * state changes.  Data from objects with ATK_STATE_TRANSIENT should not be cached, since there may be no
+ * notification given when the cached data becomes obsolete.
  *@ATK_STATE_VERTICAL: Indicates the orientation of this object is vertical
- *@ATK_STATE_VISIBLE: Indicates this object is visible
+ *@ATK_STATE_VISIBLE: Indicates this object is visible, e.g. has been explicitly marked for exposure to the user.
+ * @note: STATE_VISIBLE is no guarantee that the object is actually unobscured on the screen, only
+ * that it is 'potentially' visible, barring obstruction, being scrolled or clipped out of the 
+ * field of view, or having an ancestor container that has not yet made visible.
+ * A widget is potentially onscreen if it has both STATE_VISIBLE and STATE_SHOWING.
+ * The absence of STATE_VISIBLE and STATE_SHOWING is semantically equivalent to saying 
+ * that an object is 'hidden'.  See also STATE_TRUNCATED, which applies if a VISIBLE and SHOWING object
+ * lies within a viewport which means that its contents are clipped, e.g. a truncated spreadsheet cell or
+ * an image within a scrolling viewport.  Mostly useful for screen-review and magnification algorithms.
  *@ATK_STATE_MANAGES_DESCENDANTS: Indicates that "active-descendant-changed" event
  * is sent when children become 'active' (i.e. are selected or navigated to onscreen).
  * Used to prevent need to enumerate all children in very large containers, like tables.
+ * The presence of STATE_MANAGES_DESCENDANTS is an indication to the client.
+ * that the children should not, and need not, be enumerated by the client.
+ * Objects implementing this state are expected to provide relevant state
+ * notifications to listening clients, for instance notifications of visibility
+ * changes and activation of their contained child objects, without the client 
+ * having previously requested references to those children.
  *@ATK_STATE_INDETERMINATE: Indicates that a check box is in a state other than checked or not checked.
+ * This usually means that the boolean value reflected or 
+ * controlled by the object does not apply consistently to the entire current context.
+ * For example, a checkbox for the "Bold" attribute of text may have STATE_INDETERMINATE
+ * if the currently selected text contains a mixture of weight attributes.  
+ * In many cases interacting with a STATE_INDETERMINATE object will cause 
+ * the context's corresponding boolean attribute to be homogenized, whereupon the object
+ * will lose STATE_INDETERMINATE and a corresponding state-changed event will be fired.
  *@ATK_STATE_TRUNCATED: Indicates that an object is truncated, e.g. a text value in a speradsheet cell.
  *@ATK_STATE_REQUIRED: Indicates that explicit user interaction with an object is required by the user interface, e.g. a required field in a "web-form" interface.
  *@ATK_STATE_INVALID_ENTRY: Indicates that the object has encountered an error condition due to failure of input validation. For instance, a form control may acquire this state in response to invalid or malformed user input.
- *@ATK_STATE_SUPPORTS_AUTOCOMPLETION: Indicates that the object may exhibit "typeahead" behavior in response to user keystrokes, e.g. one keystroke may result in the insertion of several characters into an entry, or result in the auto-selection of an item in a list.  This state supplants @ATK_ROLE_AUTOCOMPLETE.
+ *@ATK_STATE_SUPPORTS_AUTOCOMPLETION:  Indicates that the object in question implements some form of ¨typeahead¨ or 
+ * pre-selection behavior whereby entering the first character of one or more sub-elements
+ * causes those elements to scroll into view or become selected.  Subsequent character input
+ * may narrow the selection further as long as one or more sub-elements match the string.
+ * This state is normally only useful and encountered on objects that implement Selection.
+ * In some cases the typeahead behavior may result in full or partial ¨completion¨ of 
+ * the data in the input field, in which case these input events may trigger text-changed
+ * events from the AtkText interface.  This state supplants @ATK_ROLE_AUTOCOMPLETE.
  *@ATK_STATE_SELECTABLE_TEXT:Indicates that the object in question supports text selection. It should only be exposed on objects which implement the Text interface, in order to distinguish this state from @ATK_STATE_SELECTABLE, which infers that the object in question is a selectable child of an object which implements Selection. While similar, text selection and subelement selection are distinct operations.
  *@ATK_STATE_DEFAULT: Indicates that the object is the "default" active component, i.e. the object which is activated by an end-user press of the "Enter" or "Return" key.  Typically a "close" or "submit" button.
  *@ATK_STATE_ANIMATED: Indicates that the object changes its appearance dynamically as an inherent part of its presentation.  This state may come and go if an object is only temporarily animated on the way to a 'final' onscreen presentation.
+ * @note some applications, notably content viewers, may not be able to detect
+ * all kinds of animated content.  Therefore the absence of this state should not
+ * be taken as definitive evidence that the object's visual representation is
+ * static; this state is advisory.
  *@ATK_STATE_VISITED: Indicates that the object (typically a hyperlink) has already been 'activated', and/or its backing data has already been downloaded, rendered, or otherwise "visited".
  *@ATK_STATE_LAST_DEFINED: Not a valid state, used for finding end of enumeration
  *