Fix for bug 376753 - Allow QueryInterface to IA2 witout crashing, patches=aaronlev, me, r=me, aaronlev

This commit is contained in:
surkov.alexander@gmail.com 2007-04-07 20:58:08 -07:00
parent 62e9e4e11b
commit 1b6304ffb1
15 changed files with 161 additions and 185 deletions

View File

@ -76,6 +76,7 @@ MIDL_ENUMS = \
AccessibleEventId.idl \
AccessibleRole.idl \
AccessibleStates.idl \
IA2CommonTypes.idl \
$(NULL)
EXPORTS = \

View File

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

View File

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

View File

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

View File

@ -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
};

View File

@ -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 },

View File

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

View File

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

View File

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

View File

@ -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
};

View File

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

View File

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

View File

@ -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;
///@}

View File

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

View File

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