Revert "Revert "Merge remote-tracking branch 'origin/sandbox/mniesluchow/upstream_2_1...
[platform/upstream/atk.git] / atk / atkstate.h
index 66228db..f1ffccf 100755 (executable)
 #define __ATK_STATE_H__
 
 #include <glib-object.h>
+#include <atk/atkversion.h>
 
 G_BEGIN_DECLS
 
 /**
  *AtkStateType:
  *@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_ACTIVE: Indicates a window is currently the active window, or an object is the active subelement within a container or table. ATK_STATE_ACTIVE should not be used for objects which have ATK_STATE_FOCUSABLE or ATK_STATE_SELECTABLE: Those objects should use ATK_STATE_FOCUSED and ATK_STATE_SELECTED respectively. ATK_STATE_ACTIVE is a means to indicate that an object which is not focusable and not selectable is the currently-active item within its parent container.
+ *@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_ARMED has been deprecated since ATK-2.16 and should not be used in newly-written code.
  *@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_EDITABLE: Indicates that this object can contain text, and that the
+ * user can change the textual contents of this object by editing those contents
+ * directly. For an object which is expected to be editable due to its type, but
+ * which cannot be edited due to the application or platform preventing the user
+ * from doing so, that object's #AtkStateSet should lack ATK_STATE_EDITABLE and
+ * should contain ATK_STATE_READ_ONLY.
  *@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 - see ATK_STATE_EXPANDABLE above
@@ -48,7 +54,7 @@ G_BEGIN_DECLS
  *@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, 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; c.f. ATK_STATE_ARMED
+ *@ATK_STATE_PRESSED: Indicates this object is currently pressed.
  *@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
@@ -90,14 +96,13 @@ G_BEGIN_DECLS
  * 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_INDETERMINATE: Indicates that the value, or some other quantifiable
+ * property, of this AtkObject cannot be fully determined. In the case of a large
+ * data set in which the total number of items in that set is unknown (e.g. 1 of
+ * 999+), implementors should expose the currently-known set size (999) along
+ * with this state. In the case of a check box, this state should be used to
+ * indicate that the check box is a tri-state check box which is currently
+ * neither checked nor unchecked.
  *@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.
@@ -124,6 +129,16 @@ G_BEGIN_DECLS
  * menu or sub-level menu which may or may not be showing. This means
  * that activation renders conditional content.  Note that ordinary
  * tooltips are not considered popups in this context. @Since: ATK-2.12
+ *@ATK_STATE_HAS_TOOLTIP: Indicates this object has a tooltip. @Since: ATK-2.16
+ *@ATK_STATE_READ_ONLY: Indicates that a widget which is ENABLED and SENSITIVE
+ * has a value which can be read, but not modified, by the user. Note that this
+ * state should only be applied to widget types whose value is normally directly
+ * user modifiable, such as check boxes, radio buttons, spin buttons, text input
+ * fields, and combo boxes, as a means to convey that the expected interaction
+ * with that widget is not possible. When the expected interaction with a
+ * widget does not include modification by the user, as is the case with
+ * labels and containers, ATK_STATE_READ_ONLY should not be applied. See also
+ * ATK_STATE_EDITABLE. @Since: ATK-2-16
  *@ATK_STATE_LAST_DEFINED: Not a valid state, used for finding end of enumeration
  *
  *The possible types of states of an object
@@ -171,14 +186,21 @@ typedef enum
   ATK_STATE_VISITED,
   ATK_STATE_CHECKABLE,
   ATK_STATE_HAS_POPUP,
+  ATK_STATE_HAS_TOOLTIP,
+  ATK_STATE_READ_ONLY,
+  ATK_STATE_HIGHLIGHTED,
+  ATK_STATE_HIGHLIGHTABLE,
   ATK_STATE_LAST_DEFINED
 } AtkStateType;
 
 typedef guint64      AtkState;
 
+ATK_AVAILABLE_IN_ALL
 AtkStateType atk_state_type_register            (const gchar *name);
 
+ATK_AVAILABLE_IN_ALL
 const gchar*          atk_state_type_get_name   (AtkStateType type);
+ATK_AVAILABLE_IN_ALL
 AtkStateType          atk_state_type_for_name   (const gchar  *name);
 
 G_END_DECLS