1/*************************************************************************
2 *
3 *  File Name (AccessibleStates.idl)
4 *
5 *  IAccessible2 IDL Specification
6 *
7 *  Copyright (c) 2007, 2010 Linux Foundation
8 *  Copyright (c) 2006 IBM Corporation
9 *  Copyright (c) 2000, 2006 Sun Microsystems, Inc.
10 *  All rights reserved.
11 *
12 *
13 *  Redistribution and use in source and binary forms, with or without
14 *  modification, are permitted provided that the following conditions
15 *  are met:
16 *
17 *   1. Redistributions of source code must retain the above copyright
18 *      notice, this list of conditions and the following disclaimer.
19 *
20 *   2. Redistributions in binary form must reproduce the above
21 *      copyright notice, this list of conditions and the following
22 *      disclaimer in the documentation and/or other materials
23 *      provided with the distribution.
24 *
25 *   3. Neither the name of the Linux Foundation nor the names of its
26 *      contributors may be used to endorse or promote products
27 *      derived from this software without specific prior written
28 *      permission.
29 *
30 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
31 *  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
32 *  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
33 *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
34 *  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
35 *  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
36 *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
37 *  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
38 *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
39 *  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
40 *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
41 *  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
42 *  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
43 *
44 *  This BSD License conforms to the Open Source Initiative "Simplified
45 *  BSD License" as published at:
46 *  http://www.opensource.org/licenses/bsd-license.php
47 *
48 *  IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
49 *  mark may be used in accordance with the Linux Foundation Trademark
50 *  Policy to indicate compliance with the IAccessible2 specification.
51 *
52 ************************************************************************/
53
54import "objidl.idl";
55
56typedef long AccessibleStates;
57
58/** %IAccessible2 specific state bit constants
59
60  This enum defines the state bits returned by IAccessible2::states.  The
61  %IAccessible2 state bits are in addition to those returned by MSAA.
62*/
63enum IA2States {
64
65/** Indicates a window is currently the active window, or is an active subelement
66  within a container or table.
67
68 This state can be used to indicate the current active item in a container, even
69  if the container itself is not currently active. In other words this would indicate
70  the item that will get focus if you tab to the container.
71
72 This information is important for knowing what to report for trees and potentially
73  other containers in a virtual buffer.
74
75 Also, see ::IA2_STATE_MANAGES_DESCENDANTS for more information.
76*/
77IA2_STATE_ACTIVE = 0x1,
78
79/** Indicates that the object is armed.
80
81 Used to indicate that the control is "pressed" and will be invoked when the
82  actuator, e.g. a mouse button, is "released".  An AT which either monitors the
83  mouse or synthesizes mouse events might need to know that, and possibly a talking
84  interface would even let the user know about it.  It could also potentially be
85  useful to on screen keyboards or test tools since the information does indicate
86  something about the state of the interface, for example, code operating asynchronously
87  might need to wait for the armed state to change before doing something else.
88
89*/
90IA2_STATE_ARMED = 0x2,
91
92/** Indicates the user interface object corresponding to this object no longer exists. */
93IA2_STATE_DEFUNCT = 0x4,
94
95/** An object with this state has a caret and implements the IAccessibleText interface.
96
97 Such fields may be read-only, so STATE_SYSTEM_READONLY is valid in combination
98  with IA2_STATE_EDITABLE.
99
100*/
101IA2_STATE_EDITABLE = 0x8,
102
103/** Indicates the orientation of this object is horizontal. */
104IA2_STATE_HORIZONTAL = 0x10,
105
106/** Indicates this object is minimized and is represented only by an icon. */
107IA2_STATE_ICONIFIED = 0x20,
108
109/** Indicates an input validation failure. */
110IA2_STATE_INVALID_ENTRY = 0x40,
111
112/** Indicates that this object manages its children.
113
114 Note: Due to the fact that MSAA's WinEvents don't allow the active child index
115  to be passed on the IA2_EVENT_ACTIVE_DESCENDANT_CHANGED event, the manages
116  descendants scheme can't be used.  Instead the active child object has to fire
117  MSAA's EVENT_OBJECT_FOCUS.  In a future release a new event mechanism may be
118  added to provide for event specific data to be passed with the event.  At that
119  time the IA2_EVENT_ACTIVE_DECENDENT_CHANGED event and
120  IA2_STATE_MANAGES_DESCENDANTS state would be useful.
121*/
122IA2_STATE_MANAGES_DESCENDANTS = 0x80,
123
124/** Indicates that an object is modal.
125
126 Modal objects have the behavior that something must be done with the object
127  before the user can interact with an object in a different window.
128*/
129IA2_STATE_MODAL = 0x100,
130
131/** Indicates this text object can contain multiple lines of text. */
132IA2_STATE_MULTI_LINE = 0x200,
133
134/** Indicates this object paints every pixel within its rectangular region. */
135IA2_STATE_OPAQUE = 0x400,
136
137/** Indicates that user interaction is required.
138
139 An example of when this state is used is when a field in a form must be filled
140  before a form can be processed.
141*/
142IA2_STATE_REQUIRED = 0x800,
143
144/** Indicates an object which supports text selection.
145
146 Note: This is different than MSAA STATE_SYSTEM_SELECTABLE.
147*/
148IA2_STATE_SELECTABLE_TEXT = 0x1000,
149
150/** Indicates that this text object can contain only a single line of text. */
151IA2_STATE_SINGLE_LINE = 0x2000,
152
153/** Indicates that the accessible object is stale.
154
155 This state is used when the accessible object no longer accurately
156  represents the state of the object which it is representing such as when an
157  object is transient or when an object has been or is in the process of being
158  destroyed or when the object's index in its parent has changed.
159*/
160IA2_STATE_STALE = 0x4000,
161
162/** Indicates that the object implements autocompletion.
163
164 This state indicates that a text control will respond to the input of
165 one ore more characters and cause a sub-item to become selected.  The
166 selection may also result in events fired on the parent object.
167*/
168IA2_STATE_SUPPORTS_AUTOCOMPLETION = 0x8000,
169
170/** Indicates this object is transient.
171
172 An object has this state when its parent object has the state ::IA2_STATE_MANAGES_DESCENDANTS.
173 For example, a list item object may be managed by its parent list object and may only
174 exist as long as the object is actually rendered.  Similarly a table cell's accessible
175 object may exist only while the cell has focus.  However, from the perspective of an
176 assistive technology a transient object behaves like a non-transient object.  As a
177 result it is likely that this state is not of use to an assistive technology, but it
178 is provided in case an assistive technology determines that knowledge of the transient
179 nature of the object is useful and also for harmony with the Linux accessibility API.
180
181 Also, see ::IA2_STATE_MANAGES_DESCENDANTS for more information.
182 */
183IA2_STATE_TRANSIENT = 0x10000,
184
185/** Indicates the orientation of this object is vertical. */
186IA2_STATE_VERTICAL = 0x20000,
187
188/** Indicates this object is checkable.
189
190 The standard checkable objects are check boxes, radio buttons, check box menu
191 items, radio menu items, and toggle buttons.  Since assistive technology will
192 determine that these objects are checkable via the object's role the checkable
193 state is not required.  However, this state is necessary in those cases where
194 an object has a role which is not one of the previously mentioned roles.  An
195 example is a table cell which indicates whether or not an email has an attachment,
196 whether or not an mail is considered spam, and whether or not an email has been read.
197 */
198IA2_STATE_CHECKABLE = 0x40000,
199
200/** Indicates this object is pinned.
201
202 This state indicates that an object is fixed at a certain location.  One example
203 is a browser tab that when pinned cannot be moved until unpinned.  Another example
204 is a movable or floating object that when pinned remains in its pinned location
205 until being unpinned.
206 */
207IA2_STATE_PINNED = 0x80000
208
209};
210