MSAA Events

« AT APIs Support Page

Introduction

Proposed mapping MSAA Events to Gecko Events.

How to track where the event happened, within your own offscreen model

Ordinary zero-indexed child IDs are not practical for representing events. The problem is that the child ID system that is used by MSAA doesn't work well when you have a deep tree of objects in a window. It would be impractical to number all of the nodes in a document starting at 0, because whenever a node is inserted or removed it would be computationally very expensive to renumber things. So, the Firefox childID handed back from events is based on an algorithm that uses the pointer value of the related internal DOM node. This computed child ID for events is always a negative value, unique to the IAccessible firing the event

These negative childID's from events can be used with AccessibleObjectFromEvent(), or on the root accessible of a window with any IAccessible method that takes a VARIANT, such as get_accChild().

Because screen readers usually cache an entire document's worth of data, it can be extremely useful for them to receive a child ID that helps them correlate back to a known object. We provide support for this technique via ISimpleDOMNode::get_nodeInfo(), which returns a uniqueID for any IAccessible that can be cached in the internal model. When an event is received, the negative childID should match one of these cached uniqueID's, if the entire document has been stored and kept current. Keeping an internal cache current means getting new subtrees of IAccessibles whenever an EVENT_REORDER is received, indicating important changes have invalidated part of the model.

Events List

Event Description Gecko Event
EVENT_SYSTEM_SOUND A sound has been played. No
EVENT_SYSTEM_ALERT An alert has been generated. Server applications send this event when a user needs to know that a user interface element has changed. EVENT_ALERT
EVENT_SYSTEM_FOREGROUND The foreground window has changed EVENT_FOREGROUND
EVENT_SYSTEM_MENUSTART A menu item on the menu bar has been selected. EVENT_MENU_START
EVENT_SYSTEM_MENUEND A menu from the menu bar has been closed. EVENT_MENU_END
EVENT_SYSTEM_MENUPOPUPSTART A pop-up menu has been displayed. EVENT_MENUPOPUP_START
EVENT_SYSTEM_MENUPOPUPEND A pop-up menu has been closed. EVENT_MENUPOPUP_END
EVENT_SYSTEM_CAPTURESTART A window has received mouse capture. EVENT_CAPTURE_START
EVENT_SYSTEM_CAPTUREEND A window has lost mouse capture. EVENT_CAPTURE_END
EVENT_SYSTEM_MOVESIZESTART A window is being moved or resized. EVENT_MOVESIZE_START
EVENT_SYSTEM_MOVESIZEEND The movement or resizing of a window has finished. EVENT_MOVESIZE_END
EVENT_SYSTEM_CONTEXTHELPSTART A window has entered context-sensitive Help mode. EVENT_CONTEXTHELP_START
EVENT_SYSTEM_CONTEXTHELPEND A window has exited context-sensitive Help mode. EVENT_CONTEXTHELP_END
EVENT_SYSTEM_DRAGDROPSTART An application is about to enter drag-and-drop mode. EVENT_DRAGDROP_STAR
EVENT_SYSTEM_DRAGDROPEND An application is about to exit drag-and-drop mode. EVENT_DRAGDROP_END
EVENT_SYSTEM_DIALOGSTART A dialog box has been displayed. EVENT_DIALOG_START
EVENT_SYSTEM_DIALOGEND A dialog box has been closed. EVENT_DIALOG_END
EVENT_SYSTEM_SCROLLINGSTART Scrolling has started on a scroll bar. EVENT_SCROLLING_START
EVENT_SYSTEM_SCROLLINGEND Scrolling has ended on a scroll bar. EVENT_SCROLLING_END
EVENT_OBJECT_CREATE An object has been created. EVENT_CREATE
EVENT_OBJECT_DESTROY An object has been destroyed. EVENT_DESTROY
EVENT_OBJECT_SHOW A hidden object is shown. EVENT_SHOW
EVENT_OBJECT_HIDE An object is hidden. EVENT_HIDE
EVENT_OBJECT_REORDER A container object has added, removed, or reordered its children. EVENT_REORDER
EVENT_OBJECT_INVOKED An object has been invoked; for example, the user has clicked a button. No
EVENT_OBJECT_FOCUS An object has received the keyboard focus. EVENT_FOCUS
EVENT_OBJECT_SELECTION The selection within a container object has changed. EVENT_SELECTION
EVENT_OBJECT_SELECTIONADD An item within a container object has been added to the selection. EVENT_SELECTION_ADD
EVENT_OBJECT_SELECTIONREMOVE An item within a container object has been removed from the selection. EVENT_SELECTION_REMOVE
EVENT_OBJECT_SELECTIONWITHIN Numerous selection changes have occurred within a container object. EVENT_SELECTION_WITHIN
EVENT_OBJECT_TEXTSELECTIONCHANGED An object's text selection has changed. EVENT_TEXT_SELECTION_CHANGED
EVENT_OBJECT_CONTENTSCROLLED A window object's scrolling has ended. No
EVENT_OBJECT_STATECHANGE An object's state has changed. EVENT_STATE_CHANGE
EVENT_OBJECT_LOCATIONCHANGE An object has changed location, shape, or size. EVENT_LOCATION_CHANGE
EVENT_OBJECT_NAMECHANGE An object's Name property has changed. EVENT_NAME_CHANGE
EVENT_OBJECT_DESCRIPTIONCHANGE An object's Description property has changed. EVENT_DESCRIPTION_CHANGE
EVENT_OBJECT_VALUECHANGE An object's Value property has changed. EVENT_VALUE_CHANGE
EVENT_OBJECT_PARENTCHANGE An object has a new parent object EVENT_VALUE_CHANGE
EVENT_OBJECT_HELPCHANGE An object's Help property has changed. EVENT_HELP_CHANGE
EVENT_OBJECT_DEFACTIONCHANGE An object's DefaultAction property has changed. EVENT_DEFACTION_CHANGE
EVENT_OBJECT_ACCELERATORCHANGE An object's KeyboardShortcut property has changed. EVENT_ACCELERATOR_CHANGE

Document Tags and Contributors

 Contributors to this page: Sheppy, Surkov.alexander
 Last updated by: Sheppy,