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
(ROLE_SYSTEM_ *)

IAccessible2 Role
(IA2_ROLE_*)

CLOSEST ATK Role(s)
(ATK_ROLE_*)

Also implement these ATK Interfaces

Potential ATK states in addition to general states (ATK_STATE_*)

Description

ALERT

ALERT

AtkObject,
AtkComponent,
AtkRelation,
AtkRelationSet,
AtkStateSet

ACTIVE,
ICONIFIED,
MODAL,
RESIZABLE

An error, warning, or informational message

ANIMATION

ANIMATION

AtkObject,
AtkComponent,
AtkImage

ANIMATED

A dynamic or moving image that changes over time.

APPLICATION

APPLICATION

AtkObject,
AtkComponent,
AtkRelation,
AtkRelationSet,
AtkStateSet

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,
AtkComponent,
AtkAction,
AtkImage
(if button is an image),
AtkText (AtkAttributeSet),
AtkStateSet,
AtkSelection

ACTIVE,
ARMED,
EXPANDED,
EXPANDABLE,
COLLAPSED,
MANAGES_DESCENDANTS,
MULTISELECTABLE,
PRESSED,
REQUIRED

Button that drops down a list of items

BUTTONDROPDOWNGRID

add custom role

AtkObject,
AtkComponent,
AtkAction,
AtkImage
(if button is an image),
AtkText (AtkAttributeSet),
AtkStateSet,
AtkSelection,
AtkTable (if row/column headers)

ACTIVE,
ARMED,
EXPANDED,
EXPANDABLE,
COLLAPSED,
MANAGES_DESCENDANTS,
MULTISELECTABLE,
PRESSED,
REQUIRED

Button that drops down a grid

BUTTONMENU

add custom role

AtkObject,
AtkComponent,
AtkAction,
AtkImage
(if button is an image),
AtkText (AtkAttributeSet),
AtkStateSet,
AtkSelection

ACTIVE,
ARMED,
EXPANDED,
EXPANDABLE,
MANAGES_DESCENDANTS,
PRESSED

Button that drops down a menu

CARET

don't use

System caret

CELL

TABLE_CELL

AtkObject,
AtkText (if it contains text),
AtkImage (if it contains an image),
AtkComponent (if it contains an image)

SINGLE_LINE,
MULTI_LINE
TRANSIENT,
SELECTABLE,
SELECTED,
STALE,
EDITABLE,
INVALID_ENTRY,
SELECTABLE_TEXT,
REQUIRED,
SUPPORTS_TYPEAHEAD,
TRUNCATED

Cell in a table

CHARACTER

don't use

Paperclip character.

CHART

CHART (proposed)?

AtkObject,
AtkComponent,
AtkImage

Graphical depiction of quantitative data

CHECKBUTTON

CHECK_MENU_ITEM,
TOGGLE_BUTTON

CHECK_BOX,
CHECK_MENU_ITEM,
TOGGLE_BUTTON

AtkObject,
AtkAction,
AtkStateSet.
AtkSelection (if in a menu item),
AtkRelation and AtkRelationSet (if text label not part of widget)

ACTIVE,
ARMED,
CHECKED,
SELECTABLE,
SELECTED,
INDETERMINATE,,
EXPANDABLE.
INVALID

Choice that can be checked or unchecked. CHECK_BOX is most like CHECKBUTTON.
A checkbox and check menu item have a separate indicator for the state.
A toggle button is a specialized push button that does not have a separate indicator for the state.

CLOCK

add custom role

For digital clock, see SPINBUTTON.
For analog clock, see DIAL?

Clock object.

COLUMN

don't use

Column of table cells.

COLUMNHEADER

TABLE_COLUMN_HEADER,
COLUMN_HEADER

AtkObject,
AtkTable

Header which labels a column of data, or more specifically a column of data in a table.

COMBOBOX

COMBO_BOX

AtkObject,
AtkAction,
AtkSelection,
AtkEditableText (if you can type text as well as select item),
AtkText (AtkAttributeSet),
AtkRelation (to associate a text label with the control),
AtkRelationSet,
AtkStateSet

ACTIVE,
EXPANDED,
EXPANDABLE,
COLLAPSED,
MANAGES_DESCENDANTS,
MULTISELECTABLE,
INVALID_ENTRY,
EDITABLE,
SELECTABLE_TEXT,
REQUIRED,
SUPPORTS_TYPEAHEAD

Edit control with a drop-down list of selections

CURSOR

don't use

Mouse pointer.

DIAGRAM

IMAGE,
DRAWING_AREA,
or add custom role

AtkObject,
AtkComponent,
AtkImage

Image is a generic graphic.
Diagram is a specific type of a drawn graphic.
Drawing area is used for creating custom user interface elements.
Need to address this whole type of role later.

DIAL

DIAL

AtkObject,
AtkValue,
AtkStateSet,
AtkAction

Control with value changes using a rotating visual indicator

DIALOG

COLOR_CHOOSER,
FILE_CHOOSER,
FONT_CHOOSER

DIALOG,
COLOR_CHOOSER,
FILE_CHOOSER,
FONT_CHOOSER

AtkObject,
AtkComponent,
AtkRelation,
AtkRelationSet,
AtkStateSet

ACTIVE,
ICONIFIED,
MODAL,
RESIZABLE

Top level window with a title bar and border.
A file chooser is a specialized dialog that displays files in a directory and allows file selection, directory browsing, and filename specification.
A color chooser is a specialized dialog for choosing a color.

DOCUMENT

TEXT_FRAME

HTML_CONTAINER or
DOCUMENT_FRAME

AtkObject,
AtkComponent and AtkImages for embedded images,
AtkRelation and AtkRelationSet for relationships between text and embedded objects,
AtkStateSet,
AtkDocument,
AtkText (AtkAttributeSet),
AtkHypertext and AtkHyperlink for interactive elements plus non-link images,
AtkAction for interactive elements,
AtkTable for all data tables,
AtkSelection for embedded objects with children

EDITABLE,
MULTI_LINE,
SELECTABLE_TEXT,
BUSY

For MSAA, a document is a window that corresponds to MDI document.
An HTML container or document frame is an HTML document or a frame containing a view of document content.

DROPLIST

add custom role or
COMBO_BOX

AtkObject,
AtkAction,
AtkSelection,
AtkRelation (to associate a text label with the control),
AtkRelationSet,
AtkStateSet

ACTIVE,
EXPANDED,
EXPANDABLE,
COLLAPSED,
MANAGES_DESCENDANTS,
MULTISELECTABLE,
REQUIRED

Drop down list but not a combo box

EQUATION

add custom role

AtkObject,
AtkText (AtkAttributeSet)

Math and chemistry equations

GRAPHIC

DESKTOP_ICON,
SHAPE,
ICON

IMAGE,
DESKTOP_ICON,
ICON

AtkObject,
AtkComponent,
AtkImage

Desktop icon is an inconifed internal frame within a DESKTOP_PANE
Icon is small fixed size picture, typically used to decorate components
Graphic is an image.
Shape is an object with graphical representation used to represent content on draw pages.

GRIP

AtkObject,
AtkImage

An object that can be moved to resize a pane

GROUPING


PANEL,
PAGE (proposed),
SECTION (proposed)

AtkObject,
AtkRelation,
AtkRelationSet

VERTICAL,
HORIZONTAL

Container used to group objects, like a group box or a FIELDSET in HTML.
A page is defined for documents.
A section is a generic container of content within a document, such as a navigation bar, table of contents, main content section, content between headings, etc.

HELPBALLOON

don't use

AtkObject,
AtkImage

Help icon to click on to get tooltip help

HOTKEYFIELD

add custom role

AtkObject,
AtkAction,
AtkSelection (if you can select from a drop-down list),
AtkEditableText (if you can type text as well as select item),
AtkText (AtkAttributeSet),
AtkRelation (to associate a text label with the control),
AtkRelationSet,
AtkStateSet

ACTIVE,
EDITABLE,
MULTI_LINE,
SINGLE_LINE,
MULTISELECTABLE,
INVALID_ENTRY,
SELECTABLE_TEXT,
REQUIRED,
SUPPORTS_TYPEAHEAD

Editable field for assigning keys

INDICATOR

ARROW or
add custom role

AtkObject,
AtkImage

An indicator is a graphic, like an arrow, used to indicate something.
Arrow is a 2D directional indicator.

LINK

LINK

AtkObject,
AtkHyperlink,
AtkHypertext,
AtkImage and AtkComponent (if an image),
AtkAction
AtkText (to expose text attributes like visited)

Hypertext link in a document that can be an image or text

LIST

LIST

AtkObject,
AtkAction,
AtkSelection,
AtkRelation (to associate a text label with the control),
AtkRelationSet,
AtkStateSet

ACTIVE,
MANAGES_DESCENDANTS,
MULTISELECTABLE,
REQUIRED

List of objects that allows one or more selections.
A font chooser allows selection of a display font.

LISTITEM

LISTITEM

AtkObject,
AtkText (AtkAttributeSet)

SELECTABLE,
SELECTED

Element in a selectable list

MENUBAR

MENU_BAR

AtkObject,
AtkSelection

ACTIVE,
MANAGES_DESCENDANTS

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


RADIO_MENU_ITEM
CHECK_MENU_ITEM

MENU_ITEM,
RADIO_MENU_ITEM,
CHECK_MENU_ITEM,
MENU

AtkObject,
AtkAction,
AtkStateSet,
AtkRelationSet (if radio menu item)

SELECTABLE,
SELECTED

Element in a menu that presents a selectable action.
A radio menu item is both a radio button and a menu item.
A check menu item is both a check box and a menu item.
A menu item with a submenu has a role of ATK_ROLE_MENU in ATK. A menu is a list of actions from which the user can choose.

MENUPOPUP

POPUP_MENU,
TEAROFF_MENU_ITEM?

AtkObject,
AtkAction,
AtkComponent,
AtkSelection

ACTIVE,
MANAGES_DESCENDANTS


A pop-up menu is a temporary window that offers the user a list of choices, then hides itself once the user selects one of those choices.
A tearoff menu item is a is a menu that can be removed from the menubar and shown in its own window.

OUTLINE

TREE,
TREE_TABLE

AtkObject,
AtkComponent,
AtkTable,
AtkSelection,
AtkRegistry,
AtkObjectFactory,
AtkRelationSet,
AtkRelation,
AtkStateSet,
AtkAction

ACTIVE, MANAGES_DESCENDANTS,
EXPANDED,
COLLAPSED,
EXPANDABLE,
MULTISELECTABLE

A tree or an outline is an object used to present hierarchical information to the user, usually with expandable/collapsable elements.
A tree table presents both tabular and hierarchical information to the user.

OUTLINEITEM

use custom role

AtkObject,
AtkText (AtkAttributeSet)

SELECTABLE,
SELECTED

A tree item.

PAGETAB

PAGE_TAB

AtkObject,
AtkText (AtkAttributeSet),
AtkRelationSet,
AtkRelation

SELECTABLE,
SELECTED

A tab that usually contains a label or title for a page or panel of a notebook container.

PAGETABLIST

PAGE_TAB_LIST

AtkObject,
AtkSelection,
AtkAction

ACTIVE,
SELECTABLE,
SELECTED

A tabbed notebook container, or a series of panels presented as tabbed pages.

PANE

GLASS_PANE,
LAYERED_PANE,
OPTION_PANE,
SCROLL_PANE,
DIRECTORY_PANE,
ROOT_PANE,
SPLIT_PANE,
VIEWPORT

GLASS_PANE,
LAYERED_PANE,
OPTION_PANE,
SCROLL_PANE,
DIRECTORY_PANE,
ROOT_PANE,
SPLIT_PANE,
VIEWPORT

AtkObject

ACTIVE,
RESIZABLE

A pane in the current window.
A glass pane is painted on top of all panes beneath it.
A layered pane allows its children to be drawn in layers based on a stacking order. An option pane is a pane inside of a dialog.
A scroll pane contains scroll bars.
A directory pane contains selections (icons, lists, trees) for the content of a directory.
A root pane has a glass pane and a layered pane as its children.
A split pane is a panel that presents two other panels at the same time.
A viewport is a container of content, usually used in a scroll pane, that represents a clipped version of that pane that is onscreen (visible).

PROGRESSBAR

PROGRESS_BAR

AtkObject,
AtkValue

BUSY,
VERTICAL,
HORIZONTAL

Object that shows the percentage of a task that has completed.

PROPERTYPAGE

PAGE_TAB_LIST or
add custom role?

AtkObject,
AtkComponent,
AtkRelation,
AtkRelationSet,
AtkStateSet

ACTIVE,
RESIZABLE

Page showing properties of something.
An object that presents a series of panels (or page tabs), one at a time, through some mechanism provided by the object

PUSHBUTTON

PUSH_BUTTON

AtkObject,
AtkComponent,
AtkAction,
AtkImage
(if an image),
AtkText (AtkAttributeSet),
AtkStateSet

ACTIVE,
ARMED,
PRESSED

A push button tells the application to do something when it is activated.

RADIOBUTTON

RADIO_MENU_ITEM

RADIO_BUTTON,
RADIO_MENU_ITEM

AtkObject,
AtkRelationSet,
AtkRelation,
AtkAction

ACTIVE,
ARMED,
CHECKED

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.
A radio menu item is both a radio button and a menu item.

ROW

don't use

AtkObject,
AtkTable

Row in a table.

ROWHEADER

ROW_HEADER,
TABLE_ROW_HEADER

AtkObject,
AtkTable

Header which labels a row of data, or more specifically a row of data in a table.

SCROLLBAR

SCROLL_BAR

AtkObject,
AtkValue

BUSY,
VERTICAL,
HORIZONTAL

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

AtkObject,
AtkStateSet

VERTICAL,
HORIZONTAL

Object that provides a visual separation of contents in a menu or between 2 areas/panes.

SLIDER

SLIDER

AtkObject,
AtkValue,
AtkStateSet,
AtkAction

BUSY,
VERTICAL,
HORIZONTAL

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
add custom control?

AtkObject,
AtkComponent,
AtkImage

System sound object.

SPINBUTTON

SPIN_BUTTON

AtkObject,
AtkValue,
AtkRelation,
AtkRelationSet,
AtkAction

REQUIRED

Object that allows the user to select a value from a set of choices.

STATICTEXT

LABEL

LABEL,
ACCELERATOR_LABEL

AtkObject,
AtkText (AtkAttributeSet),
AtkRelation,
AtkRelationSet,
AtkStateSet,
AtkAction (keybindings)

MULTI_LINE,
SINGLE_LINE

A label presents text that provides a short name or description associated with another object, like a text entry field.
An accelerator label indicates the keyboard accelerators for its parent, like a menu item.

STATUSBAR

STATUS_BAR

AtkObject,
AtkText (AtkAttributeSet)

Display non-quantitative status information, in contrast to a progress bar which displays quantitative status.

TABLE

TABLE,
CALENDAR,
TREE_TABLE

AtkObject,
AtkComponent,
AtkTable,
AtkSelection,
AtkRegistry,
AtkObjectFactory,
AtkRelationSet,
AtkRelation,
AtkStateSet

ACTIVE,
MANAGES_DESCENDANTS,
EXPANDABLE,
EXPANDED,
COLLAPSED

Presents information in terms of rows and columns.
A calendar contains one or more dates, usually arranged in a tabular format, but not always.
A tree table presents information in both a tabular and hierarchical format.

TEXT

DATE_EDITOR,
PARAGRAPH,
HEADING,
HEADER,
FOOTER,
CAPTION

TEXT,
DATE_EDITOR,
PASSWORD_TEXT,
AUTOCOMPLETE,
<Should deprecate due to new state>
ENTRY,
PARAGRAPH,
HEADING,
HEADER,
FOOTER,
CAPTION

AtkObject,
AtkText (AtkAttributeSet),
AtkRelation,
AtkRelationSet,
AtkStateSet,
AtkEditableText (if editable),
AtkAction

MULTI_LINE,
SINGLE_LINE,
EDITABLE,
INVALID_ENTRY,
SELECTABLE_TEXT,
REQUIRED,
SUPPORTS_AUTOCOMPLETION

Text information in general.
A date editor allows entry of a date.
A password text entry object shows nothing or an alternative character, like an asterisk, when the password text is typed.
Autocomplete is a dialog or list containing items for insertion into an entry widget, such as a list of words or characters for completion of a text entry.
Entry is a text entry field which may be editable or read-only depending on the STATE_EDITABLE attribute.
A paragraph is a paragraph of text in a document.
A heading is the title for a section in a document.
A header is a section at the top of a document, or the top of each page in a document.
A footer is a section at the bottom of a document, or the bottom of each page of a document.
A caption is descriptive information, usually textual, about another user interface element such as a table, chart, or image.

TITLEBAR

add custom role

AtkObject,
AtkText (AtkAttributeSet),
AtkRelation,
AtkRelationSet,
AtkStateSet

Title or caption of a window or dialog.

TOOLBAR

TOOL_BAR

AtkObject,
AtkSelection

A bar or palette usually comprised of push buttons or toggle buttons.

TOOLTIP

TOOL_TIP

AtkObject,
AtkText (AtkAttributeSet)t,
AtkRelation,
AtkRelationSet

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

AtkObject,
AtkText (AtkAttributeSet)

VERTICAL,
HORIZONTAL

Object that takes up space in a user interface.

WINDOW

FRAME,
INTERNAL_FRAME,
DESKTOP_PANE

WINDOW,
FRAME,
INTERNAL_FRAME,
DESKTOP_FRAME

AtkObject,
AtkComponent,
AtkRelation,
AtkRelationSet,
AtkStateSet

ACTIVE,
ICONIFIED,
RESIZABLE

A top level window with no title or border.
A frame is a top level window with a title bar, border, menubar, etc.
An internal frame is a frame clipped by a desktop frame.
A desktop frame is a pane that supports internal frames and icons for those internal frames.

RULER

RULER

AtkObject,
AtkImage,
AtkComponent,
AtkValue

Object that describes margins and tab stops.

EMBEDDED_OBJECT

EMBEDDED

AtkObject

Object that is an embedded component container in a document.

EDITBAR

EDITBAR

AtkObject,
AtkText (AtkAttributeSet),
AtkRelation,
AtkRelationSet,
AtkStateSet,
AtkEditableText,
AtkAction

MULTI_LINE,
SINGLE_LINE,
EDITABLE,
INVALID_ENTRY,
SUPPORTS_AUTOCOMPLETION

Object that is an editable text object in a toolbar.

CLIENT

CANVAS

AtkObject,
AtkComponent,
AtkRelation,
AtkRelationSet,
AtkStateSet,
AtkSelection

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
(STATE_SYSTEM_ *)

IAccessible2 States
(IA2_State_*)

CLOSEST ATK State(s)
(ATK_STATE_*)

Description

ANIMATED

ANIMATED (proposed) or
add custom state

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,
COLLAPSED

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)
<Or add as a state or relation enumeration, or an attribute>

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.
Use ATK_ROLE_MENU to indicate a menu item has a submenu.

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
add custom state

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
add a custom state?
VISITED (Proposed)

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
(EVENT_OBJECT_ *)

IAccessible2 Events
(IA2_EVENT_*)

CLOSEST ATK Object Event(s)
or Signals and the ATK Interface

Description

CREATE,
DESTROY

Window events:
create, close

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.
ATK:The visible data of this object has changed. The character offset of the text caret (visible or notional) within this object has changed. Events of this type may also be generated when an onscreen text caret appears or disappears.

HIDE

An object is hidden. The system sends this event for the following user interface elements: caret and cursor.
ATK: The character offset of the text caret (visible or notional) within this object has changed. Events of this type may also be generated when an onscreen text caret appears or disappears.

REORDER

children_changed_add
children_changed_remove
invalidate_all_children
page_change

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.
ATK: The number or identity of an object's children has changed.

FOCUS

See: ACTIVE_DESCENDANT_CHANGED

focus-event (AtkObject)
See: active-descendant-changed (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.
ATK: An instance of Selection has undergone a change in the 'selected-ness' of its children, i.e. had a selection added, removed, and/or modified. Usually accompanied by corresponding "object:state-changed:selected" events from the corresponding children, unless the children are previously un-queried via AT-SPI and the Selection instance has STATE_MANAGES_DESCENDANTS.

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,
SELECTIONREMOVE,
SELECTIONWITHIN

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.
ATK: An instance of Selection has undergone a change in the 'selected-ness' of its children, i.e. had a selection added, removed, and/or modified. Usually accompanied by corresponding "object:state-changed:selected" events from the corresponding children, unless the children are previously un-queried via AT-SPI and the Selection instance has STATE_MANAGES_DESCENDANTS.

STATECHANGE

Also:[[BR]] EVENT_SYSTEM_MENUPOPUPSTART
EVENT_SYSTEM_MENUPOPUPEND


state-changed * (AtkObject)
AtkObject::atk_object_notify_state_change

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.
ATK: The object's StateSet has had a state added or removed. (Any states.)

LOCATIONCHANGE

TEXT_CARET_MOVED
or just is a location change

bounds-changed (AtkComponent)
text-bounds-changed (proposed - AtkText)
text-caret-moved (AtkText)

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.
ATK: The 'bounds-changed" signal is emitted when the bposition or size of the a component changes.
The character bounds of a text object have changed, for instance in response to a reformatting or reflow operation.
The character offset of the text caret (visible or notional) within this object has changed. Events of this type may also be generated when an onscreen text caret appears or disappears.

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.
ATK: A base (strongly-typed) object attribute has changed, for instance "object:property-change:accessible-name". Notifed property subtypes include accessible-name, accessible-description, and accessible-parent.

DESCRIPTIONCHANGE

property-change::accessible-description (AtkObject)

An object's description property has changed.
ATK: A base (strongly-typed) object attribute has changed, for instance "object:property-change:accessible-name". Notifed property subtypes include accessible-name, accessible-description, and accessible-parent.

VALUECHANGE

value-changed (proposed - AtkObject?)
property-change::accessible-value (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.
ATK: The value of this object has changed.

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.
ATK: A base (strongly-typed) object attribute has changed, for instance "object:property-change:accessible-name". Notifed property subtypes include accessible-name, accessible-description, and accessible-parent.

TABLE_CAPTION_CHANGED
TABLE_COLUMN_DESCRIPTION_CHANGED
TABLE_COLUMN_HEADER_CHANGED
TABLE_ROW_DESCRIPTION_CHANGED
TABLE_ROW_HEADER_CHANGED
TABLE_SUMMARY_CHANGED

Other property-change:: signals in AtkObject:
accessible-component-layer
accessible-component-mdi-zorder
accessible-hypertext-nlinks
accessible-role
accessible-table-caption-object
accessible-table-column-description
accessible-table-column-header
accessible-table-row-description
accessible-table-row-header
accessible-table-summary

Other property-change:: signals in AtkHyperlink:
end-index
number-of-anchors
selected-link
start-index

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
object:row-inserted
object:row-reordered
object:column-deleted
object:column-inserted
object:column-reordered

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:
minimize, maximize, restore, activate, deactivate, move, size

Relations

The table below shows which ATK relations correspond to IAccessible2 relations.

IAccessible2 Relations
(IA2_Relation_*)

CLOSEST ATK Relation(s)
(ATK_RELATION_*)

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

'''CreateStdAccessibleObject'''

AtkObject* atk_object_factory_create_accessible (AtkObjectFactory *factory, GObject *obj);
void atk_object_initialize (AtkObject *accessible, gpointer data);

MSAA: Creates an accessible object with the methods and properties for the specified type of system-provided user interface element.
ATK: Provides an AtkObject that implements an accessibility interface on behalf of obj. atk_object_initialize is called when implementing subclasses of AtkObject.

'''CreateStdAccessibleProxy'''

MSAA: creates an accessible object that has the properties and methods of the specified class of system-provided user interface element.

'''LresultFromObject'''

AtkObject:: atk_implementor_ref_accessible

MSAA: returns a reference, that is similar to a handle, to the specified object. Servers return this reference when handling WM_GETOBJECT.
ATK: Gets a reference to an object's AtkObject implementation, if the object implements AtkObjectIface

'''NotifyWinEvent'''

Accessibility::notifyEvent (in Event e)
(*AtkEventListener) (AtkObject*);
See also:atk_add_global_event_listener
(*AtkEventListenerInit)
atk_remove_global_event_listener

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.

'''IAccessibleHandler::AccessibleObjectFromID'''

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.

GetTypeInfoCount

MSAA: returns the number of type descriptions for the object. For objects that support IDispatch, the type information count is always one.

GetTypeInfo

GType atk_object_factory_get_accessible_type (AtkObjectFactory *factory);

MSAA: retrieves a description of the object's programmable interface.
ATK: Gets the GType of the accessible which is created by the factory.

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.
Note: Firefox extended this interface to to navigate to relations by adding new constants. IARelation is already being used so we will keep it.
ATK: No equivalent, except the future addition to AT-SPI of the Collection interface.

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.
ATK: Gets a reference to the specified accessible child of the object. The accessible children are 0-based so the first accessible child is at index 0, the second at index 1 and so on.

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.
ATK: Gets the number of accessible children of the accessible.

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 =====

From AtkAction, AtkObject, AtkValue

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);
See also: atk_action_get_localized_name

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.
ATK: Returns the name of the specified action of an object. If there are more than one action for an object, the first one is considered the "default" action.

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.
ATK: No equivalent.

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.
ATK: No equivalent.

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.
ATK: Get keybinding associated with action for object.

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);

See also: atk_role_get_name,atk_role_get_localized_name, [[BR]]atk_role_for_namehttp://developer.gnome.org/doc/API/2.0/atk/AtkObject.html#atk-role-get-localized-name

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.
ATK: Gets a reference to the state set of the accessible

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);
AND
gboolean atk_component_grab_focus (AtkComponent *component);

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.
ATK: Adds the specified accessible child of the object to the object's selection. Plus Grabs focus for this component.

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.
ATK:

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);

atk_component_get_extents (AtkComponent *component, gint *x, gint *y, gint *width, gint *height, AtkCoordType coord_type);

See also: atk_component_set_position

MSAA: retrieves the specified object's current screen location. All visual objects must support this method; sound objects do not support it.
ATK: Gets the position of component in the form of a point specifying components top-left corner.
Gets the rectangle which gives the extent of the
component.

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

From AtkObject and AtkValue

put_accName

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.
ATK: Sets the accessible name of the accessible.

void atk_object_set_description (AtkObject *accessible, const gchar *description);

MSAA: No equivalent.
ATK: Sets the accessible description of the accessible.

void atk_object_set_parent (AtkObject *accessible, AtkObject *parent);

MSAA: No equivalent.
ATK: Sets the accessible parent of the accessible.

void atk_object_set_role (AtkObject *accessible, AtkRole role);

MSAA: No equivalent.
ATK: Sets the role of the accessible.

put_accValue

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.
ATK: Determines the number of relations in a RelationSet.

relation ([in] long relationIndex,[out, retval] IAccessibleRelation **relation)

AtkRelation* atk_relation_set_get_relation (AtkRelationSet *set, gint i);
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]]

IA2: get one accessible relation at the specified index for this object.
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.

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);

See also:atk_object_add_relationship and atk_object_remove_relationship

IA2: get multiple accessible relations for this object. Not sure if or how you can add new relationships in IA2.
ATK: Gets the AtkRelationSet associated with the object.

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.
ATK: No ATK equivalent.

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.
ATK: No ATK equivalent.

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)]
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.

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.
ATK: Gets a reference to the state set of the accessible; the caller must unreference it when it is no longer needed.

nExtendedState ([out, retval] long *nExtendedStates) OR nStates ([out, retval] long *nStates)

IA2: get number of extended? states.
ATK: No equivalent.

AtkStateType atk_state_type_register (const gchar *name);

IA2: No State interface in IA2 - not needed.
ATK: Register a new object state.

const gchar* atk_state_type_get_name (AtkStateType type);

IA2: No State interface in IA2 - not needed.
ATK: Gets the description string describing the AtkStateType type.

AtkStateType atk_state_type_for_name (const gchar *name);

IA2: No State interface in IA2 - not needed.
ATK: Gets the description string describing the AtkStateType type

gboolean atk_state_set_is_empty (AtkStateSet *set);

IA2: No StateSet interface in IA2 - not needed, but this method is in ATK and UNO.
ATK: Checks whether the state set is empty, i.e. has no states set.

gboolean atk_state_set_add_state (AtkStateSet *set, AtkStateType type);

IA2: No StateSet interface in IA2 - not needed, but this method is in ATK.
ATK: Add a new state for the specified type to the current state set if it is not already present.

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.
ATK: Add the states for the specified types to the current state set.

void atk_state_set_clear_states (AtkStateSet *set);

IA2: No StateSet interface in IA2 - not needed, but this method is in ATK.
ATK: Removes all states from the state set.

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.
ATK: Checks whether the state for the specified type is in the specified set.

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.
ATK: Checks whether the states for all the specified types are in the specified set.

gboolean atk_state_set_remove_state (AtkStateSet *set, AtkStateType type);

IA2: No StateSet interface in IA2 - not needed, but this method is in ATK.
ATK: Removes the state for the specified type from the state set.

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.
ATK: Constructs the intersection of the two sets, returning NULL if the intersection is empty.

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.
ATK: Constructs the union of the two sets.

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.
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.

extendedRoles ([in] long maxRoles,[out, size_is(, maxRoles), length_is(,*nRoles)] BSTR **role,[out, retval] long *nRoles)

Add: roleName and localizedRoleName

const gchar* atk_role_get_name or use an enumerated role (like HEADING) and qualify it with text attributes like "xhtml:h1"
See:[[BR]]AtkRole atk_role_register (const gchar *name);
atk_role_get_localized_name,

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.
ATK: Registers the role specified by name, a character string describing the new role.

nExtendedRoles ([out, retval] long *nExtendedRoles) OR nRoles ([out, retval] long *nRoles)

IA2: get number of extended? roles.
ATK: No equivalent.

childID ([out, retval] long *childID)

See: atk_object_ref_accessible_child

IA2: unique ID, must be persistent so that OBJECT_REORDER events can be used to invalidate AT cache.
ATK: Not needed.

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
ATK: No equivalent

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.

locale ([out, retval] Locale *locale)

IA2: Get locale of object.
ATK: No ATK equivalent.

Add IAccessible2::get_attributes?

Need an atk_object_get_attributes?
Proposed:[[BR]]void atk_object_set_attribute( AtkObject *accessible, const gchar *name, const gchar *value);

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.
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.

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);
See also: atk_action_set_description

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.
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.

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.
ATK: Get a the URI associated with the anchor specified by i of link_. Multiple anchors are primarily used by client-side image maps.

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.
ATK: Gets the index with the hypertext document at which this link begins.

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.
ATK: Gets the index with the hypertext document at which this link 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.
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.

gboolean atk_hyperlink_is_inline (AtkHyperlink *link_);

IA2: No equivalent.
ATK: Indicates whether the link currently displays some or all of its content inline. Ordinary HTML links will usually return FALSE, but an inline &lt;src&gt; HTML element will return TRUE. a * Not being passed through to AT-SPI.

gint atk_hyperlink_get_n_anchors (AtkHyperlink *link_);

IA2: No equivalent.
ATK: Gets the number of anchors associated with this hyperlink.

gboolean atk_hyperlink_is_selected_link (AtkHyperlink *link_);

IA2: No equivalent
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?

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.
ATK: Checks whether the specified point is within the extent of the component.

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.
ATK: Gets a reference to the accessible child, if one exists, at the coordinate point specified by x and y.

locationInParent ([out, retval] Point *location)

void atk_component_get_position (AtkComponent *component, gint *x, gint *y, AtkCoordType coord_type);

See also: atk_component_set_position

IA2: Returns the location of the upper left corner x/y of the object's bounding box relative to the parent.
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?

foreground ([out, retval] Color *foreground)

See: atk_text_get_run_attributes

IA2: Returns the foreground color of this object. For chrome controls, such as the color dialog, the foreground will be the selected color.
ATK: No equivalent.

background ([out, retval] Color *background)

See: atk_text_get_run_attributes

IA2: Returns the background color of this object.
ATK: No equivalent.

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

font ([out, retval] IUNOFont **font)

See: atk_text_get_run_attributes

IA2: Returns the font of this object.
ATK: No direct equivalent.

titledBorderText ([out, retval] BSTR *titledBorderText)

IA2: Returns the titled border text.
ATK: No equivalent.

toolTipText ([out, retval] BSTR *toolTipText)

IA2: Returns the tool tip text of this object.
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.

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
ATK: Copy text from start_pos up to, but not including end_pos 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
ATK: Delete text start_pos up to, but not including end_pos.

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
ATK: Insert text at a given position.

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
ATK: Copy text from start_pos up to, but not including end_pos to the clipboard and then delete from the widget.

pasteText ([in] long offset,[out, retval] )

void atk_editable_text_paste_text (AtkEditableText *text, gint position);

IA2: paste text from clipboard at specified offset
ATK: Delete text start_pos up to, but not including end_pos.

replaceText ([in] long startOffset,[in] long endOffset,[in] BSTR *text,[out, retval] )

IA2: replace range of text with new text
ATK: No equivalent.

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
ATK: Sets the attributes for a specified range.

IAccessibleImage - not needed

From AtkImage

const gchar* atk_image_get_image_description (AtkImage *image);
See also: atk_image_set_image_description

IA2: Get description from IAccessible::get_accDescription
ATK: Get a textual description of this image.

void atk_image_get_image_position (AtkImage *image, gint *x, gint *y, AtkCoordType coord_type);

IA2: Get x/y from IAccessible::get_accLocation
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.

void atk_image_get_image_position (AtkImage *image, gint *x, gint *y, AtkCoordType coord_type);

IA2: Get x/y from IAccessible::get_accLocation
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.

IAccessibleRelation

From AtkRelation and AtkRelationSet

relationType ([out, retval] BSTR *relationType)

AtkRelationType
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

IA2: returns type of relation, but it is not localized.
ATK: When registering a relation type, associate name with a new AtkRelationType

Add get_localizedRelationType

nTargets ([out, retval] long *nTargets)

See: atk_relation_get_target

IA2: returns the size of the relations targets array

target ([in] long targetIndex,[out, retval] IUnknown **target)

GPtrArray* atk_relation_get_target (AtkRelation *relation);
See also: atk_relation_add_target

IA2: get one accessible relation target

targets ([in] long maxTargets,[out, size_is(maxTargets), length_is(*nTargets)] IUnknown **target,[out, retval] long *nTargets)

See: atk_relation_get_target

IA2: get multiple accessible relation targets
ATK: No true ATK call to get multiple 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).
ATK: Adds the specified accessible child of the object to the object's 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.
ATK: Determines if the current 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.
ATK: Causes every child of the object to be selected if the object supports multiple selections.

nSelectedAccessibleChildren ([out, retval] long *nSelectedAccessibleChildren)

gint atk_selection_get_selection_count (AtkSelection *selection);

IA2: Returns the number of Accessible children that are currently selected.
ATK: Gets the number of accessible children 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.
ATK: Gets a reference to the accessible object representing the specified selected child of the object.

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.
ATK: Removes the specified child of the object from the object's selection.

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
ATK: Get a reference to the table cell at row, column.

add index method.

gint atk_table_get_index_at (AtkTable *table, gint row, gint column);

IA2: No equivalent.
ATK: Gets a gint representing the index at the specified row and column.

add column method.

gint atk_table_get_column_at_index (AtkTable *table, gint index_);

IA2: No equivalent.
ATK: Gets a gint representing the column at the specified index_.

add row method.

gint atk_table_get_row_at_index (AtkTable *table, gint index_);

IA2: No equivalent.
ATK: Gets a gint representing the row at the specified index_.

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.
ATK: Sets the caption for the table.

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.
ATK: Sets the description text for the specified column of the table.

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
ATK: Gets the number of columns occupied by the accessible object at the specified row and column in the table.

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.
ATK: Sets the specified column header to header.

nColumns ([out, retval] long *columnCount)

gint atk_table_get_n_columns (AtkTable *table);

IA2: get total number of columns in table
ATK: Gets the number of columns in the table.

nRows ([out, retval] long *rowCount)

gint atk_table_get_n_rows (AtkTable *table);

IA2: get total number of rows in table
ATK: Gets the number of rows in the table.

nSelectedColumns ([out, retval] long *columnCount)

gint atk_table_get_selected_columns (AtkTable *table, gint **selected);

get total number of selected columns
IA2: Has two calls for 1 ATK call. See also IAccessibleTable::selectedColumns.

nSelectedRows ([out, retval] long *rowCount)

gint atk_table_get_selected_rows (AtkTable *table, gint **selected);

get total number of selected rows
IA2: Has two calls for 1 ATK call. See also IAccessibleTable::selectedRows.

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.
ATK: Set row description.

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
ATK: Gets the number of rows occupied by the accessible object at a specified row and column in the table.

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.
ATK: Sets the specified row header to header.

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.
ATK: Sets the summary description of the table.

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
ATK: Gets a boolean value indicating whether the accessible object at the specified row and column 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.
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.

AtkAttributeSet* atk_text_get_default_attributes (AtkText *text);

IA2: No equivalent.
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.

void atk_attribute_set_free (AtkAttributeSet *attrib_set);

IA2: No equivalent.
ATK: Frees the memory used by an AtkAttributeSet, including all its AtkAttributes.

AtkTextAttribute atk_text_attribute_register (const gchar *name);

IA2: No equivalent.
ATK: Associate name with a new AtkTextAttribute

const gchar* atk_text_attribute_get_name (AtkTextAttribute attr);

IA2: No equivalent.
ATK: Gets the name corresponding to the AtkTextAttribute

AtkTextAttribute atk_text_attribute_for_name (const gchar *name);

IA2: No equivalent.
ATK: Get the AtkTextAttribute type corresponding to a text attribute name.

const gchar* atk_text_attribute_get_value (AtkTextAttribute attr, gint index_);

IA2: No equivalent.
ATK: Gets the value for the index of the AtkTextAttribute

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
ATK: Get the bounding box containing the glyph representing the character at a particular text offset.

nSelections ([out, retval] long *nSelections)

gint atk_text_get_n_selections (AtkText *text);

IA2:get number of active non-contiguous selections
ATK: Gets the number of selected regions.

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
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.

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.
ATK: Gets the text from the specified selection.

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.
ATK: Gets the specified text.

AtkTextRange** atk_text_get_bounded_ranges (AtkText *text, AtkTextRectangle *rect, AtkCoordType coord_type, AtkTextClipType x_clip_type, AtkTextClipType y_clip_type);

IA2: No equivalent.
ATK: Get the ranges of text in the specified bounding box.

void atk_text_get_range_extents (AtkText *text, gint start_offset, gint end_offset, AtkCoordType coord_type, AtkTextRectangle *rect);

IA2: No equivalent.
ATK: Get the bounding box for text within the specified range.

void atk_text_free_ranges (AtkTextRange **ranges);

IA2: No equivalent.
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.

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.
ATK: Gets the specified text based on boundary type (character or word/sentence/line start/end.)

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);

gunichar atk_text_get_character_at_offset (AtkText *text, gint offset);

IA2: get a specified amount of text that spans the specified offset. For getting a character, use get_textAtOffset CHAR boundary.
ATK: Gets the specified text based on boundary type. There's also a separate method for getting a character at offset.

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
ATK: No equivalent. Do we need this?

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.
ATK: Gets the number of links within this hypertext document.

hyperlink ([in] long index,[out, retval] IAccessibleHyperlink **hyperlink)

AtkHyperlink* atk_hypertext_get_link (AtkHypertext *hypertext, gint link_index);

IA2: Return the specified link.
ATK: Gets the link in this hypertext document at index link_index

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.
ATK: Gets the index into the array of hyperlinks that is associated with the character specified by char_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);

Accessibility/Documentation/GNOME2/AtkGuide/MSAA (last edited 2011-07-21 17:35:17 by JoanmarieDiggs)