Mapping MSAA and IAccessible2 to ATK
This section provides information about how to map MSAA and IAccessible2 roles, states, events (signals), relations, and accessible interfaces to the ATK interface for Linux GNOME applications. Refer to the ATK reference for details on implementing all the methods, roles, states, other attributes, events (signals), etc for each ATK interface.
Roles
The table below shows which ATK role or roles correspond to MSAA 1.3 and IAccessible2 roles. In addition to changing the role attribute for a widget, you must also implement ATK interfaces, states, attributes, and events/signals that further indicate the behavior of a widget and additional descriptive information. If a role is proposed but not yet defined as an ATK built-in enumerated role, or if there is no corresponding current or proposed ATK role, you can add the role as a custom role. To add custom roles, use the atk_role_register method in the AtkObject class. <Is this true?>
All widgets can potentially set the following general ATK_STATEs: DEFUNCT, FOCUSED, SHOWING, VISIBLE, FOCUSABLE, SENSITIVE, and ENABLED.
When implementing the ATK interfaces for a widget, also look at the signals associated with that interface and implement signal handling.
Note that if there is an MSAA role, an IA2 role is not needed.
MSAA 1.3 Role |
IAccessible2 Role |
CLOSEST ATK Role(s) |
Also implement these ATK Interfaces |
Potential ATK states in addition to general states (ATK_STATE_*) |
Description |
ALERT |
|
ALERT |
AtkObject, |
ACTIVE, |
An error, warning, or informational message |
ANIMATION |
|
ANIMATION |
ANIMATED |
A dynamic or moving image that changes over time. |
|
APPLICATION |
|
APPLICATION |
AtkObject, |
|
Toplevel accessible object of an application, which may contain frame objects or other accessible objects. |
BORDER |
|
don't use |
|
|
Window border as an object |
BUTTONDROPDOWN |
|
add custom role |
AtkObject, |
ACTIVE, |
Button that drops down a list of items |
BUTTONDROPDOWNGRID |
|
add custom role |
AtkObject, |
ACTIVE, |
Button that drops down a grid |
BUTTONMENU |
|
add custom role |
AtkObject, |
ACTIVE, |
Button that drops down a menu |
CARET |
|
don't use |
|
|
System caret |
CELL |
|
TABLE_CELL |
AtkObject, |
SINGLE_LINE, |
Cell in a table |
CHARACTER |
|
don't use |
|
|
Paperclip character. |
CHART |
|
CHART (proposed)? |
|
Graphical depiction of quantitative data |
|
CHECKBUTTON |
CHECK_MENU_ITEM, |
CHECK_BOX, |
AtkObject, |
ACTIVE, |
Choice that can be checked or unchecked. CHECK_BOX is most like CHECKBUTTON. |
CLOCK |
|
add custom role |
For digital clock, see SPINBUTTON. |
|
Clock object. |
COLUMN |
|
don't use |
|
|
Column of table cells. |
COLUMNHEADER |
|
TABLE_COLUMN_HEADER, |
|
Header which labels a column of data, or more specifically a column of data in a table. |
|
COMBOBOX |
|
COMBO_BOX |
AtkObject, |
ACTIVE, |
Edit control with a drop-down list of selections |
CURSOR |
|
don't use |
|
|
Mouse pointer. |
DIAGRAM |
|
IMAGE, |
|
Image is a generic graphic. |
|
DIAL |
|
DIAL |
|
Control with value changes using a rotating visual indicator |
|
DIALOG |
COLOR_CHOOSER, |
DIALOG, |
AtkObject, |
ACTIVE, |
Top level window with a title bar and border. |
DOCUMENT |
TEXT_FRAME |
HTML_CONTAINER or |
AtkObject, |
EDITABLE, |
For MSAA, a document is a window that corresponds to MDI document. |
DROPLIST |
|
add custom role or |
AtkObject, |
ACTIVE, |
Drop down list but not a combo box |
EQUATION |
|
add custom role |
|
Math and chemistry equations |
|
GRAPHIC |
DESKTOP_ICON, |
IMAGE, |
|
Desktop icon is an inconifed internal frame within a DESKTOP_PANE |
|
GRIP |
|
|
|
An object that can be moved to resize a pane |
|
GROUPING |
|
PANEL, |
VERTICAL, |
Container used to group objects, like a group box or a FIELDSET in HTML. |
|
HELPBALLOON |
|
don't use |
|
Help icon to click on to get tooltip help |
|
HOTKEYFIELD |
|
add custom role |
AtkObject, |
ACTIVE, |
Editable field for assigning keys |
INDICATOR |
|
ARROW or |
|
An indicator is a graphic, like an arrow, used to indicate something. |
|
LINK |
|
LINK |
AtkObject, |
|
Hypertext link in a document that can be an image or text |
LIST |
|
LIST |
AtkObject, |
ACTIVE, |
List of objects that allows one or more selections. |
LISTITEM |
|
LISTITEM |
SELECTABLE, |
Element in a selectable list |
|
MENUBAR |
|
MENU_BAR |
ACTIVE, |
Object drawn at the top of the primary window or dialog box of an application ((just below the title bar)) that contains a list of menus. |
|
MENUITEM |
|
MENU_ITEM, |
AtkObject, |
SELECTABLE, |
Element in a menu that presents a selectable action. |
MENUPOPUP |
|
POPUP_MENU, |
ACTIVE, |
|
|
OUTLINE |
|
TREE, |
AtkObject, |
ACTIVE, MANAGES_DESCENDANTS, |
A tree or an outline is an object used to present hierarchical information to the user, usually with expandable/collapsable elements. |
OUTLINEITEM |
|
use custom role |
SELECTABLE, |
A tree item. |
|
PAGETAB |
|
PAGE_TAB |
AtkObject, |
SELECTABLE, |
A tab that usually contains a label or title for a page or panel of a notebook container. |
PAGETABLIST |
|
PAGE_TAB_LIST |
ACTIVE, |
A tabbed notebook container, or a series of panels presented as tabbed pages. |
|
PANE |
GLASS_PANE, |
GLASS_PANE, |
ACTIVE, |
A pane in the current window. |
|
PROGRESSBAR |
|
PROGRESS_BAR |
BUSY, |
Object that shows the percentage of a task that has completed. |
|
PROPERTYPAGE |
|
PAGE_TAB_LIST or |
AtkObject, |
ACTIVE, |
Page showing properties of something. |
PUSHBUTTON |
|
PUSH_BUTTON |
AtkObject, |
ACTIVE, |
A push button tells the application to do something when it is activated. |
RADIOBUTTON |
RADIO_MENU_ITEM |
RADIO_BUTTON, |
ACTIVE, |
Usually in a group, only one radio button in a group can be "checked". Check one radio button causes all others in the group to be unchecked. |
|
ROW |
|
don't use |
|
Row in a table. |
|
ROWHEADER |
|
ROW_HEADER, |
|
Header which labels a row of data, or more specifically a row of data in a table. |
|
SCROLLBAR |
|
SCROLL_BAR |
BUSY, |
Object which allows a user to incrementally view a large amount of data by moving the bounds of a viewport along a one-dimensional axis. |
|
SEPARATOR |
|
SEPARATOR |
VERTICAL, |
Object that provides a visual separation of contents in a menu or between 2 areas/panes. |
|
SLIDER |
|
SLIDER |
BUSY, |
Object that allows the user to select or adjust a value in increments from a bounded range of minimum to maximum values. |
|
SOUND |
|
IMAGE, ICON, or |
|
System sound object. |
|
SPINBUTTON |
|
SPIN_BUTTON |
REQUIRED |
Object that allows the user to select a value from a set of choices. |
|
STATICTEXT |
LABEL |
LABEL, |
AtkObject, |
MULTI_LINE, |
A label presents text that provides a short name or description associated with another object, like a text entry field. |
STATUSBAR |
|
STATUS_BAR |
|
Display non-quantitative status information, in contrast to a progress bar which displays quantitative status. |
|
TABLE |
|
TABLE, |
AtkObject, |
ACTIVE, |
Presents information in terms of rows and columns. |
TEXT |
DATE_EDITOR, |
TEXT, |
AtkObject, |
MULTI_LINE, |
Text information in general. |
TITLEBAR |
|
add custom role |
AtkObject, |
|
Title or caption of a window or dialog. |
TOOLBAR |
|
TOOL_BAR |
|
A bar or palette usually comprised of push buttons or toggle buttons. |
|
TOOLTIP |
|
TOOL_TIP |
AtkObject, |
HAS_TOOLTIP (for object that has the tooltip) |
An object that provides descriptive or helpful information about another object, often when the help key is pressed or the mouse moves over an object. |
WHITESPACE |
|
FILLER |
VERTICAL, |
Object that takes up space in a user interface. |
|
WINDOW |
FRAME, |
WINDOW, |
AtkObject, |
ACTIVE, |
A top level window with no title or border. |
|
RULER |
RULER |
|
Object that describes margins and tab stops. |
|
|
EMBEDDED_OBJECT |
EMBEDDED |
|
Object that is an embedded component container in a document. |
|
|
EDITBAR |
EDITBAR |
AtkObject, |
MULTI_LINE, |
Object that is an editable text object in a toolbar. |
CLIENT |
|
CANVAS |
AtkObject, |
|
Object that can be drawn into and used to trap events. |
|
|
INVALID |
|
|
An error condition, such as an uninitialized role. |
|
|
UNKNOWN |
|
|
Object contains accessible information but its role is not known. |
|
NOTE |
add custom role |
|
|
|
|
IMAGE_MAP |
add custom role |
|
|
|
|
FOOTNOTE |
add custom role |
|
|
|
|
END_NOTE |
add custom role |
|
|
|
States
The table below shows which ATK states correspond to MSAA 1.3 and IAccessible2 states. If a state is proposed but not yet defined as an ATK built-in enumerated state, or if there is no corresponding current or proposed ATK state, you can add the state as a custom state. If there is an MSAA 1.3 state, then there should not be an IAccessible2 state. In some cases, you need to implement an ATK or IAccessible2 interface or use a role or a relationship instead of a state to convey the accessible information. To add custom states, use the atk_state_type_register method in the AtkState class <Is this true?>.
MSAA 1.3 State |
IAccessible2 States |
CLOSEST ATK State(s) |
Description |
ANIMATED |
|
ANIMATED (proposed) or |
Object's visual representation is changing or moving rapidly; it is dynamic not static. This state may be applied to an object during an animated 'effect' and be removed from the object once its visual representation becomes static. 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. |
BUSY |
|
BUSY |
Control cannot accept input at this time. Usually used on objects such as progress bars, sliders, or scroll bars to indicate they are in a state of transition. |
CHECKED |
|
CHECKED |
Checkbox, radio button, or toggle button is checked. |
COLLAPSED |
|
!EXPANDED, |
Expandable objects that provide progressive disclosure, like a tree list or drop-down list is currently not expanded (i.e. the children are not showing or visible). |
DEFAULT |
|
DEFAULT_BUTTON (proposed) |
Default button or menu item. |
EXPANDED |
|
EXPANDED |
The children items of expandable objects that provide progressive disclosure, like trees and drop-down lists are currently showing and visible. |
EXTSELECTABLE |
|
add custom state |
Object can extend its selection. |
FLOATING |
|
add custom state |
Object is not clipped to the boundary of the parent (i.e. it does not auto-move with the parent). |
FOCUSABLE |
|
FOCUSABLE |
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. |
FOCUSED |
|
FOCUSED |
Object currently has the keyboard focus. |
HASPOPUP |
|
Use ATK_RELATION_POPUP_FOR to point to the parent of the popup. |
Object has a popup, but in ATK the popup children need to establish the relationship with the parent. |
HOTTRACKED |
|
don't use |
Object's appearance has changed for a mouseover. |
INVISIBLE |
|
!VISIBLE |
The object is hidden, whether on-screen or off-screen. |
LINKED |
|
Use ATK_ROLE_LINK |
The object links to another object. |
MARQUEED |
|
ANIMATED (proposed) |
The object is constantly changing and fleeting across the screen. |
MIXED |
|
INDETERMINATE or |
A checkbox object is in a state other than checked or not checked, such as a tri-state checkbox might be. |
MOVEABLE |
|
add custom state |
Object can be moved or dragged around the screen. |
MULTISELECTABLE |
|
MULTISELECTABLE |
Object allows more than one of its children to be selected at the same time. |
NORMAL |
|
|
Object has no states. |
OFFSCREEN |
|
!SHOWING |
An object is currently not visible and not on-screen. Partially on-screen |
PRESSED |
|
PRESSED |
Object is currently pressed down. |
PROTECTED |
|
Use ATK_PASSWORD_TEXT as the role |
Object is a password field. |
READONLY |
|
!EDITABLE & SENSITIVE |
Object is interactive (sensitive) but the contents currently cannot be edited (changed) by the user. |
SELECTABLE |
|
SELECTABLE |
Object is the child of an object that allows its children to be selected, and this child is one that can be selected. |
SELECTED |
|
SELECTED |
Object is the child of an object that allows its children to be selected, and this child is selected. |
SELFVOICING |
|
add custom state |
Object is self-voiced by the application, so an AT should not speak this object. |
SIZEABLE |
|
RESIZABLE |
The size of the object can be changed (i.e. it is not fixed.) |
TRAVERSED |
|
Use a object attribute or |
The link object was traversed (visited). |
UNAVAILABLE |
|
!ENABLED |
Object is grayed out and not available at this time. |
|
ACTIVE |
ACTIVE |
A window is currently the active window, or is an active sub-element within a container or table. Includes windows, dialogs, frames, etc. In addition, this state is used to indicate the currently active child of a component such as a list, table, or tree. For example, the active child of a list is the child that is drawn with a rectangle around it. If ACTIVE state, then also MANAGES_DESCENDANTS. |
|
ARMED |
ARMED |
The object is armed. Usually used on buttons that have been pressed but not yet released, and the mouse pointer is still over the button. |
|
DEFUNCT |
DEFUNCT |
User interface object corresponding to this object no longer exists. |
|
EDITABLE |
EDITABLE |
The contents of this object can change. |
|
|
ENABLED |
Object is not grayed out and can be interacted with if sensitive. |
EXPANDED or COLLAPSED |
|
EXPANDABLE |
The children items of this object that provide progressive disclosure, like trees and drop-down lists, can be showing and visible (expanded) versus hidden (collapsed). |
|
|
HAS_TOOLTIP |
Object has an associated tooltip. Tooltip text should be accessible description. |
|
HORIZONTAL |
HORIZONTAL |
Orientation of this object is horizontal. |
|
ICONIFIED |
ICONIFIED |
Object is minimized and represented only by an icon. |
|
INVALID |
INVALID |
Object is in an invalid state. |
|
INVALID_ENTRY |
INVALID_ENTRY |
This object has indicated 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. |
|
MANAGES_DESCENDANTS |
MANAGES_DESCENDANTS |
Indicates that "active-descendant-changed" event is sent when children become 'active' (i.e. are selected or navigated to onscreen). Typically used for trees and tables that have a large number of subcomponents and where the objects are created only when needed and otherwise remain virtual. The application should not manage the subcomponents directly. If ACTIVE state, then also MANAGES_DESCENDANTS. |
|
MODAL |
MODAL |
Something must be done with this object before the user can interact with an object in a different window. |
|
MULTI_LINE |
MULTI_LINE |
Text object can contain multiple lines of text. |
|
OPAQUE |
OPAQUE |
Object paints every pixel within its rectangular region. A non-opaque component paints only some of its pixels, allowing the pixels underneath it to "show through". A component that does not fully paint its pixels therefore provides a degree of transparency. |
|
REQUIRED |
REQUIRED |
Explicit user interaction with this object is required by the user interface. |
|
SELECTABLE_TEXT |
SELECTABLE_TEXT |
Object supports text selection. It should only be exposed on objects which implement the Text interface, in order to distinguish this state from STATE_SELECTABLE, which infers that the object is a selectable child of an object which implements Selection. While similar, text selection and subelement selection are distinct operations. |
|
|
SENSITIVE |
Object can be interactive, although it may currently be read-only or not enabled (grayed out). 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. |
|
|
SHOWING |
Object is visible and on-screen. |
|
SINGLE_LINE |
SINGLE_LINE |
Text object can only contain a single line of text. |
|
STALE |
STALE |
Index associated with this object has changed since the user accessed the object. The information returned for this object may no longer be synchronized with the application state. |
|
SUPPORTS_AUTOCOMPLETION |
SUPPORTS_AUTOCOMPLETION |
Object 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 source. |
|
TRANSIENT |
TRANSIENT |
Object is changing or moving rapidly. An assistive technology should not add a property change listener to an object with transient state, as that object will never generate any events. Transient objects are typically created to answer ATK accessibility method queries, but otherwise do not remain linked to the underlying object (for example, those objects underneath lists, tables, and trees, where only one actual UI component does shared rendering duty for all of the data objects underneath the actual list/table/tree elements). |
|
? |
TRUNCATED |
Object is truncated, such as a numerical value in a spreadsheet cell. |
|
VERTICAL |
VERTICAL |
Orientation of this object is vertical. |
|
|
VISIBLE |
Object is not hidden but may be off-screen. 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'. |
Object Level Events aka Signals
The table below shows which ATK events correspond to MSAA 1.3 and IAccessible2 events.
Refer to section Custom#events 5.5 Managing Events] for more information and examples related to setting up ATK event handlers.
MSAA 1.3 EVENT |
IAccessible2 Events |
CLOSEST ATK Object Event(s) |
Description |
CREATE, |
|
Window events: |
An object has been created or destroyed. The system sends this event for the following user interface elements: caret, header, list view, tab, tree view, toolbar, and window objects. |
SHOW |
|
|
A hidden object is shown. The system sends this event for the following user interface elements: caret, cursor, and window object. Hidden objects do not set the ATK_STATE_VISIBLE flag; shown objects do set this flag. The SHOW event also indicates that the ATK_STATE_VISIBLE flag is set. |
HIDE |
|
|
An object is hidden. The system sends this event for the following user interface elements: caret and cursor. |
REORDER |
children_changed_add |
children-changed (AtkObject) |
A container object has been added, removed, or reordered its children. The system sends this event for the following user interface elements: header control, list view control, toolbar control, and window object. For example, this event is generated by a list view object when the number of child elements or the order of the elements changes. This event is also sent by a parent window when the z order for the child windows changes. |
FOCUS |
See: ACTIVE_DESCENDANT_CHANGED |
focus-event (AtkObject) |
An object has received the keyboard focus. The system sends this event for the following user interface elements: list view control, menu bar, pop-up menu, switch window, tab control, tree view control, and window object. |
SELECTION |
|
selection-changed (AtkSelection) |
The selection within a container object has changed. The system sends this event for the following user interface elements: list view control, tab control, tree view control, and window object. |
|
ACTIVE_DESCENDANT_CHANGED |
active-descendant-changed (AtkObject) |
If the object includes STATE_MANAGES_DESCENDANTS, this event is fired to indicate that the descendant having STATE_ACTIVE has changed; this corresponds to "micro" keyboard focus when the containing/emitting object has "macro" or technical keyboard focus. For instance, this event is usually emitted while traversing tables and/or spreadsheet cells. |
SELECTIONADD, |
|
selection-changed (AtkSelection) |
An item within a container object has been added to or removed from the selection. The system sends these events for the following user interface elements: list box, list view control, and tree view control. For SELECTIONWITHIN, numerous selection changes have occurred within a container object. The system sends this event for list boxes. Used instead of sending several SELECTIONADD or SELECTIONREMOVE events. |
STATECHANGE |
|
state-changed * (AtkObject) |
An object's state has changed. The system sends this event for the following user interface elements: check box, combo box, header control, push button, radio button, scroll bar, toolbar control, tree view control, up-down control, and window object. For example, a state change occurs when a button object is pressed or released, or when an object is enabled or disabled. |
LOCATIONCHANGE |
TEXT_CARET_MOVED |
bounds-changed (AtkComponent) |
An object has changed location, shape, or size. The system sends this event for the following user interface elements: caret and window object. Server applications send this event for their accessible objects. This event is generated in response to the top-level object within the object hierarchy that has changed, not for any children it might contain. For example, if the user resizes a window, the system sends this notification for the window, but not for the menu bar, title bar, scroll bars, or other objects that have also changed. The system does not send this event for every non-floating child window when the parent moves. However, if an application explicitly resizes child windows as a result of resizing, the system sends multiple events for the resized children. |
NAMECHANGE |
|
property-change::accessible-name (AtkObject) |
An object's name property has changed. The system sends this event for the following user interface elements: check box, cursor, list view control, push button, radio button, status bar control, tree view control, and window object. |
DESCRIPTIONCHANGE |
|
property-change::accessible-description (AtkObject) |
An object's description property has changed. |
VALUECHANGE |
|
value-changed (proposed - AtkObject?) |
An object's value property has changed. The system sends this event for the following user interface elements: edit control, header control, hot key control, progress bar control, scroll bar, slider control, and up-down control. |
|
TEXT_CHANGED |
text-changed (AtkText) |
The text content of this object has changed. |
|
HYPERTEXT_CHANGED |
|
|
PARENTCHANGE |
|
property-change::accessible-parent (AtkObject) |
An object has a new parent object. |
|
TABLE_CAPTION_CHANGED |
Other property-change:: signals in AtkObject: |
|
|
|
Other property-change:: signals in AtkHyperlink: |
|
HELPCHANGE |
|
|
An object's help property has changed. |
ACCELERATORCHANGE |
|
|
An object's key bindings has changed. |
DEFACTIONCHANGE |
See: ACTION_CHANGED |
|
An object's default action property has changed. The system sends this event for dialog boxes. |
|
ACTION_CHANGED |
|
The change of the number or attributes of actions of an accessible object is signaled. There will be cases where the action that changed is not the default action. |
|
|
attribute-change (AtkObject - proposed) |
A weakly-typed property has changed in value, been added, or been removed from the object. (attribute-change notifications were added in AT-SPI 1.7.0) Still need a way to register weakly-typed properties in AtkObject . |
|
|
load-complete (AtkDocument - proposed) |
A pending (static) document content load has completed. |
|
|
reload (AtkDocument - proposed) |
A reload of the document content has been initiated. |
|
|
load-stopped (AtkDocument - proposed) |
Loading of the document content has been interrupted. |
|
|
content-changed (AtkDocument - proposed) |
The contents of the Document container has changed. |
|
|
attributes-changed (AtkDocument - proposed) |
The global attributes (i.e. document-wide attributes) of the Document have changed. |
|
TEXT_ATTRIBUTE_CHANGED |
text-attributes-changed (AtkText) |
The attributes of a range of text, or the range over which attributes apply, has changed. |
|
TEXT_SELECTION_CHANGED |
text-selection-changed (AtkText) |
The range or number of text selections within this text object has changed |
|
|
link-activated (AtkHyperlink) |
The signal link-activated is emitted when a link is activated. |
|
|
link-selected (AtkHypertext) |
The "link-selected" signal is emitted by an AtkHyperText object when one of the hyperlinks associated with the object is selected. |
|
object:row-deleted |
column-deleted (AtkTable)column-inserted (AtkTable)column-reordered (AtkTable)row-deleted (AtkTable)row-inserted (AtkTable)row-reordered (AtkTable)model-changed (AtkTable) |
The "column-deleted" signal is emitted by an object which implements the AtkTable interface when a column is deleted. The "column-inserted" signal is emitted by an object which implements the AtkTable interface when a column is inserted.The "column-reordered" signal is emitted by an object which implements the AtkTable interface when columns are reordered. The "row-deleted" signal is emitted by an object which implements the AtkTable interface when a row is deleted. The "row-inserted" signal is emitted by an object which implements the AtkTable interface when a row is inserted.The "row-reordered" signal is emitted by an object which implements the AtkTable interface when rows are reordered. The "model-changed" signal is emitted by an object which implements the AtkTable interface when the model displayed by the table changes. |
EVENT_SYSTEM_MINIMIZESTART, :: EVENT_SYSTEM_MINIMIZEEND, EVENT_SYSTEM_MOVESIZESTART, :: EVENT_SYSTEM_MOVESIZEEND, EVENT_SYSTEM_FOREGROUND :: |
|
window events: |
|
Relations
The table below shows which ATK relations correspond to IAccessible2 relations.
IAccessible2 Relations |
CLOSEST ATK Relation(s) |
Description |
CONTROLLED_BY |
CONTROLLED_BY |
Object state, position, etc. is modified/controlled by user interaction with one or more other objects. For instance a viewport or scroll pane may be CONTROLLED_BY scrollbars. |
CONTROLLER_FOR |
CONTROLLER_FOR |
Object is an interactive object which modifies the state, onscreen location, or other attributes of one or more target objects. |
|
DESCRIBED_BY |
Indicates that another object provides descriptive information about this object; more verbose than ATK_RELATION_LABELLED_BY. |
|
DESCRIPTION_FOR |
Indicates that an object provides descriptive information about another object; more verbose than ATK_RELATION_LABEL_FOR. |
EMBEDDED_BY |
EMBEDDED_BY |
Reciprocal of RELATION_EMBEDS; Used to denote content rendered by embedded renderers that live in a separate process space from the embedding context. |
EMBEDS |
EMBEDS |
Similar to SUBWINDOW_OF, but specifically used for cross-process embedding. |
FLOWS_FROM |
FLOWS_FROM |
Reciprocal of RELATION_FLOWS_TO. |
FLOWS_TO |
FLOWS_TO |
Object renders content which flows logically to another object. For instance, text in a paragraph may flow to another object which is not the �next sibling� in the accessibility hierarchy. |
LABEL_FOR |
LABEL_FOR |
Object is a label for one or more other objects. |
LABELED_BY |
LABELLED_BY |
Object is labelled by one or more other objects. |
MEMBER_OF |
MEMBER_OF |
Object has a grouping relationship (e.g. �same group as�) to one or more other objects. |
NODE_CHILD_OF |
NODE_CHILD_OF |
Indicates an object is a cell in a treetable which is displayed because a cell in the same column is expanded and identifies that cell. |
PARENT_WINDOW_OF |
PARENT_WINDOW_OF |
Indicates that an object is a parent window of another object. |
POPUP_FOR |
POPUP_FOR |
Denotes that the object is a transient window or frame associated with another onscreen object. Similar to TOOLTIP_FOR, but more general. Useful for windows which are technically toplevels but which, for one or more reasons, do not explicitly cause their associated window to lose �window focus�. Creation of a ROLE_WINDOW object with the POPUP_FOR relation usually requires some presentation action on the part of assistive technology clients, even though the previous toplevel ROLE_FRAME object may still be the active window. |
|
RELATION_EXTENDED (AT-SPI only?) |
Used to indicate that a relationship exists, but its type is not specified in the enumeration and must be obtained via a call to getRelationName. |
SUBWINDOW_OF |
SUBWINDOW_OF |
Object is visually and semantically considered a subwindow of another object, even though it is not the object's child. Useful when dealing with embedded applications and other cases where the widget hierarchy does not map cleanly to the onscreen presentation. |
|
TOOLTIP_FOR (proposed) |
Object is a tooltip associated with another object. |
Interfaces and Methods
The tables below show how to map MSAA 1.3 and IAccessible2 interfaces and functions to ATK interfaces and functions.
Creating accessible objects
MSAA Server Interfaces and Functions |
ATK (and AT-SPI) object interfaces |
Description |
AtkObject* atk_object_factory_create_accessible (AtkObjectFactory *factory, GObject *obj); |
MSAA: Creates an accessible object with the methods and properties for the specified type of system-provided user interface element. |
|
|
MSAA: creates an accessible object that has the properties and methods of the specified class of system-provided user interface element. |
|
MSAA: returns a reference, that is similar to a handle, to the specified object. Servers return this reference when handling WM_GETOBJECT. |
||
Accessibility::notifyEvent (in Event e) |
MSAA: signals the system that a predefined event occurred. If any client applications have registered a hook function for the event, the system calls the client's hook function. |
|
|
MSAA: retrieves an IAccessible interface pointer for the interface associated with the given object ID. Oleacc.dll uses this method to obtain an IAccessible interface pointer for proxies that are supplied by other code. |
|
|
MSAA: returns the number of type descriptions for the object. For objects that support IDispatch, the type information count is always one. |
|
GType atk_object_factory_get_accessible_type (AtkObjectFactory *factory); |
MSAA: retrieves a description of the object's programmable interface. |
|
GetIDsOfNames |
|
MSAA: maps the name of a method or property to a DISPID, which is later used to invoke the method or property. |
Invoke |
|
MSAA: calls one of the object's methods, or gets or sets one of its properties. |
Base accessible interfaces
MSAA IAccessible methods |
ATK interface |
Description |
Navigation and Hierarchy |
From AtkObject |
|
accNavigate ( long, VARIANT, VARIANT* ); |
|
MSAA: traverses to another user interface (UI) element within a container and retrieves the object. All visual objects must support this method. |
get_accChild ( VARIANT, IDispatch** ); |
AtkObject* atk_object_ref_accessible_child (AtkObject *accessible, gint i); |
MSAA: retrieves an '''IDispatch''' interface pointer for the specified child, if one exists. All objects must support this property. |
get_accChildCount ( long* ); |
gint atk_object_get_n_accessible_children (AtkObject *accessible); |
MSAA: retrieves the number of children that belong to this object. All objects must support this property. |
get_accParent ( IDispatch** ); |
AtkObject* atk_object_get_parent (AtkObject *accessible); |
MSAA: retrieves the '''IDispatch''' interface of the object's parent. All objects support this property. |
===== Descriptive Properties and Methods ===== |
|
|
accDoDefaultAction ( VARIANT ); |
gboolean atk_action_do_action (AtkAction *action, gint i); |
MSAA: performs the specified object's default action. Not all objects have a default action. Similar to IAccessibleAction::doAction, but it provides for more than one action. The first IAAction should be the default action. |
get_accDefaultAction ( VARIANT, BSTR* ); |
const gchar* atk_action_get_name (AtkAction *action, gint i); |
MSAA: retrieves a string that describes the object's default action. Not all objects have a default action. IAccessibleAction has getters for description and the key binding. Both are strings. |
get_accDescription ( VARIANT, BSTR* ); |
const gchar* atk_object_get_description (AtkObject *accessible); |
MSAA: retrieves a string that describes the visual appearance of the specified object. Not all objects have a description. |
get_accHelp ( VARIANT, BSTR* ); |
|
MSAA: retrieves an object's Help property string. Not all objects support this property. |
get_accHelpTopic ( BSTR*, VARIANT, long* ); |
|
MSAA: retrieves the full path of the WinHelp file associated with the specified object and the identifier of the appropriate topic within that file. Not all objects support this property. |
get_accKeyboardShortcut ( VARIANT, BSTR* ); |
const gchar* atk_action_get_keybinding (AtkAction *action, gint i); |
MSAA: retrieves the specified object's shortcut key or access key, also known as the mnemonic. All objects that have a shortcut key or an access key support this property. Similar to IAccessibleAction::keyBinding. MSAA shortcuts can be on controls with no default action such as a text box or static text next to a text box (label). IAccessible2 key bindings are only on actionable controls. They are needed for image maps or a control that has more than one action. If there is only one action on an actionable control, there is no need to implement IAccessibleAction. |
get_accName ( VARIANT, BSTR* ); |
const gchar* atk_object_get_name (AtkObject *accessible); |
MSAA: retrieves the name of the specified object. All objects support this property. |
get_accRole ( VARIANT, VARIANT* ); |
AtkRole atk_object_get_role (AtkObject *accessible); |
MSAA: retrieves information that describes the role of the specified object. All objects support this property. MSAA roles run from 1 - 0x40, new IAccessible2 roles will be mapped at higher values, starting at 0x100. There will be IAccessible2:roleName and IAccessible2::localizedRoleName. |
get_accState ( VARIANT, VARIANT* ); |
AtkStateSet* atk_object_ref_state_set (AtkObject *accessible); |
MSAA: retrieves the current state of the specified object. All objects support this property.Use MSAA get_accStates for states that map to MSAA states. For new states: IAccessible::states returns additional IAccessible2 states in a 32 bit bitstrip. The AT will sense for the presence of IAccessible2 and if found fetch the states. |
get_accValue ( VARIANT, BSTR* ); |
void atk_value_get_current_value (AtkValue *obj, GValue *value); |
MSAA: retrieves the value of the specified object. Not all objects have a value. IAccessibleValue::currentValue is not a duplicate. MSAA returns a string. IAccessible2 returns an integer. get_accValue is needed when something like "blue" is a meaningful return value. IAccessibleValue is needed when min/max/current integers are meaningful. MSAA has no min/max capability. IAccessible2 has no string capability. They are both needed. |
Selection and Focus |
From AtkSelection and AtkComponent |
|
accSelect ( long, VARIANT ); |
gboolean atk_selection_add_selection (AtkSelection *selection, gint i); |
MSAA: modifies the selection or moves the keyboard focus of the specified object. All objects that support selection or receive the keyboard focus must support this method. It does take focus, take/extend selection/add/remove. Duplicate of or similar to IAccessibleSelection::selectAccessibleChild. Get note from Aaron. |
get_accFocus ( VARIANT* ); |
Walk the tree and check for object that has focus |
MSAA: retrieves the object that has the keyboard focus. All objects that receive the keyboard focus must support this property. |
get_accSelection ( VARIANT * ); |
See: atk_selection_ref_selection, atk_selection_get_selection_count |
MSAA: retrieves the selected children of this object. All objects that support selection must support this property. |
===== Spatial Mapping ===== |
From AtkComponent |
|
accLocation ( long*, long*, long* long*, VARIANT); |
void atk_component_get_position (AtkComponent *component, gint *x, gint *y, AtkCoordType coord_type); |
MSAA: retrieves the specified object's current screen location. All visual objects must support this method; sound objects do not support it. |
accHitTest ( long, long, '''VARIANT'''* ); |
AtkObject* atk_component_ref_accessible_at_point (AtkComponent *component, gint x, gint y, AtkCoordType coord_type); |
MSAA: retrieves the child element or child object at a given point on the screen. All visual objects support this method; sound objects do not support it. Similar to IAccessibleComponent:accessibleAtPoint.BR ATK: Gets a reference to the accessible child, if one exists, at the coordinate point specified by x and y. |
Put functions |
|
|
void atk_object_set_name (AtkObject *accessible, const gchar *name); |
MSAA: is no longer supported. Client applications should use a control-specific workaround, such as the SetWindowText API. Servers should return E_NOTIMPL. |
|
|
void atk_object_set_description (AtkObject *accessible, const gchar *description); |
MSAA: No equivalent. |
|
void atk_object_set_parent (AtkObject *accessible, AtkObject *parent); |
MSAA: No equivalent. |
|
void atk_object_set_role (AtkObject *accessible, AtkRole role); |
MSAA: No equivalent. |
gboolean atk_value_set_current_value (AtkValue *obj, const GValue *value); |
MSAA: is supported for some user interface (UI) elements (usually edit controls). For UI elements that do not support this method, control-specific APIs are used instead. For more information, see Supported User Interface Element Reference. Duplicate of IAccessibleValue::setCurrentValue, or is the Value interface only integer? Probably not used. |
Extended accessible interfaces (MSAA extensions) IAccessible2 interfaces and functions (returns HRESULT) ATK interfaces Comments IAccessible2 From AtkRelation, AtkObject, AtkAction, AtkState, AtkStateSet nRelations ([out, retval] long *nRelations) gint atk_relation_set_get_n_relations (AtkRelationSet *set); IA2: get number of accessible relations for this object. relation ([in] long relationIndex,[out, retval] IAccessibleRelation **relation) AtkRelation* atk_relation_set_get_relation (AtkRelationSet *set, gint i); IA2: get one accessible relation at the specified index for this object. relations ([in] long maxRelations,[out, size_is(maxRelations), length_is(*nRelations)] IAccessibleRelation **relation,[out, retval] long *nRelations) AtkRelationSet* atk_object_ref_relation_set (AtkObject *accessible); IA2: get multiple accessible relations for this object. Not sure if or how you can add new relationships in IA2. scrollTo ([in] boolean topLeft) IA2: make object visible on screen. This allows a screen magnifier to programmatically scroll focus to a object in the document. Requested for use by ZoomText. groupPosition ([out] long *groupLevel,[out] long *similarItemsInGroup,[out, retval] long *positionInGroup) IA2: get position within group (used for tree items, list items, tab panel labels, radio buttons, etc. extendedStates ([in] long maxStates,[out, size_is(, maxStates), length_is(,*nStates)] BSTR **state,[out, retval] long *nStates) See: atk_state_type_get_name, atk_state_type_for_name, atk_state_type_register IA2: get extended states (array of strings like "required", "invalid", etc.) states ([in] long maxStates,[out, size_is(, maxStates), length_is(,*nStates)] AtkStateSet* atk_object_ref_state_set (AtkObject *accessible); IA2: Get all currently set states as a sequence of state ids. Different thanIAccessible::get_accStates. This call returns additional IAccessible2 states in a 32 bit bitstrip. The AT will sense for the presence of IAccessible2 and if found fetch the states. nExtendedState ([out, retval] long *nExtendedStates) OR nStates ([out, retval] long *nStates) IA2: get number of extended? states. AtkStateType atk_state_type_register (const gchar *name); IA2: No State interface in IA2 - not needed. const gchar* atk_state_type_get_name (AtkStateType type); IA2: No State interface in IA2 - not needed. AtkStateType atk_state_type_for_name (const gchar *name); IA2: No State interface in IA2 - not needed. IA2: No StateSet interface in IA2 - not needed, but this method is in ATK and UNO. gboolean atk_state_set_add_state (AtkStateSet *set, AtkStateType type); IA2: No StateSet interface in IA2 - not needed, but this method is in ATK. void atk_state_set_add_states (AtkStateSet *set, AtkStateType *types, gint n_types); IA2: No StateSet interface in IA2 - not needed, but this method is in ATK. void atk_state_set_clear_states (AtkStateSet *set); IA2: No StateSet interface in IA2 - not needed, but this method is in ATK. gboolean atk_state_set_contains_state (AtkStateSet *set, AtkStateType type); IA2: No StateSet interface in IA2 - not needed, but this method is in ATK and UNO. gboolean atk_state_set_contains_states (AtkStateSet *set, AtkStateType *types, gint n_types); IA2: No StateSet interface in IA2 - not needed, but this method is in ATK and UNO. gboolean atk_state_set_remove_state (AtkStateSet *set, AtkStateType type); IA2: No StateSet interface in IA2 - not needed, but this method is in ATK. AtkStateSet* atk_state_set_and_sets (AtkStateSet *set, AtkStateSet *compare_set); IA2: No StateSet interface in IA2 - not needed, but this method is in ATK. AtkStateSet* atk_state_set_or_sets (AtkStateSet *set, AtkStateSet *compare_set); IA2: No StateSet interface in IA2 - not needed, but this method is in ATK. AtkStateSet* atk_state_set_xor_sets (AtkStateSet *set, AtkStateSet *compare_set); IA2: No StateSet interface in IA2 - not needed, but this method is in ATK. extendedRoles ([in] long maxRoles,[out, size_is(, maxRoles), length_is(,*nRoles)] BSTR **role,[out, retval] long *nRoles) const gchar* atk_role_get_name or use an enumerated role (like HEADING) and qualify it with text attributes like "xhtml:h1" IA2: get extended roles (array of strings). MSAA roles run from 1 - 0x40, new IAccessible2 roles will be mapped at higher values, starting at 0x100. nExtendedRoles ([out, retval] long *nExtendedRoles) OR nRoles ([out, retval] long *nRoles) IA2: get number of extended? roles. childID ([out, retval] long *childID) IA2: unique ID, must be persistent so that OBJECT_REORDER events can be used to invalidate AT cache. windowHandle ([out, retval] long *windowHandle) IA2: current WindowFromAccessibleObject uses nested get_accParent()'s until a ROLE_WINDOW object is found, and maps that to a window handle accessibleParentIndex ([out, retval] long *accParentIndex) gint atk_object_get_index_in_parent (AtkObject *accessible); ATK: Gets the 0-based index of this accessible in its parent; returns -1 if the accessible does not have an accessible parent. IA2: Get locale of object. Add IAccessible2::get_attributes? Need an atk_object_get_attributes? IA2: To support formulas. The return is a string of name value pairs, e.g. "formula:SUM(A1, B2), There's already an IAccessibleText:attributes. IAccessibleAction From AtkAction nActions ([out, retval] long *nActions) gint atk_action_get_n_actions (AtkAction *action); IA2: get number of actions. doAction ([in] long actionIndex) gboolean atk_action_do_action (AtkAction *action, gint i); IA2: perform specified action on the object. Similar to IAccessible::accDoDefaultAction., but IAccessibleAction::doAction provides for more than one action. The first IAccessibleAction should be the default action. description ([in] long actionIndex,[out, retval] BSTR *description) const gchar* atk_action_get_description (AtkAction *action, gint i); IA2: get description of specified action keyBinding ([in] long actionIndex,[in] long nMaxBinding,[out, size_is(, nMaxBinding), length_is(,*nBinding)] BSTR **keyBinding,[out, retval] long *nBinding) const gchar* atk_action_get_keybinding (AtkAction *action, gint i); IA2: return key binding object (if any) associated with specified action key binding is string, e.g. "alt+d". This is the same string that IAccessible:: get_accKeyboardShortcut returns (but MSAA only provides for one action). IAccessibleAction is needed when there is more than one action. IAccessibleHyperlink From AtkHyperlink accessibleActionAnchor ([in] long index,[out, retval] VARIANT *anchor) AtkObject* atk_hyperlink_get_object (AtkHyperlink *link_, gint i); IA2: Returns an object that represents the link anchor, as appropriate for that link.For an HTML link for example, this method would return the string enclosed by the <&a href> tag. Is this a convenience method? Different than ATK because it returns the text instead of an object. accessibleActionURI ([in] long index,[out, retval] VARIANT *object) gchar* atk_hyperlink_get_uri (AtkHyperlink *link_, gint i); IA2: Returns an object that represents the link anchor, as appropriate for that link. For an HTML link for example, this method would return the URL of the <&a href> tag. startIndex ([out, retval] long *index) gint atk_hyperlink_get_start_index (AtkHyperlink *link_); IA2: Returns the index at which the textual representation of the hyperlink (group) starts. endIndex ([out, retval] long *index) gint atk_hyperlink_get_end_index (AtkHyperlink *link_); IA2: Returns the index at which the textual rerpesentation of the hyperlink (group) ends. valid ([out, retval] boolean *valid) gboolean atk_hyperlink_is_valid (AtkHyperlink *link_); IA2: Returns whether the document referenced by this links is still valid. This is a volatile state that may change without further warning like e.g. sending an appropriate event. gboolean atk_hyperlink_is_inline (AtkHyperlink *link_); IA2: No equivalent. gint atk_hyperlink_get_n_anchors (AtkHyperlink *link_); IA2: No equivalent. gboolean atk_hyperlink_is_selected_link (AtkHyperlink *link_); IA2: No equivalent IAccessibleComponent From AtkComponent and AtkText containsPoint ([in] Point aPoint,[out, retval] boolean *containsPoint) gboolean atk_component_contains (AtkComponent *component, gint x, gint y, AtkCoordType coord_type); IA2: Tests whether the specified point lies within this object's bounds. accessibleAtPoint ([in] Point aPoint,[out, retval] IAccessible2 **accessible) AtkObject* atk_component_ref_accessible_at_point (AtkComponent *component, gint x, gint y, AtkCoordType coord_type); IA2: Returns the Accessible child that is rendered under the given point. The test point's coordinates are defined relative to the coordinate system of the object. Similar to IAccessible::accHitTest. locationInParent ([out, retval] Point *location) void atk_component_get_position (AtkComponent *component, gint *x, gint *y, AtkCoordType coord_type); IA2: Returns the location of the upper left corner x/y of the object's bounding box relative to the parent. foreground ([out, retval] Color *foreground) IA2: Returns the foreground color of this object. For chrome controls, such as the color dialog, the foreground will be the selected color. background ([out, retval] Color *background) IA2: Returns the background color of this object. Add IAComponent::layer AtkLayer atk_component_get_layer (AtkComponent *component); IA2 and ATK: Gets the layer of the component. Layers group drawing objects. ODF has draw:layer. Add IAComponent::zOrder gint atk_component_get_mdi_zorder (AtkComponent *component); IA2 and ATK: gets the zorder of the component, i.e. the depth at which the component is shown in relation to other components in the same container. ODF has draw:z-index IAccessibleExtendedComponent No real ATK equivalent IA2: Returns the font of this object. titledBorderText ([out, retval] BSTR *titledBorderText) IA2: Returns the titled border text. toolTipText ([out, retval] BSTR *toolTipText) IA2: Returns the tool tip text of this object. IAccessibleEditableText From AtkEditableText copyText ([in] long startOffset,[in] long endOffset,[out, retval] ) void atk_editable_text_copy_text (AtkEditableText *text, gint start_pos, gint end_pos); IA2: copy a range of text to the clipboard deleteText ([in] long startOffset,[in] long endOffset,[out, retval] ) void atk_editable_text_delete_text (AtkEditableText *text, gint start_pos, gint end_pos); IA2: delete a range of text insertText ([in] long offset,[in] BSTR *text,[out, retval] ) void atk_editable_text_insert_text (AtkEditableText *text, const gchar *string, gint length, gint *position); IA2: insert text at a specified offset cutText ([in] long startOffset,[in] long endOffset,[out, retval] ) void atk_editable_text_cut_text (AtkEditableText *text, gint start_pos, gint end_pos); IA2: cut a range of text to the clipboard pasteText ([in] long offset,[out, retval] ) void atk_editable_text_paste_text (AtkEditableText *text, gint position); IA2: paste text from clipboard at specified offset replaceText ([in] long startOffset,[in] long endOffset,[in] BSTR *text,[out, retval] ) IA2: replace range of text with new text setAttributes ([in] long startOffset,[in] long endOffset,[in] BSTR *attributes,[out, retval] ) gboolean atk_editable_text_set_run_attributes (AtkEditableText *text, AtkAttributeSet *attrib_set, gint start_offset, gint end_offset); IA2: set attributes of range of text IAccessibleImage - not needed From AtkImage const gchar* atk_image_get_image_description (AtkImage *image); IA2: Get description from IAccessible::get_accDescription void atk_image_get_image_position (AtkImage *image, gint *x, gint *y, AtkCoordType coord_type); IA2: Get x/y from IAccessible::get_accLocation void atk_image_get_image_position (AtkImage *image, gint *x, gint *y, AtkCoordType coord_type); IA2: Get x/y from IAccessible::get_accLocation IAccessibleRelation From AtkRelation and AtkRelationSet relationType ([out, retval] BSTR *relationType) AtkRelationType IA2: returns type of relation, but it is not localized. Add get_localizedRelationType nTargets ([out, retval] long *nTargets) IA2: returns the size of the relations targets array target ([in] long targetIndex,[out, retval] IUnknown **target) GPtrArray* atk_relation_get_target (AtkRelation *relation); IA2: get one accessible relation target targets ([in] long maxTargets,[out, size_is(maxTargets), length_is(*nTargets)] IUnknown **target,[out, retval] long *nTargets) IA2: get multiple accessible relation targets IAccessibleSelection From AtkSelection Note: For IA2, this will be implemented on the document and used to expose child selections that cross paragraph boundaries. selectAccessibleChild ([in] long childIndex,[out, retval] boolean *success) gboolean atk_selection_add_selection (AtkSelection *selection, gint i); IA2: Selects the specified Accessible child of the object. Depending on the implementing class the child is added to the current set a selected children (multi selection) or a previously selected child is deselected first (single selection). isAccessibleChildSelected ([in] long childIndex,[out, retval] boolean *selected) gboolean atk_selection_is_child_selected (AtkSelection *selection, gint i); IA2: Determines if the specified child of this object is selected. clearAccessibleSelection ([out, retval] boolean *success) gboolean atk_selection_clear_selection (AtkSelection *selection); IA2 and ATK: Clears the selection in the object so that no children in the object are selected. selectAllAccessibleChildren ([out, retval] boolean *success) gboolean atk_selection_select_all_selection (AtkSelection *selection); IA2: Select all children. Causes every child of the object to be selected if the object supports multiple selections. If multiple selection is not supported then the first child, if it exists, is selected and all other children are deselected. nSelectedAccessibleChildren ([out, retval] long *nSelectedAccessibleChildren) gint atk_selection_get_selection_count (AtkSelection *selection); IA2: Returns the number of Accessible children that are currently selected. selectedAccessibleChild ([in] long childIndex,[out, retval] IAccessible2 **accessible) AtkObject* atk_selection_ref_selection (AtkSelection *selection, gint i); IA2: Returns the specified selected Accessible child. deselectAccessibleChild ([in] long childIndex,[out, retval] boolean *success) gboolean atk_selection_remove_selection (AtkSelection *selection, gint i); IA2: Removes the specified child from the set of this object's selected children. IAccessibleTable From AtkTable accessibleAt ([in] long row,[in] long column,[out, retval] IAccessible2 **accessible) AtkObject* atk_table_ref_at (AtkTable *table, gint row, gint column); IA2: get accessible table cell add index method. gint atk_table_get_index_at (AtkTable *table, gint row, gint column); IA2: No equivalent. add column method. gint atk_table_get_column_at_index (AtkTable *table, gint index_); IA2: No equivalent. add row method. gint atk_table_get_row_at_index (AtkTable *table, gint index_); IA2: No equivalent. caption ([out, retval] IAccessible2 **accessible) AtkObject* atk_table_get_caption (AtkTable *table); Gets the caption for the table. void atk_table_set_caption (AtkTable *table, AtkObject *caption); IA2: No equivalent. columnDescription ([in] long column,[out, retval] BSTR *description) const gchar* atk_table_get_column_description (AtkTable *table, gint column); Gets the description text of the specified column in the table. Will not be implemented in SODC. void atk_table_set_column_description (AtkTable *table, gint column, const gchar *description); IA2: No equivalent. columnExtentAt ([in] long row,[in] long column,[out, retval] Extent *spanColumns) gint atk_table_get_column_extent_at (AtkTable *table, gint row, gint column); IA2: get number of columns spanned by table cell columnHeader ([in] long column,[out, retval] IAccessible2 **accessible) AtkObject* atk_table_get_column_header (AtkTable *table, gint column); Gets the column header of a specified column in an accessible table. void atk_table_set_column_header (AtkTable *table, gint column, AtkObject *header); IA2: No equivalent. nColumns ([out, retval] long *columnCount) gint atk_table_get_n_columns (AtkTable *table); IA2: get total number of columns in table nRows ([out, retval] long *rowCount) gint atk_table_get_n_rows (AtkTable *table); IA2: get total number of rows in table nSelectedColumns ([out, retval] long *columnCount) gint atk_table_get_selected_columns (AtkTable *table, gint **selected); get total number of selected columns nSelectedRows ([out, retval] long *rowCount) gint atk_table_get_selected_rows (AtkTable *table, gint **selected); get total number of selected rows rowDescription ([in] long row,[out, retval] BSTR *description) const gchar* atk_table_get_row_description (AtkTable *table, gint row); Gets the description text of the specified row in the table. Not implemented in SODC. void atk_table_set_row_description (AtkTable *table, gint row, const gchar *description); IA2: No equivalent. rowExtentAt ([in] long row,[in] long column,[out, retval] Extent *spanRows) gint atk_table_get_row_extent_at (AtkTable *table, gint row, gint column); IA2: get number of rows spanned by a table cell rowHeader ([in] long row,[out, retval] IAccessible2 **accessible) AtkObject* atk_table_get_row_header (AtkTable *table, gint row); Gets the row header of a specified row in an accessible table. void atk_table_set_row_header (AtkTable *table, gint row, AtkObject *header); IA2: No equivalent. summary ([out, retval] IAccessible2 **accessible) AtkObject* atk_table_get_summary (AtkTable *table); Gets the summary description of the table. Not implemented in SODC. void atk_table_set_summary (AtkTable *table, AtkObject *accessible); IA2: No equivalent. isColumnSelected ([in] long column,[out, retval] boolean *isSelected) gboolean atk_table_is_column_selected (AtkTable *table, gint column); Gets a boolean value indicating whether the specified column is selected isRowSelected ([in] long row,[out, retval] boolean *isSelected) gboolean atk_table_is_row_selected (AtkTable *table, gint row); Gets a boolean value indicating whether the specified row is selected isSelected ([in] long row,[in] long column,[out, retval] boolean *isSelected) gboolean atk_table_is_selected (AtkTable *table, gint row, gint column); IA2: determine if table cell is selected selectRow ([in] long row,[out, retval] ) gboolean atk_table_add_row_selection (AtkTable *table, gint row); Adds the specified row to the selection. May not be implemented in SODC. selectColumn ([in] long column,[out, retval] ) gboolean atk_table_add_column_selection (AtkTable *table, gint column); Adds the specified column to the selection. May not be implemented in SODC. unselectRow ([in] long row,[out, retval] ) gboolean atk_table_remove_row_selection (AtkTable *table, gint row); Removes the specified row from the selection. May not be implemented in SODC. unselectColumn ([in] long column,[out, retval] ) gboolean atk_table_remove_column_selection (AtkTable *table, gint column); Removes the specified column to the selection. May not be implemented in SODC. IAccessibleText From AtkText addSelection ([in] long startOffset,[in] long endOffset,[out, retval] boolean *success) gboolean atk_text_add_selection (AtkText *text, gint start_offset, gint end_offset); ATK: Adds a selection bounded by the specified offsets. attributes ([in] long offset,[out] long *startOffset,[out] long *endOffset,[out, retval] BSTR *textAttributes) AtkAttributeSet* atk_text_get_run_attributes (AtkText *text, gint offset, gint *start_offset, gint *end_offset); IA2: Get text attributes returned in a string of name value pairs. AtkAttributeSet* atk_text_get_default_attributes (AtkText *text); IA2: No equivalent. void atk_attribute_set_free (AtkAttributeSet *attrib_set); IA2: No equivalent. AtkTextAttribute atk_text_attribute_register (const gchar *name); IA2: No equivalent. const gchar* atk_text_attribute_get_name (AtkTextAttribute attr); IA2: No equivalent. AtkTextAttribute atk_text_attribute_for_name (const gchar *name); IA2: No equivalent. const gchar* atk_text_attribute_get_value (AtkTextAttribute attr, gint index_); IA2: No equivalent. caretOffset ([out, retval] long *offset) gint atk_text_get_caret_offset (AtkText *text); ATK: Gets the offset position of the caret (cursor). characterExtents ([in] long offset,[in] long coordType,[out] long *x,[out] long *y,[out] long *width,[out] long *height) void atk_text_get_character_extents (AtkText *text, gint offset, gint *x, gint *y, gint *width, gint *height, AtkCoordType coords); IA2: get bounding rect containing the glyph(s) representing the character at the specified text offset nSelections ([out, retval] long *nSelections) gint atk_text_get_n_selections (AtkText *text); IA2:get number of active non-contiguous selections offsetAtPoint ([in] long x,[in] long y,[in] long coordType,[out, retval] long *offset) gint atk_text_get_offset_at_point (AtkText *text, gint x, gint y, AtkCoordType coords); IA2: get bounding rect for the glyph at a certain point selection ([in] long selection,[out] long *startOffset,[out] long *endOffset) gchar* atk_text_get_selection (AtkText *text, gint selection_num, gint *start_offset, gint *end_offset); IA2: get character offsets of N-th active text selection. This gets the offset rather than the text (ATK), so it's different than ATK. AT-SPI doesn't return a string, only the offsets so they are the same for the AT. text ([in] long startOffset,[in] long endOffset,[out, retval] BSTR *text) gchar* atk_text_get_text (AtkText *text, gint start_offset, gint end_offset); IA2: Return the specified text range.Returns the substring between the two given indices. AtkTextRange** atk_text_get_bounded_ranges (AtkText *text, AtkTextRectangle *rect, AtkCoordType coord_type, AtkTextClipType x_clip_type, AtkTextClipType y_clip_type); IA2: No equivalent. void atk_text_get_range_extents (AtkText *text, gint start_offset, gint end_offset, AtkCoordType coord_type, AtkTextRectangle *rect); IA2: No equivalent. void atk_text_free_ranges (AtkTextRange **ranges); IA2: No equivalent. textBeforeOffset ([in] long offset,[in] long boundaryType,[out] long *startOffset,[out] long *endOffset,[out, retval] BSTR *text) gchar* atk_text_get_text_before_offset (AtkText *text, gint offset, AtkTextBoundary boundary_type, gint *start_offset, gint *end_offset); IA2: Gets specified amount of text based on boundary type (character, to cursor position, word, sentence, paragraph, start/end paragraph, line). - some different boundary types than ATK. textAfterOffset ([in] long offset,[in] long boundaryType,[out] long *startOffset,[out] long *endOffset,[out, retval] BSTR *text) gchar* atk_text_get_text_after_offset (AtkText *text, gint offset, AtkTextBoundary boundary_type, gint *start_offset, gint *end_offset); ATK: Gets the specified text based on boundary type (character or word/sentence/line start/end.) textAtOffset ([in] long offset,[in] long boundaryType,[out] long *startOffset,[out] long *endOffset,[out, retval] BSTR *text) gchar* atk_text_get_text_at_offset (AtkText *text, gint offset, AtkTextBoundary boundary_type, gint *start_offset, gint *end_offset); IA2: get a specified amount of text that spans the specified offset. For getting a character, use get_textAtOffset CHAR boundary. removeSelection ([in] long selectionIndex,[out, retval] boolean *success) gboolean atk_text_remove_selection (AtkText *text, gint selection_num); setCaretOffset ([in] long offset,[out, retval] boolean *success) gboolean atk_text_set_caret_offset (AtkText *text, gint offset); ATK: Sets the caret (cursor) position to the specified offset. setSelection ([in] long selectionIndex,[in] long startOffset,[in] long endOffset,[out, retval] boolean *success) gboolean atk_text_set_selection (AtkText *text, gint selection_num, gint start_offset, gint end_offset); ATK: Changes the start and end offset of the specified selection. nCharacters ([out, retval] long *nCharacters) gint atk_text_get_character_count (AtkText *text); IA2 and ATK: Get number of characters. scrollToSubstring ([in] long startIndex,[in] long endIndex) IA2: make specific part of string visible on screen IAccessibleHypertext From AtkHypertext nHyperlinks ([out, retval] long *hyperlinkCount) gint atk_hypertext_get_n_links (AtkHypertext *hypertext); IA2: Returns the number of links and link groups contained within this hypertext document. Is the link group concept unique to SODC, or is it also in ATK but not stated explicitly? Link groups might be referring to the groups of links in image maps. hyperlink ([in] long index,[out, retval] IAccessibleHyperlink **hyperlink) AtkHyperlink* atk_hypertext_get_link (AtkHypertext *hypertext, gint link_index); IA2: Return the specified link. hyperlinkIndex ([in] long charIndex,[out, retval] long *hyperlinkIndex) gint atk_hypertext_get_link_index (AtkHypertext *hypertext, gint char_index); IA2: Returns the index of the hyperlink that is associated with this character index. IAccessibleValue From AtkValue currentValue ([out, retval] VARIANT *currentValue) void atk_value_get_current_value (AtkValue *obj, GValue *value); Gets the value of this object. See comments under IAccessible:get_accValue. setCurrentValue ([in] VARIANT value,[out, retval] boolean *success) gboolean atk_value_set_current_value (AtkValue *obj, const GValue *value); IA2: Similar toIAccessible::put_accValue maximumValue ([out, retval] VARIANT *maximumValue) void atk_value_get_maximum_value (AtkValue *obj, GValue *value); minimumValue ([out, retval] VARIANT *mininumValue) void atk_value_get_minimum_value (AtkValue *obj, GValue *value);
ATK: Determines the number of relations in a RelationSet.
AtkRelation* atk_relation_set_get_relation_by_type (AtkRelationSet *set, AtkRelationType relationship);
gboolean atk_relation_set_contains (AtkRelationSet *set, AtkRelationType relationship);
See also: atk_relation_type_register,
atk_relation_set_add_relation_by_type,
atk_relation_set_remove, [[BR]]atk_relation_set_add[[BR]]
ATK: Determines the relation at the specified position in the relation set. Or you can find out if a relation for the object matches a specified type.
See also:atk_object_add_relationship and atk_object_remove_relationship
ATK: Gets the AtkRelationSet associated with the object.
ATK: No ATK equivalent.
ATK: No ATK equivalent.
AccessibleState **state,[out, retval] long *nStates)
Rename IAccessible2::states method, which returns an array of integers, to IAccessible2::localizedStateNames and have it return an array of localized BSTRs
Add a replacement IAccessible2::states which will return a long (a bit strip of 32 state bits). There are 18 new IA2 states.
ATK: Gets a reference to the state set of the accessible; the caller must unreference it when it is no longer needed.
ATK: No equivalent.
ATK: Register a new object state.
ATK: Gets the description string describing the AtkStateType type.
ATK: Gets the description string describing the AtkStateType type
ATK: Checks whether the state set is empty, i.e. has no states set.
ATK: Add a new state for the specified type to the current state set if it is not already present.
ATK: Add the states for the specified types to the current state set.
ATK: Removes all states from the state set.
ATK: Checks whether the state for the specified type is in the specified set.
ATK: Checks whether the states for all the specified types are in the specified set.
ATK: Removes the state for the specified type from the state set.
ATK: Constructs the intersection of the two sets, returning NULL if the intersection is empty.
ATK: Constructs the union of the two sets.
ATK: Constructs the exclusive-or of the two sets, returning NULL is empty. The set returned by this operation contains the states in exactly one of the two sets.
Add: roleName and localizedRoleName
See:[[BR]]AtkRole atk_role_register (const gchar *name);
atk_role_get_localized_name,
ATK: Registers the role specified by name, a character string describing the new role.
ATK: No equivalent.
ATK: Not needed.
ATK: No equivalent
ATK: No ATK equivalent.
Proposed:[[BR]]void atk_object_set_attribute( AtkObject *accessible, const gchar *name, const gchar *value);
ATK: Gets the number of accessible actions available on the object. If there are more than one, the first one is considered the "default" action of the object.
See also: atk_action_set_description
ATK: Returns the item associated with this hyperlinks nth anchor. For instance, the returned AtkObject will implement AtkText if link_ is a text hyperlink, AtkImage if link_ is an image hyperlink etc. Multiple anchors are primarily used by client-side image maps.
ATK: Get a the URI associated with the anchor specified by i of link_. Multiple anchors are primarily used by client-side image maps.
ATK: Gets the index with the hypertext document at which this link begins.
ATK: Gets the index with the hypertext document at which this link ends.
ATK: Since the document that a link is associated with may have changed this method returns TRUE if the link is still valid (with respect to the document it references) and FALSE otherwise.
ATK: Indicates whether the link currently displays some or all of its content inline. Ordinary HTML links will usually return FALSE, but an inline <src> HTML element will return TRUE. a * Not being passed through to AT-SPI.
ATK: Gets the number of anchors associated with this hyperlink.
ATK: Determines whether this AtkHyperlink is selected Not being passed through to AT-SPI. Or should we just deprecate and just check the FOCUS state?
ATK: Checks whether the specified point is within the extent of the component.
ATK: Gets a reference to the accessible child, if one exists, at the coordinate point specified by x and y.
See also: atk_component_set_position
ATK: Gets the position of component in the form of a point specifying components top-left corner. How is this different from atk_image_get_image_position?
ATK: No equivalent.
ATK: No equivalent.
ATK: No direct equivalent.
ATK: No equivalent.
Note: In Java if you use get desc if desc is not there then tool tip text is used.
SODC has two hover texts. First short hover text appears and then longer hover text. The short hover text is found in MSAA name and the long hover text is found in MSAA description.
ATK: No equivalent.
ATK: Copy text from start_pos up to, but not including end_pos to the clipboard.
ATK: Delete text start_pos up to, but not including end_pos.
ATK: Insert text at a given position.
ATK: Copy text from start_pos up to, but not including end_pos to the clipboard and then delete from the widget.
ATK: Delete text start_pos up to, but not including end_pos.
ATK: No equivalent.
ATK: Sets the attributes for a specified range.
See also: atk_image_set_image_description
ATK: Get a textual description of this image.
ATK: Get the width and height in pixels for the specified image. The values of width and height are returned as -1 if the values cannot be obtained.
ATK: Get the width and height in pixels for the specified image. The values of width and height are returned as -1 if the values cannot be obtained.
atk_relation_get_relation_type (AtkRelation *relation);
gboolean atk_relation_set_contains (AtkRelationSet *set, AtkRelationType relationship);
See also: atk_relation_type_register,
atk_relation_type_for_name,
atk_relation_new
ATK: When registering a relation type, associate name with a new AtkRelationType
See also: atk_relation_add_target
ATK: No true ATK call to get multiple targets.
ATK: Adds the specified accessible child of the object to the object's selection.
ATK: Determines if the current child of this object is selected
ATK: Causes every child of the object to be selected if the object supports multiple selections.
ATK: Gets the number of accessible children currently selected.
ATK: Gets a reference to the accessible object representing the specified selected child of the object.
ATK: Removes the specified child of the object from the object's selection.
ATK: Get a reference to the table cell at row, column.
ATK: Gets a gint representing the index at the specified row and column.
ATK: Gets a gint representing the column at the specified index_.
ATK: Gets a gint representing the row at the specified index_.
ATK: Sets the caption for the table.
ATK: Sets the description text for the specified column of the table.
ATK: Gets the number of columns occupied by the accessible object at the specified row and column in the table.
ATK: Sets the specified column header to header.
ATK: Gets the number of columns in the table.
ATK: Gets the number of rows in the table.
IA2: Has two calls for 1 ATK call. See also IAccessibleTable::selectedColumns.
IA2: Has two calls for 1 ATK call. See also IAccessibleTable::selectedRows.
ATK: Set row description.
ATK: Gets the number of rows occupied by the accessible object at a specified row and column in the table.
ATK: Sets the specified row header to header.
ATK: Sets the summary description of the table.
ATK: Gets a boolean value indicating whether the accessible object at the specified row and column is selected
ATK: Creates an AtkAttributeSet which consists of the attributes explicitly set at the position offset in the text. start_offset and end_offset are set to the start and end of the range around offset where the attributes are invariant.
ATK: Creates an AtkAttributeSet which consists of the default values of attributes for the text. See the enum AtkTextAttribute for types of text attributes that can be returned. Note that other attributes may also be returned.
ATK: Frees the memory used by an AtkAttributeSet, including all its AtkAttributes.
ATK: Associate name with a new AtkTextAttribute
ATK: Gets the name corresponding to the AtkTextAttribute
ATK: Get the AtkTextAttribute type corresponding to a text attribute name.
ATK: Gets the value for the index of the AtkTextAttribute
ATK: Get the bounding box containing the glyph representing the character at a particular text offset.
ATK: Gets the number of selected regions.
ATK: Gets the offset of the character located at coordinates x and y. x and y are interpreted as being relative to the screen or this widget's window depending on coords.
ATK: Gets the text from the specified selection.
ATK: Gets the specified text.
ATK: Get the ranges of text in the specified bounding box.
ATK: Get the bounding box for text within the specified range.
ATK: Frees the memory associated with an array of AtkTextRange. It is assumed that the array was returned by the function atk_text_get_bounded_ranges and is NULL terminated.
ATK: Gets the specified text based on boundary type (character or word/sentence/line start/end.)
gunichar atk_text_get_character_at_offset (AtkText *text, gint offset);
ATK: Gets the specified text based on boundary type. There's also a separate method for getting a character at offset.
ATK: No equivalent. Do we need this?
ATK: Gets the number of links within this hypertext document.
ATK: Gets the link in this hypertext document at index link_index
ATK: Gets the index into the array of hyperlinks that is associated with the character specified by char_index.