From 5cb2fd7fe2da3498c03e30bbd8eb152bab6b8c3e Mon Sep 17 00:00:00 2001 From: "surkov.alexander@gmail.com" Date: Sat, 7 Apr 2007 20:58:08 -0700 Subject: [PATCH] Fix for bug 376753 - Allow QueryInterface to IA2 witout crashing, patches=aaronlev, me, r=me, aaronlev --- accessible/public/ia2/Makefile.in | 1 + accessible/public/nsIAccessibleEvent.idl | 13 ++-- accessible/src/msaa/nsAccessibleWrap.cpp | 36 +++++------ accessible/src/msaa/nsAccessibleWrap.h | 15 ++--- accessible/src/msaa/nsEventMap.h | 3 +- accessible/src/msaa/nsRoleMap.h | 6 +- other-licenses/ia2/Accessible2.idl | 63 +++++++++----------- other-licenses/ia2/AccessibleApplication.idl | 28 +-------- other-licenses/ia2/AccessibleComponent.idl | 17 ++---- other-licenses/ia2/AccessibleEventId.idl | 20 +++---- other-licenses/ia2/AccessibleImage.idl | 10 +--- other-licenses/ia2/AccessibleRole.idl | 34 +++++++---- other-licenses/ia2/AccessibleStates.idl | 29 ++++----- other-licenses/ia2/AccessibleTable.idl | 18 +++--- other-licenses/ia2/AccessibleText.idl | 53 +++++++++++----- 15 files changed, 161 insertions(+), 185 deletions(-) diff --git a/accessible/public/ia2/Makefile.in b/accessible/public/ia2/Makefile.in index 538c21363c6..6f4dce27bc9 100644 --- a/accessible/public/ia2/Makefile.in +++ b/accessible/public/ia2/Makefile.in @@ -76,6 +76,7 @@ MIDL_ENUMS = \ AccessibleEventId.idl \ AccessibleRole.idl \ AccessibleStates.idl \ + IA2CommonTypes.idl \ $(NULL) EXPORTS = \ diff --git a/accessible/public/nsIAccessibleEvent.idl b/accessible/public/nsIAccessibleEvent.idl index f2d4897a023..b8612441abe 100755 --- a/accessible/public/nsIAccessibleEvent.idl +++ b/accessible/public/nsIAccessibleEvent.idl @@ -61,7 +61,7 @@ interface nsIDOMNode; * * @status UNDER_REVIEW */ -[scriptable, uuid(cc8d6414-90cf-450a-8c18-8bf8302d00b7)] +[scriptable, uuid(18612bcb-79bd-45c1-92e9-07aded5fd0f5)] interface nsIAccessibleEvent : nsISupports { /** @@ -351,7 +351,7 @@ interface nsIAccessibleEvent : nsISupports /** * The caret moved from one column to the next. */ - const unsigned long EVENT_COLUMN_CHANGED = 0x003A; + const unsigned long EVENT_TEXT_COLUMN_CHANGED = 0x003A; /** * The caret moved from one section to the next. @@ -464,20 +464,15 @@ interface nsIAccessibleEvent : nsISupports */ const unsigned long EVENT_PAGE_CHANGED = 0x005A; - /** - * An object's role changed. - */ - const unsigned long EVENT_ROLE_CHANGED = 0x005B; - /** * Used internally in Gecko. */ - const unsigned long EVENT_INTERNAL_LOAD = 0x005C; + const unsigned long EVENT_INTERNAL_LOAD = 0x005B; /** * Help make sure event map does not get out-of-line. */ - const unsigned long EVENT_LAST_ENTRY = 0x005D; + const unsigned long EVENT_LAST_ENTRY = 0x005C; /** * The type of event, based on the enumerated event values diff --git a/accessible/src/msaa/nsAccessibleWrap.cpp b/accessible/src/msaa/nsAccessibleWrap.cpp index 2787c6b54ba..cd564fd12de 100644 --- a/accessible/src/msaa/nsAccessibleWrap.cpp +++ b/accessible/src/msaa/nsAccessibleWrap.cpp @@ -117,8 +117,8 @@ STDMETHODIMP nsAccessibleWrap::QueryInterface(REFIID iid, void** ppv) *ppv = NS_STATIC_CAST(IEnumVARIANT*, this); } else if (IID_IServiceProvider == iid) *ppv = NS_STATIC_CAST(IServiceProvider*, this); - //else if (IID_IAccessible2 == iid) - //*ppv = NS_STATIC_CAST(IAccessible2*, this); + else if (IID_IAccessible2 == iid) + *ppv = NS_STATIC_CAST(IAccessible2*, this); else if (IID_IAccessibleAction == iid) *ppv = NS_STATIC_CAST(IAccessibleAction*, this); @@ -1081,13 +1081,21 @@ nsAccessibleWrap::role(long *role) } STDMETHODIMP -nsAccessibleWrap::scrollTo(boolean topLeft) +nsAccessibleWrap::scrollTo(enum IA2ScrollType scrollType) { - if (NS_SUCCEEDED(ScrollTo(topLeft))) + // XXX Handle scrollType + if (NS_SUCCEEDED(ScrollTo(PR_TRUE))) return S_OK; return E_FAIL; } +STDMETHODIMP +nsAccessibleWrap::scrollToPoint(enum IA2CoordinateType coordinateType, + long x, long y) +{ + return E_NOTIMPL; +} + STDMETHODIMP nsAccessibleWrap::get_groupPosition(long *aGroupLevel, long *aSimilarItemsInGroup, @@ -1109,12 +1117,6 @@ nsAccessibleWrap::get_groupPosition(long *aGroupLevel, return E_FAIL; } -STDMETHODIMP -nsAccessibleWrap::get_localizedRoleName(BSTR *localizedRoleName) -{ - return E_NOTIMPL; -} - STDMETHODIMP nsAccessibleWrap::get_states(AccessibleStates *aStates) { @@ -1168,14 +1170,6 @@ nsAccessibleWrap::get_states(AccessibleStates *aStates) return S_OK; } -STDMETHODIMP -nsAccessibleWrap::get_localizedStateNames(long maxLocalizedStateNames, - BSTR **localizedStateNames, - long *nLocalizedStateNames) -{ - return E_NOTIMPL; -} - STDMETHODIMP nsAccessibleWrap::get_extendedRole(BSTR *extendedRole) { @@ -1213,9 +1207,9 @@ nsAccessibleWrap::get_localizedExtendedStates(long maxLocalizedExtendedStates, STDMETHODIMP nsAccessibleWrap::get_uniqueID(long *uniqueID) { - void **id = nsnull; - if (NS_SUCCEEDED(GetUniqueID(id))) { - *uniqueID = NS_REINTERPRET_POINTER_CAST(long, *id); + void *id; + if (NS_SUCCEEDED(GetUniqueID(&id))) { + *uniqueID = NS_REINTERPRET_POINTER_CAST(long, id); return S_OK; } return E_FAIL; diff --git a/accessible/src/msaa/nsAccessibleWrap.h b/accessible/src/msaa/nsAccessibleWrap.h index dffa1c249fc..ebe772cbd49 100644 --- a/accessible/src/msaa/nsAccessibleWrap.h +++ b/accessible/src/msaa/nsAccessibleWrap.h @@ -172,24 +172,21 @@ class nsAccessibleWrap : public nsAccessible, /* [retval][out] */ long *role); virtual HRESULT STDMETHODCALLTYPE scrollTo( - /* [in] */ boolean topLeft); + /* [in] */ enum IA2ScrollType scrollType); + + virtual HRESULT STDMETHODCALLTYPE scrollToPoint( + /* [in] */ enum IA2CoordinateType coordinateType, + /* [in] */ long x, + /* [in] */ long y); virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_groupPosition( /* [out] */ long *groupLevel, /* [out] */ long *similarItemsInGroup, /* [retval][out] */ long *positionInGroup); - virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_localizedRoleName( - /* [retval][out] */ BSTR *localizedRoleName); - virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_states( /* [retval][out] */ AccessibleStates *states); - virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_localizedStateNames( - /* [in] */ long maxLocalizedStateNames, - /* [length_is][length_is][size_is][size_is][out] */ BSTR **localizedStateNames, - /* [retval][out] */ long *nLocalizedStateNames); - virtual /* [propget] */ HRESULT STDMETHODCALLTYPE get_extendedRole( /* [retval][out] */ BSTR *extendedRole); diff --git a/accessible/src/msaa/nsEventMap.h b/accessible/src/msaa/nsEventMap.h index 724d7b0c80d..a6b82a6b2c7 100755 --- a/accessible/src/msaa/nsEventMap.h +++ b/accessible/src/msaa/nsEventMap.h @@ -103,7 +103,7 @@ static const PRUint32 gWinEventMap[] = { IA2_EVENT_TEXT_UPDATED, // nsIAccessibleEvent::EVENT_TEXT_UPDATED IA2_EVENT_TEXT_SELECTION_CHANGED, // nsIAccessibleEvent::EVENT_TEXT_SELECTION_CHANGED IA2_EVENT_VISIBLE_DATA_CHANGED, // nsIAccessibleEvent::EVENT_VISIBLE_DATA_CHANGED - IA2_EVENT_COLUMN_CHANGED, // nsIAccessibleEvent::EVENT_COLUMN_CHANGED + IA2_EVENT_TEXT_COLUMN_CHANGED, // nsIAccessibleEvent::EVENT_TEXT_COLUMN_CHANGED IA2_EVENT_SECTION_CHANGED, // nsIAccessibleEvent::EVENT_SECTION_CHANGED IA2_EVENT_TABLE_CAPTION_CHANGED, // nsIAccessibleEvent::EVENT_TABLE_CAPTION_CHANGED IA2_EVENT_TABLE_MODEL_CHANGED, // nsIAccessibleEvent::EVENT_TABLE_MODEL_CHANGED @@ -136,7 +136,6 @@ static const PRUint32 gWinEventMap[] = { IA2_EVENT_HYPERTEXT_NLINKS_CHANGED, // nsIAccessibleEvent::EVENT_HYPERTEXT_NLINKS_CHANGED IA2_EVENT_OBJECT_ATTRIBUTE_CHANGED, // nsIAccessibleEvent::EVENT_OBJECT_ATTRIBUTE_CHANGED IA2_EVENT_PAGE_CHANGED, // nsIAccessibleEvent::EVENT_PAGE_CHANGED - IA2_EVENT_ROLE_CHANGED, // nsIAccessibleEvent::EVENT_ROLE_CHANGED kEVENT_WIN_UNKNOWN, // nsIAccessibleEvent::EVENT_INTERNAL_LOAD kEVENT_LAST_ENTRY // nsIAccessibleEvent::EVENT_LAST_ENTRY }; diff --git a/accessible/src/msaa/nsRoleMap.h b/accessible/src/msaa/nsRoleMap.h index b18d105b126..a6b4b011782 100644 --- a/accessible/src/msaa/nsRoleMap.h +++ b/accessible/src/msaa/nsRoleMap.h @@ -267,7 +267,7 @@ static const WindowsRoleMapItem gWindowsRoleMap[] = { { ROLE_SYSTEM_INDICATOR, ROLE_SYSTEM_INDICATOR }, // nsIAccessibleRole::ROLE_CANVAS - { USE_ROLE_STRING, IA2_ROLE_UNKNOWN }, + { USE_ROLE_STRING, IA2_ROLE_CANVAS }, // nsIAccessibleRole::ROLE_CHECK_MENU_ITEM { ROLE_SYSTEM_MENUITEM, IA2_ROLE_CHECK_MENU_ITEM }, @@ -339,10 +339,10 @@ static const WindowsRoleMapItem gWindowsRoleMap[] = { { ROLE_SYSTEM_ROWHEADER, ROLE_SYSTEM_ROWHEADER }, // nsIAccessibleRole::ROLE_TEAR_OFF_MENU_ITEM - { ROLE_SYSTEM_MENUITEM, ROLE_SYSTEM_MENUITEM }, + { ROLE_SYSTEM_MENUITEM, IA2_ROLE_TEAR_OFF_MENU }, // nsIAccessibleRole::ROLE_TERMINAL - { USE_ROLE_STRING, IA2_ROLE_UNKNOWN }, + { USE_ROLE_STRING, IA2_ROLE_TERMINAL }, // nsIAccessibleRole::ROLE_TEXT_CONTAINER { USE_ROLE_STRING, IA2_ROLE_TEXT_FRAME }, diff --git a/other-licenses/ia2/Accessible2.idl b/other-licenses/ia2/Accessible2.idl index bded3c8a619..d0876030831 100644 --- a/other-licenses/ia2/Accessible2.idl +++ b/other-licenses/ia2/Accessible2.idl @@ -40,20 +40,19 @@ IAccessibleValue @section _structs Structs - IA2Point\n IA2Locale\n IA2TableModelChange\n IA2TextSegment @section _enums Enums + ::IA2CoordinateType values define the requested coordinate type (screen or parent window).\n ::IA2EventID values identify events.\n ::IA2Role values define roles.\n + ::IA2ScrollType values define where to place an object or substring on the screen.\n ::IA2TableModelChangeType values describe the kinds of changes made to a table (insert, delete, update).\n - ::IA2TextBoundaryType values define the requested text unit (character, word, sentence, line, paragraph).\n - ::IA2TextCoordinateType values define the requested coordinate type (screen or parent window). - + ::IA2TextBoundaryType values define the requested text unit (character, word, sentence, line, paragraph). + @section _constants Constants - @ref grpIAccessibleApplication\n @ref grpRelations\n @ref grpStates\n @@ -86,10 +85,10 @@ import "objidl.idl"; import "oaidl.idl"; -import "ocidl.idl"; import "oleacc.idl"; import "AccessibleRelation.idl"; import "AccessibleStates.idl"; +import "IA2CommonTypes.idl"; /// A structure defining the locale of an accessible object. typedef struct { @@ -145,6 +144,9 @@ interface IAccessible2 : IAccessible ); /** @brief Returns the role of an IAccessible2 object. + + Note: For convenience MSAA roles are also passed through this method so the + AT doesn't have to also fetch roles through MSAA's get_accRole. @param [out] role The role of an IAccessible2 object. */ @@ -153,14 +155,30 @@ interface IAccessible2 : IAccessible [out, retval] long *role ); - /** @brief Makes an object visible on screen. - @param [in] topLeft - If false then it will scroll the shortest distance it needs to put - the element on-screen. + /** @brief Makes an object visible on the screen. + @param [in] scrollType + Defines where the object should be placed on the screen. */ HRESULT scrollTo ( - [in] boolean topLeft + [in] enum IA2ScrollType scrollType + ); + + /** @brief Moves the top left of an object to a specified location. + + Note: S_FALSE is returned if the object is already at the specified location. + @param [in] coordinateType + Specifies whether the coordinates are relative to the screen or the parent object. + @param [in] x + Defines the x coordinate. + @param [in] y + Defines the y coordinate. + */ + HRESULT scrollToPoint + ( + [in] enum IA2CoordinateType coordinateType, + [in] long x, + [in] long y ); /** @brief Returns grouping information. @@ -182,17 +200,6 @@ interface IAccessible2 : IAccessible [out, retval] long *positionInGroup ); - /** @brief Returns the localized role name. - - Valid if the role is an IAccessible2 role; not to be used for MSAA roles. - - @param [out] localizedRoleName - */ - [propget] HRESULT localizedRoleName - ( - [out, retval] BSTR *localizedRoleName - ); - /** @brief Returns the bit strip containing any IAccessible2 states. @param [out] states */ @@ -201,18 +208,6 @@ interface IAccessible2 : IAccessible [out, retval] AccessibleStates *states ); - /** @brief Returns localized state names (array of strings). - @param [in] maxLocalizedStateNames - @param [out] localizedStateNames - @param [out] nLocalizedStateNames - */ - [propget] HRESULT localizedStateNames - ( - [in] long maxLocalizedStateNames, - [out, size_is(,maxLocalizedStateNames), length_is(,*nLocalizedStateNames)] BSTR **localizedStateNames, - [out, retval] long *nLocalizedStateNames - ); - /** @brief Returns the extended role. An extended role is a role which is dynamically generated by the application. diff --git a/other-licenses/ia2/AccessibleApplication.idl b/other-licenses/ia2/AccessibleApplication.idl index 557456cb9d4..75e2c0e030c 100644 --- a/other-licenses/ia2/AccessibleApplication.idl +++ b/other-licenses/ia2/AccessibleApplication.idl @@ -4,7 +4,7 @@ * * IAccessible2 IDL Specification * - * Copyright (c) IBM Corp. 2006 + * Copyright (c) IBM Corp. 2007 * Copyright (c) Sun Microsystems, Inc. 2000, 2006 * * This library is free software; you can redistribute it and/or @@ -27,32 +27,6 @@ import "objidl.idl"; import "oaidl.idl"; import "oleacc.idl"; - -/** @defgroup grpIAccessibleApplication Constants used with IAccessibleApplication */ -///@{ -/** This constant is used when requesting the IAccessibleApplication interface - via a call to AccessibleObjectFromWindow. - - The following describes how an MSAA/IA2 server will provide an object - implementing the IAccessibleApplication interface. For any and all - windows in an application, the server will respond to the WM_GETOBJECT - message by returning an IAccessible pointer to an object which implements the - IAccessibleApplication interface, provided that OBJID_IAAPPLICATION is the - DWORD value received in the dwObjId parameter of the message handler. - - The WM_GETOBJECT message handler is expected to increment the reference count - for the returned object by 1. - - The client may use AccessibleObjectFromWindow to get the IAccessibleApplication - interface at any time during the life of a window, by specifying idObject as - OBJID_IAAPPLICATION. - - The riid parameter on the call to AccessibleObjectFromWindow should be - IID_IAccessibleApplication. -*/ -const long OBJID_IAAPPLICATION = 0xffffff00; -///@} - /** @brief This interface gives access to the application's name and version information. This interface provides the AT with the information it needs to differentiate diff --git a/other-licenses/ia2/AccessibleComponent.idl b/other-licenses/ia2/AccessibleComponent.idl index 8f293750b85..1d40f918d56 100644 --- a/other-licenses/ia2/AccessibleComponent.idl +++ b/other-licenses/ia2/AccessibleComponent.idl @@ -4,7 +4,7 @@ * * IAccessible2 IDL Specification * - * Copyright (c) IBM Corp. 2006 + * Copyright (c) IBM Corp. 2007 * Copyright (c) Sun Microsystems, Inc. 2000, 2006 * * This library is free software; you can redistribute it and/or @@ -26,16 +26,9 @@ import "objidl.idl"; import "oaidl.idl"; import "oleacc.idl"; -import "Accessible2.idl"; typedef long IA2Color; -/// A structure containing an x and y value. -typedef struct { - long x; ///< x coordinate - long y; ///< y corrdinate -} IA2Point; - /** @brief This interface is implemented by any object that can be rendered on the screen. @@ -58,7 +51,7 @@ interface IAccessibleComponent : IUnknown { /** @brief Returns the location of the upper left corner of the object's - bounding box relative to the parent. + bounding box relative to the immediate parent object. The coordinates of the bounding box are given relative to the parent's coordinate system. The coordinates of the returned position are relative @@ -66,11 +59,13 @@ interface IAccessibleComponent : IUnknown is rendered if it has no parent. If the object is not on any screen the returned position is (0,0). - @param [out] locationInParent + @param [out] x + @param [out] y */ [propget] HRESULT locationInParent ( - [out, retval] IA2Point *locationInParent + [out] long *x, + [out, retval] long *y ); /** @brief Returns the foreground color of this object. diff --git a/other-licenses/ia2/AccessibleEventId.idl b/other-licenses/ia2/AccessibleEventId.idl index f99324468b8..9aed3a113a9 100644 --- a/other-licenses/ia2/AccessibleEventId.idl +++ b/other-licenses/ia2/AccessibleEventId.idl @@ -101,10 +101,10 @@ enum IA2EventID { */ IA2_EVENT_PAGE_CHANGED, - /** An object's role changed. + /** The caret moved from one section to the next. */ - IA2_EVENT_ROLE_CHANGED, - + IA2_EVENT_SECTION_CHANGED, + /** A table caption changed. */ IA2_EVENT_TABLE_CAPTION_CHANGED, @@ -147,6 +147,10 @@ enum IA2EventID { */ IA2_EVENT_TEXT_CHANGED, + /** The caret moved from one column to the next. + */ + IA2_EVENT_TEXT_COLUMN_CHANGED, + /** Text was inserted. */ IA2_EVENT_TEXT_INSERTED, @@ -167,14 +171,6 @@ enum IA2EventID { of an accessible object. This includes for example most of the attributes available via the IAccessibleComponent interface. */ - IA2_EVENT_VISIBLE_DATA_CHANGED, - - /** The caret moved from one column to the next. - */ - IA2_EVENT_COLUMN_CHANGED, - - /** The caret moved from one section to the next. - */ - IA2_EVENT_SECTION_CHANGED + IA2_EVENT_VISIBLE_DATA_CHANGED }; diff --git a/other-licenses/ia2/AccessibleImage.idl b/other-licenses/ia2/AccessibleImage.idl index cf357ea949a..d892de8d6a5 100644 --- a/other-licenses/ia2/AccessibleImage.idl +++ b/other-licenses/ia2/AccessibleImage.idl @@ -26,13 +26,7 @@ import "objidl.idl"; import "oaidl.idl"; import "oleacc.idl"; - -enum IA2ImageCoordinateType { - /// The returned coordinates are relative to the screen. - IA2_IMAGE_COORDTYPE_SCREEN_RELATIVE, - /// The returned coordinates are relative to the upper left corner of parent's bounding box. - IA2_IMAGE_COORDTYPE_PARENT_RELATIVE -}; +import "IA2CommonTypes.idl"; /** @brief This interface represents images and icons. @@ -67,7 +61,7 @@ interface IAccessibleImage : IUnknown */ [propget] HRESULT imagePosition ( - [in] enum IA2ImageCoordinateType coordinateType, + [in] enum IA2CoordinateType coordinateType, [out] long *x, [out, retval] long *y ); diff --git a/other-licenses/ia2/AccessibleRole.idl b/other-licenses/ia2/AccessibleRole.idl index 16bb4f194f4..b0f2ab1bcd0 100644 --- a/other-licenses/ia2/AccessibleRole.idl +++ b/other-licenses/ia2/AccessibleRole.idl @@ -39,8 +39,14 @@ enum IA2Role { */ IA2_ROLE_UNKNOWN = 0, + /** An object that can be drawn into and to manage events from the objects + drawn into it. Also refer to ::IA2_ROLE_FRAME, + ::IA2_ROLE_GLASS_PANE, and ::IA2_ROLE_LAYERED_PANE. + */ + IA2_ROLE_CANVAS = 0x401, + /// A caption describing another object. - IA2_ROLE_CAPTION = 0x401, + IA2_ROLE_CAPTION, /// Used for check buttons that are menu items. IA2_ROLE_CHECK_MENU_ITEM, @@ -57,7 +63,7 @@ enum IA2Role { IA2_ROLE_DESKTOP_ICON, /** A desktop pane. A pane that supports internal frames and iconified - versions of those internal frames. + versions of those internal frames. Also refer to ::IA2_ROLE_INTERNAL_FRAME. */ IA2_ROLE_DESKTOP_PANE, @@ -103,14 +109,14 @@ enum IA2Role { IA2_ROLE_FORM, /** Frame role. A top level window with a title bar, border, menu bar, etc. - It is often used as the primary window for an application. Also refer to - the MSAA roles of dialog, canvas, and window. + It is often used as the primary window for an application. Also refer to + ::IA2_ROLE_CANVAS and the MSAA roles of dialog and window. */ IA2_ROLE_FRAME, - /** A glass pane. A pane that is guaranteed to be painted on top of all - panes beneath it. - Also refer to ::IA2_ROLE_ROOT_PANE and MSAA's canvas role. + /** A glass pane. A pane that is guaranteed to be painted on top of all panes + beneath it. Also refer to ::IA2_ROLE_CANVAS, ::IA2_ROLE_INTERNAL_FRAME, and + ::IA2_ROLE_ROOT_PANE. */ IA2_ROLE_GLASS_PANE, @@ -139,7 +145,7 @@ enum IA2Role { /** An internal frame. A frame-like object that is clipped by a desktop pane. The desktop pane, internal frame, and desktop icon objects are often used to create multiple document interfaces within an application. - Also refer to ::IA2_ROLE_DESKTOP_ICON, ::IA2_ROLE_DESKTOP_PANE, and ::IA2_ROLE_FRAME + Also refer to ::IA2_ROLE_DESKTOP_ICON, ::IA2_ROLE_DESKTOP_PANE, and ::IA2_ROLE_FRAME. */ IA2_ROLE_INTERNAL_FRAME, @@ -150,14 +156,14 @@ enum IA2Role { in layers, providing a form of stacking order. This is usually the pane that holds the menu bar as well as the pane that contains most of the visual components in a window. - Also refer to ::IA2_ROLE_GLASS_PANE and ::IA2_ROLE_ROOT_PANE. + Also refer to ::IA2_ROLE_CANVAS, ::IA2_ROLE_GLASS_PANE, and ::IA2_ROLE_ROOT_PANE. */ IA2_ROLE_LAYERED_PANE, /// An embedded note which is not visible until activated. IA2_ROLE_NOTE, - /** A specialized pane whose primary use is inside a DIALOG. + /** A specialized pane whose primary use is inside a dialog. Also refer to MSAA's dialog role. */ IA2_ROLE_OPTION_PANE, @@ -218,6 +224,14 @@ enum IA2Role { */ IA2_ROLE_SPLIT_PANE, + /** An object that forms part of a menu system but which can be "undocked" + from or "torn off" the menu system to exist as a separate window. + */ + IA2_ROLE_TEAR_OFF_MENU, + + /// An object used as a terminal emulator. + IA2_ROLE_TERMINAL, + /// Collection of objects that constitute a logical text entity. IA2_ROLE_TEXT_FRAME, diff --git a/other-licenses/ia2/AccessibleStates.idl b/other-licenses/ia2/AccessibleStates.idl index a88ed4b1d78..bb9add61362 100644 --- a/other-licenses/ia2/AccessibleStates.idl +++ b/other-licenses/ia2/AccessibleStates.idl @@ -4,7 +4,7 @@ * * IAccessible2 IDL Specification * - * Copyright (c) IBM Corp. 2006 + * Copyright (c) IBM Corp. 2007 * Copyright (c) Sun Microsystems, Inc. 2000, 2006 * * This library is free software; you can redistribute it and/or @@ -50,11 +50,8 @@ const long IA2_STATE_HORIZONTAL = 0x10; /** Indicates this object is minimized and is represented only by an icon. */ const long IA2_STATE_ICONIFIED = 0x20; -/** Indicates an invalid state. */ -const long IA2_STATE_INVALID = 0x40; - /** Indicates an input validation failure. */ -const long IA2_STATE_INVALID_ENTRY = 0x80; +const long IA2_STATE_INVALID_ENTRY = 0x40; /** Indicates that this object manages its children. @@ -66,36 +63,36 @@ const long IA2_STATE_INVALID_ENTRY = 0x80; over all the children and add listeners. The parent object will provide state notifications regarding the state of its children. */ -const long IA2_STATE_MANAGES_DESCENDANTS = 0x100; +const long IA2_STATE_MANAGES_DESCENDANTS = 0x80; /** Indicates that an object is modal. Modal objects have the behavior that something must be done with the object before the user can interact with an object in a different window. */ -const long IA2_STATE_MODAL = 0x200; +const long IA2_STATE_MODAL = 0x100; /** Indicates this text object can contain multiple lines of text. */ -const long IA2_STATE_MULTI_LINE = 0x400; +const long IA2_STATE_MULTI_LINE = 0x200; /** Indicates this object paints every pixel within its rectangular region. */ -const long IA2_STATE_OPAQUE = 0x800; +const long IA2_STATE_OPAQUE = 0x400; /** Indicates that user interaction is required. An example of when this state is used is when a field in a form must be filled before a form can be processed. */ -const long IA2_STATE_REQUIRED = 0x1000; +const long IA2_STATE_REQUIRED = 0x800; /** Indicates an object which supports text selection. Note: This is different than MSAA STATE_SYSTEM_SELECTABLE. */ -const long IA2_STATE_SELECTABLE_TEXT = 0x2000; +const long IA2_STATE_SELECTABLE_TEXT = 0x1000; /** Indicates that this text object can contain only a single line of text. */ -const long IA2_STATE_SINGLE_LINE = 0x4000; +const long IA2_STATE_SINGLE_LINE = 0x2000; /** Indicates that the accessible object is stale. @@ -104,7 +101,7 @@ const long IA2_STATE_SINGLE_LINE = 0x4000; object is transient or when an object has been or is in the process of being destroyed. */ -const long IA2_STATE_STALE = 0x8000; +const long IA2_STATE_STALE = 0x4000; /** Indicates that the object implements autocompletion. @@ -112,12 +109,12 @@ const long IA2_STATE_STALE = 0x8000; one ore more characters and cause a sub-item to become selected. The selection may also result in events fired on the parent object. */ -const long IA2_STATE_SUPPORTS_AUTOCOMPLETION = 0x10000; +const long IA2_STATE_SUPPORTS_AUTOCOMPLETION = 0x8000; /** Indicates this object is transient. */ -const long IA2_STATE_TRANSIENT = 0x20000; +const long IA2_STATE_TRANSIENT = 0x10000; /** Indicates the orientation of this object is vertical. */ -const long IA2_STATE_VERTICAL = 0x40000; +const long IA2_STATE_VERTICAL = 0x20000; ///@} diff --git a/other-licenses/ia2/AccessibleTable.idl b/other-licenses/ia2/AccessibleTable.idl index 5f93f0001d7..9df71e809ed 100644 --- a/other-licenses/ia2/AccessibleTable.idl +++ b/other-licenses/ia2/AccessibleTable.idl @@ -61,8 +61,8 @@ typedef struct { interface IAccessibleTable : IUnknown { - /** @brief Returns the IAccessible2 object at the specified row and column in - the table. + /** @brief Returns the accessible object at the specified row and column in + the table. This object could be an IAccessible or an IAccessible2. @param [in] row The row index for which to retrieve the cell. @param [in] column @@ -70,23 +70,24 @@ interface IAccessibleTable : IUnknown @param [out] accessible If both row and column index are valid then the corresponding accessible object is returned that represents the requested cell regardless of whether - the cell is currently visible (on the screen). + the cell is currently visible (on the screen). */ [propget] HRESULT accessibleAt ( [in] long row, [in] long column, - [out, retval] IAccessible2 **accessible + [out, retval] IUnknown **accessible ); - /** @brief Returns the caption for the table. + /** @brief Returns the caption for the table. The returned object could be + an IAccessible or an IAccessible2. @param [out] accessible If the table has a caption then a reference to it is returned, else a NULL pointer is returned. */ [propget] HRESULT caption ( - [out, retval] IAccessible2 **accessible + [out, retval] IUnknown **accessible ); /** @brief Translates the given row and column indices into the corresponding child index. @@ -310,7 +311,8 @@ interface IAccessibleTable : IUnknown [out, retval] long *nRows ); - /** @brief Returns the summary description of the table. + /** @brief Returns the summary description of the table. The returned object could be + an IAccessible or an IAccessible2. @param [out] accessible Returns a reference to an implementation dependent accessible object representing the table's summary or a NULL pointer if the table @@ -318,7 +320,7 @@ interface IAccessibleTable : IUnknown */ [propget] HRESULT summary ( - [out, retval] IAccessible2 **accessible + [out, retval] IUnknown **accessible ); /** @brief Returns a boolean value indicating whether the specified column is diff --git a/other-licenses/ia2/AccessibleText.idl b/other-licenses/ia2/AccessibleText.idl index ecfbd74254f..284ae9e848c 100644 --- a/other-licenses/ia2/AccessibleText.idl +++ b/other-licenses/ia2/AccessibleText.idl @@ -4,7 +4,7 @@ * * IAccessible2 IDL Specification * - * Copyright (c) IBM Corp. 2006 + * Copyright (c) IBM Corp. 2007 * Copyright (c) Sun Microsystems, Inc. 2000, 2006 * * This library is free software; you can redistribute it and/or @@ -26,6 +26,7 @@ import "objidl.idl"; import "oaidl.idl"; import "oleacc.idl"; +import "IA2CommonTypes.idl"; /// A structure containing a substring and the start and end offsets in the enclosing string. typedef struct { @@ -34,14 +35,11 @@ typedef struct { long end; ///< Index of the character following the last character of the segment in the enclosing text. } IA2TextSegment; -enum IA2TextCoordinateType { - /// The returned coordinates are relative to the screen. - IA2_COORDTYPE_SCREEN_RELATIVE, - /// The returned coordinates are relative to the upper left corner of parent's bounding box. - IA2_COORDTYPE_PARENT_RELATIVE -}; +/** @brief Defines values to specify a text boundary type. + + If one of these is not implemented, such as IA2_TEXT_BOUNDARY_SENTENCE, S_FALSE is returned. +*/ -/// Defines values to specify a text boundary type enum IA2TextBoundaryType { IA2_TEXT_BOUNDARY_CHAR, ///< =0, IA2_TEXT_BOUNDARY_WORD, ///< Range is from start of one word to the start of another word. @@ -155,7 +153,7 @@ interface IAccessibleText : IUnknown [propget] HRESULT characterExtents ( [in] long offset, - [in] enum IA2TextCoordinateType coordType, + [in] enum IA2CoordinateType coordType, [out] long *x, [out] long *y, [out] long *width, @@ -195,7 +193,7 @@ interface IAccessibleText : IUnknown ( [in] long x, [in] long y, - [in] enum IA2TextCoordinateType coordType, + [in] enum IA2CoordinateType coordType, [out, retval] long *offset ); @@ -235,7 +233,7 @@ interface IAccessibleText : IUnknown and up to the character at endOffset (exclusive), if startOffset is less than or equal to endOffset. - NOTE: returned string may be longer than endOffset-startOffset bytes if text + Note: returned string may be longer than endOffset-startOffset bytes if text contains multi-byte characters. */ [propget] HRESULT text @@ -398,7 +396,7 @@ interface IAccessibleText : IUnknown /** @brief Returns total number of characters. - NOTE: this may be different than the total number of bytes required to store the + Note: This may be different than the total number of bytes required to store the text, if the text contains multi-byte characters. @param [out] nCharacters */ @@ -412,12 +410,37 @@ interface IAccessibleText : IUnknown 0-based character offset. @param [in] endIndex 0-based character offset - the offset of the character just past the last character of the string. - + @param [in] scrollType + Defines where the object should be placed on the screen. */ - HRESULT scrollToSubstring + HRESULT scrollSubstringTo ( [in] long startIndex, - [in] long endIndex + [in] long endIndex, + [in] enum IA2ScrollType scrollType + ); + + /** @brief Moves the top left of a substring to a specified location. + + Note: S_FALSE is returned if the object is already at the specified location. + @param [in] startIndex + 0-based character offset. + @param [in] endIndex + 0-based character offset - the offset of the character just past the last character of the string. + @param [in] coordinateType + Specifies whether the coordinates are relative to the screen or the parent object. + @param [in] x + Defines the x coordinate. + @param [in] y + Defines the y coordinate. + */ + HRESULT scrollSubstringToPoint + ( + [in] long startIndex, + [in] long endIndex, + [in] enum IA2CoordinateType coordinateType, + [in] long x, + [in] long y ); /** @brief Returns any inserted text.