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 |