michael@0: /************************************************************************* michael@0: * michael@0: * File Name (AccessibleStates.idl) michael@0: * michael@0: * IAccessible2 IDL Specification michael@0: * michael@0: * Copyright (c) 2007, 2010 Linux Foundation michael@0: * Copyright (c) 2006 IBM Corporation michael@0: * Copyright (c) 2000, 2006 Sun Microsystems, Inc. michael@0: * All rights reserved. michael@0: * michael@0: * michael@0: * Redistribution and use in source and binary forms, with or without michael@0: * modification, are permitted provided that the following conditions michael@0: * are met: michael@0: * michael@0: * 1. Redistributions of source code must retain the above copyright michael@0: * notice, this list of conditions and the following disclaimer. michael@0: * michael@0: * 2. Redistributions in binary form must reproduce the above michael@0: * copyright notice, this list of conditions and the following michael@0: * disclaimer in the documentation and/or other materials michael@0: * provided with the distribution. michael@0: * michael@0: * 3. Neither the name of the Linux Foundation nor the names of its michael@0: * contributors may be used to endorse or promote products michael@0: * derived from this software without specific prior written michael@0: * permission. michael@0: * michael@0: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND michael@0: * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, michael@0: * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF michael@0: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE michael@0: * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR michael@0: * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, michael@0: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT michael@0: * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; michael@0: * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) michael@0: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN michael@0: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR michael@0: * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, michael@0: * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. michael@0: * michael@0: * This BSD License conforms to the Open Source Initiative "Simplified michael@0: * BSD License" as published at: michael@0: * http://www.opensource.org/licenses/bsd-license.php michael@0: * michael@0: * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 michael@0: * mark may be used in accordance with the Linux Foundation Trademark michael@0: * Policy to indicate compliance with the IAccessible2 specification. michael@0: * michael@0: ************************************************************************/ michael@0: michael@0: import "objidl.idl"; michael@0: michael@0: typedef long AccessibleStates; michael@0: michael@0: /** %IAccessible2 specific state bit constants michael@0: michael@0: This enum defines the state bits returned by IAccessible2::states. The michael@0: %IAccessible2 state bits are in addition to those returned by MSAA. michael@0: */ michael@0: enum IA2States { michael@0: michael@0: /** Indicates a window is currently the active window, or is an active subelement michael@0: within a container or table. michael@0: michael@0: This state can be used to indicate the current active item in a container, even michael@0: if the container itself is not currently active. In other words this would indicate michael@0: the item that will get focus if you tab to the container. michael@0: michael@0: This information is important for knowing what to report for trees and potentially michael@0: other containers in a virtual buffer. michael@0: michael@0: Also, see ::IA2_STATE_MANAGES_DESCENDANTS for more information. michael@0: */ michael@0: IA2_STATE_ACTIVE = 0x1, michael@0: michael@0: /** Indicates that the object is armed. michael@0: michael@0: Used to indicate that the control is "pressed" and will be invoked when the michael@0: actuator, e.g. a mouse button, is "released". An AT which either monitors the michael@0: mouse or synthesizes mouse events might need to know that, and possibly a talking michael@0: interface would even let the user know about it. It could also potentially be michael@0: useful to on screen keyboards or test tools since the information does indicate michael@0: something about the state of the interface, for example, code operating asynchronously michael@0: might need to wait for the armed state to change before doing something else. michael@0: michael@0: */ michael@0: IA2_STATE_ARMED = 0x2, michael@0: michael@0: /** Indicates the user interface object corresponding to this object no longer exists. */ michael@0: IA2_STATE_DEFUNCT = 0x4, michael@0: michael@0: /** An object with this state has a caret and implements the IAccessibleText interface. michael@0: michael@0: Such fields may be read-only, so STATE_SYSTEM_READONLY is valid in combination michael@0: with IA2_STATE_EDITABLE. michael@0: michael@0: */ michael@0: IA2_STATE_EDITABLE = 0x8, michael@0: michael@0: /** Indicates the orientation of this object is horizontal. */ michael@0: IA2_STATE_HORIZONTAL = 0x10, michael@0: michael@0: /** Indicates this object is minimized and is represented only by an icon. */ michael@0: IA2_STATE_ICONIFIED = 0x20, michael@0: michael@0: /** Indicates an input validation failure. */ michael@0: IA2_STATE_INVALID_ENTRY = 0x40, michael@0: michael@0: /** Indicates that this object manages its children. michael@0: michael@0: Note: Due to the fact that MSAA's WinEvents don't allow the active child index michael@0: to be passed on the IA2_EVENT_ACTIVE_DESCENDANT_CHANGED event, the manages michael@0: descendants scheme can't be used. Instead the active child object has to fire michael@0: MSAA's EVENT_OBJECT_FOCUS. In a future release a new event mechanism may be michael@0: added to provide for event specific data to be passed with the event. At that michael@0: time the IA2_EVENT_ACTIVE_DECENDENT_CHANGED event and michael@0: IA2_STATE_MANAGES_DESCENDANTS state would be useful. michael@0: */ michael@0: IA2_STATE_MANAGES_DESCENDANTS = 0x80, michael@0: michael@0: /** Indicates that an object is modal. michael@0: michael@0: Modal objects have the behavior that something must be done with the object michael@0: before the user can interact with an object in a different window. michael@0: */ michael@0: IA2_STATE_MODAL = 0x100, michael@0: michael@0: /** Indicates this text object can contain multiple lines of text. */ michael@0: IA2_STATE_MULTI_LINE = 0x200, michael@0: michael@0: /** Indicates this object paints every pixel within its rectangular region. */ michael@0: IA2_STATE_OPAQUE = 0x400, michael@0: michael@0: /** Indicates that user interaction is required. michael@0: michael@0: An example of when this state is used is when a field in a form must be filled michael@0: before a form can be processed. michael@0: */ michael@0: IA2_STATE_REQUIRED = 0x800, michael@0: michael@0: /** Indicates an object which supports text selection. michael@0: michael@0: Note: This is different than MSAA STATE_SYSTEM_SELECTABLE. michael@0: */ michael@0: IA2_STATE_SELECTABLE_TEXT = 0x1000, michael@0: michael@0: /** Indicates that this text object can contain only a single line of text. */ michael@0: IA2_STATE_SINGLE_LINE = 0x2000, michael@0: michael@0: /** Indicates that the accessible object is stale. michael@0: michael@0: This state is used when the accessible object no longer accurately michael@0: represents the state of the object which it is representing such as when an michael@0: object is transient or when an object has been or is in the process of being michael@0: destroyed or when the object's index in its parent has changed. michael@0: */ michael@0: IA2_STATE_STALE = 0x4000, michael@0: michael@0: /** Indicates that the object implements autocompletion. michael@0: michael@0: This state indicates that a text control will respond to the input of michael@0: one ore more characters and cause a sub-item to become selected. The michael@0: selection may also result in events fired on the parent object. michael@0: */ michael@0: IA2_STATE_SUPPORTS_AUTOCOMPLETION = 0x8000, michael@0: michael@0: /** Indicates this object is transient. michael@0: michael@0: An object has this state when its parent object has the state ::IA2_STATE_MANAGES_DESCENDANTS. michael@0: For example, a list item object may be managed by its parent list object and may only michael@0: exist as long as the object is actually rendered. Similarly a table cell's accessible michael@0: object may exist only while the cell has focus. However, from the perspective of an michael@0: assistive technology a transient object behaves like a non-transient object. As a michael@0: result it is likely that this state is not of use to an assistive technology, but it michael@0: is provided in case an assistive technology determines that knowledge of the transient michael@0: nature of the object is useful and also for harmony with the Linux accessibility API. michael@0: michael@0: Also, see ::IA2_STATE_MANAGES_DESCENDANTS for more information. michael@0: */ michael@0: IA2_STATE_TRANSIENT = 0x10000, michael@0: michael@0: /** Indicates the orientation of this object is vertical. */ michael@0: IA2_STATE_VERTICAL = 0x20000, michael@0: michael@0: /** Indicates this object is checkable. michael@0: michael@0: The standard checkable objects are check boxes, radio buttons, check box menu michael@0: items, radio menu items, and toggle buttons. Since assistive technology will michael@0: determine that these objects are checkable via the object's role the checkable michael@0: state is not required. However, this state is necessary in those cases where michael@0: an object has a role which is not one of the previously mentioned roles. An michael@0: example is a table cell which indicates whether or not an email has an attachment, michael@0: whether or not an mail is considered spam, and whether or not an email has been read. michael@0: */ michael@0: IA2_STATE_CHECKABLE = 0x40000, michael@0: michael@0: /** Indicates this object is pinned. michael@0: michael@0: This state indicates that an object is fixed at a certain location. One example michael@0: is a browser tab that when pinned cannot be moved until unpinned. Another example michael@0: is a movable or floating object that when pinned remains in its pinned location michael@0: until being unpinned. michael@0: */ michael@0: IA2_STATE_PINNED = 0x80000 michael@0: michael@0: };