зеркало из https://github.com/mozilla/gecko-dev.git
Bug 571501 - don't query accessible events internally, r=davidb, sr=neil
This commit is contained in:
Родитель
159299441a
Коммит
ea259c048f
|
@ -1177,13 +1177,12 @@ nsAccessibleWrap::FirePlatformEvent(nsAccEvent *aEvent)
|
|||
{
|
||||
MAI_LOG_DEBUG(("\n\nReceived: EVENT_TEXT_CARET_MOVED\n"));
|
||||
|
||||
nsCOMPtr<nsIAccessibleCaretMoveEvent> caretMoveEvent(do_QueryInterface(aEvent));
|
||||
nsAccCaretMoveEvent *caretMoveEvent = downcast_accEvent(aEvent);
|
||||
NS_ASSERTION(caretMoveEvent, "Event needs event data");
|
||||
if (!caretMoveEvent)
|
||||
break;
|
||||
|
||||
PRInt32 caretOffset = -1;
|
||||
caretMoveEvent->GetCaretOffset(&caretOffset);
|
||||
PRInt32 caretOffset = caretMoveEvent->GetCaretOffset();
|
||||
|
||||
MAI_LOG_DEBUG(("\n\nCaret postion: %d", caretOffset));
|
||||
g_signal_emit_by_name(atkObj,
|
||||
|
@ -1207,12 +1206,11 @@ nsAccessibleWrap::FirePlatformEvent(nsAccEvent *aEvent)
|
|||
case nsIAccessibleEvent::EVENT_TABLE_ROW_INSERT:
|
||||
{
|
||||
MAI_LOG_DEBUG(("\n\nReceived: EVENT_TABLE_ROW_INSERT\n"));
|
||||
nsCOMPtr<nsIAccessibleTableChangeEvent> tableEvent = do_QueryInterface(aEvent);
|
||||
nsAccTableChangeEvent *tableEvent = downcast_accEvent(aEvent);
|
||||
NS_ENSURE_TRUE(tableEvent, NS_ERROR_FAILURE);
|
||||
|
||||
PRInt32 rowIndex, numRows;
|
||||
tableEvent->GetRowOrColIndex(&rowIndex);
|
||||
tableEvent->GetNumRowsOrCols(&numRows);
|
||||
PRInt32 rowIndex = tableEvent->GetIndex();
|
||||
PRInt32 numRows = tableEvent->GetCount();
|
||||
|
||||
g_signal_emit_by_name(atkObj,
|
||||
"row_inserted",
|
||||
|
@ -1225,12 +1223,11 @@ nsAccessibleWrap::FirePlatformEvent(nsAccEvent *aEvent)
|
|||
case nsIAccessibleEvent::EVENT_TABLE_ROW_DELETE:
|
||||
{
|
||||
MAI_LOG_DEBUG(("\n\nReceived: EVENT_TABLE_ROW_DELETE\n"));
|
||||
nsCOMPtr<nsIAccessibleTableChangeEvent> tableEvent = do_QueryInterface(aEvent);
|
||||
nsAccTableChangeEvent *tableEvent = downcast_accEvent(aEvent);
|
||||
NS_ENSURE_TRUE(tableEvent, NS_ERROR_FAILURE);
|
||||
|
||||
PRInt32 rowIndex, numRows;
|
||||
tableEvent->GetRowOrColIndex(&rowIndex);
|
||||
tableEvent->GetNumRowsOrCols(&numRows);
|
||||
PRInt32 rowIndex = tableEvent->GetIndex();
|
||||
PRInt32 numRows = tableEvent->GetCount();
|
||||
|
||||
g_signal_emit_by_name(atkObj,
|
||||
"row_deleted",
|
||||
|
@ -1250,12 +1247,11 @@ nsAccessibleWrap::FirePlatformEvent(nsAccEvent *aEvent)
|
|||
case nsIAccessibleEvent::EVENT_TABLE_COLUMN_INSERT:
|
||||
{
|
||||
MAI_LOG_DEBUG(("\n\nReceived: EVENT_TABLE_COLUMN_INSERT\n"));
|
||||
nsCOMPtr<nsIAccessibleTableChangeEvent> tableEvent = do_QueryInterface(aEvent);
|
||||
nsAccTableChangeEvent *tableEvent = downcast_accEvent(aEvent);
|
||||
NS_ENSURE_TRUE(tableEvent, NS_ERROR_FAILURE);
|
||||
|
||||
PRInt32 colIndex, numCols;
|
||||
tableEvent->GetRowOrColIndex(&colIndex);
|
||||
tableEvent->GetNumRowsOrCols(&numCols);
|
||||
PRInt32 colIndex = tableEvent->GetIndex();
|
||||
PRInt32 numCols = tableEvent->GetCount();
|
||||
|
||||
g_signal_emit_by_name(atkObj,
|
||||
"column_inserted",
|
||||
|
@ -1268,12 +1264,11 @@ nsAccessibleWrap::FirePlatformEvent(nsAccEvent *aEvent)
|
|||
case nsIAccessibleEvent::EVENT_TABLE_COLUMN_DELETE:
|
||||
{
|
||||
MAI_LOG_DEBUG(("\n\nReceived: EVENT_TABLE_COLUMN_DELETE\n"));
|
||||
nsCOMPtr<nsIAccessibleTableChangeEvent> tableEvent = do_QueryInterface(aEvent);
|
||||
nsAccTableChangeEvent *tableEvent = downcast_accEvent(aEvent);
|
||||
NS_ENSURE_TRUE(tableEvent, NS_ERROR_FAILURE);
|
||||
|
||||
PRInt32 colIndex, numCols;
|
||||
tableEvent->GetRowOrColIndex(&colIndex);
|
||||
tableEvent->GetNumRowsOrCols(&numCols);
|
||||
PRInt32 colIndex = tableEvent->GetIndex();
|
||||
PRInt32 numCols = tableEvent->GetCount();
|
||||
|
||||
g_signal_emit_by_name(atkObj,
|
||||
"column_deleted",
|
||||
|
@ -1377,18 +1372,12 @@ nsAccessibleWrap::FireAtkStateChangeEvent(nsAccEvent *aEvent,
|
|||
{
|
||||
MAI_LOG_DEBUG(("\n\nReceived: EVENT_STATE_CHANGE\n"));
|
||||
|
||||
nsCOMPtr<nsIAccessibleStateChangeEvent> event =
|
||||
do_QueryInterface(aEvent);
|
||||
nsAccStateChangeEvent *event = downcast_accEvent(aEvent);
|
||||
NS_ENSURE_TRUE(event, NS_ERROR_FAILURE);
|
||||
|
||||
PRUint32 state = 0;
|
||||
event->GetState(&state);
|
||||
|
||||
PRBool isExtra;
|
||||
event->IsExtraState(&isExtra);
|
||||
|
||||
PRBool isEnabled;
|
||||
event->IsEnabled(&isEnabled);
|
||||
PRUint32 state = event->GetState();
|
||||
PRBool isExtra = event->IsExtraState();
|
||||
PRBool isEnabled = event->IsStateEnabled();
|
||||
|
||||
PRInt32 stateIndex = AtkStateMap::GetStateIndexFor(state);
|
||||
if (stateIndex >= 0) {
|
||||
|
@ -1419,18 +1408,12 @@ nsAccessibleWrap::FireAtkTextChangedEvent(nsAccEvent *aEvent,
|
|||
{
|
||||
MAI_LOG_DEBUG(("\n\nReceived: EVENT_TEXT_REMOVED/INSERTED\n"));
|
||||
|
||||
nsCOMPtr<nsIAccessibleTextChangeEvent> event =
|
||||
do_QueryInterface(aEvent);
|
||||
nsAccTextChangeEvent *event = downcast_accEvent(aEvent);
|
||||
NS_ENSURE_TRUE(event, NS_ERROR_FAILURE);
|
||||
|
||||
PRInt32 start = 0;
|
||||
event->GetStart(&start);
|
||||
|
||||
PRUint32 length = 0;
|
||||
event->GetLength(&length);
|
||||
|
||||
PRBool isInserted;
|
||||
event->IsInserted(&isInserted);
|
||||
PRInt32 start = event->GetStartOffset();
|
||||
PRUint32 length = event->GetLength();
|
||||
PRBool isInserted = event->IsTextInserted();
|
||||
|
||||
PRBool isFromUserInput = aEvent->IsFromUserInput();
|
||||
|
||||
|
|
|
@ -382,14 +382,10 @@ private:
|
|||
} else if (type == nsIAccessibleEvent::EVENT_DOCUMENT_RELOAD) { \
|
||||
strEventType.AssignLiteral("reload"); \
|
||||
} else if (type == nsIAccessibleEvent::EVENT_STATE_CHANGE) { \
|
||||
nsCOMPtr<nsIAccessibleStateChangeEvent> event(do_QueryObject(aEvent)); \
|
||||
PRUint32 state = 0; \
|
||||
event->GetState(&state); \
|
||||
if (state == nsIAccessibleStates::STATE_BUSY) { \
|
||||
PRBool isEnabled; \
|
||||
event->IsEnabled(&isEnabled); \
|
||||
nsAccStateChangeEvent *event = downcast_accEvent(aEvent); \
|
||||
if (event->GetState() == nsIAccessibleStates::STATE_BUSY) { \
|
||||
strEventType.AssignLiteral("busy "); \
|
||||
if (isEnabled) \
|
||||
if (event->IsStateEnabled()) \
|
||||
strEventType.AppendLiteral("true"); \
|
||||
else \
|
||||
strEventType.AppendLiteral("false"); \
|
||||
|
|
|
@ -72,7 +72,6 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
|||
|
||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsAccEvent)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIAccessibleEvent)
|
||||
NS_INTERFACE_MAP_ENTRY(nsAccEvent)
|
||||
NS_INTERFACE_MAP_ENTRY(nsISupports)
|
||||
NS_INTERFACE_MAP_END
|
||||
|
||||
|
@ -273,8 +272,7 @@ nsAccEvent::CaptureIsFromUserInput(EIsFromUserInput aIsFromUserInput)
|
|||
// nsAccReorderEvent
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
NS_IMPL_ISUPPORTS_INHERITED1(nsAccReorderEvent, nsAccEvent,
|
||||
nsAccReorderEvent)
|
||||
NS_IMPL_ISUPPORTS_INHERITED0(nsAccReorderEvent, nsAccEvent)
|
||||
|
||||
nsAccReorderEvent::nsAccReorderEvent(nsAccessible *aAccTarget,
|
||||
PRBool aIsAsynch,
|
||||
|
@ -352,6 +350,7 @@ nsAccStateChangeEvent::
|
|||
NS_IMETHODIMP
|
||||
nsAccStateChangeEvent::GetState(PRUint32 *aState)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aState);
|
||||
*aState = mState;
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -359,6 +358,7 @@ nsAccStateChangeEvent::GetState(PRUint32 *aState)
|
|||
NS_IMETHODIMP
|
||||
nsAccStateChangeEvent::IsExtraState(PRBool *aIsExtraState)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aIsExtraState);
|
||||
*aIsExtraState = mIsExtraState;
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -366,6 +366,7 @@ nsAccStateChangeEvent::IsExtraState(PRBool *aIsExtraState)
|
|||
NS_IMETHODIMP
|
||||
nsAccStateChangeEvent::IsEnabled(PRBool *aIsEnabled)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aIsEnabled);
|
||||
*aIsEnabled = mIsEnabled;
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -400,6 +401,7 @@ nsAccTextChangeEvent::
|
|||
NS_IMETHODIMP
|
||||
nsAccTextChangeEvent::GetStart(PRInt32 *aStart)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aStart);
|
||||
*aStart = mStart;
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -407,6 +409,7 @@ nsAccTextChangeEvent::GetStart(PRInt32 *aStart)
|
|||
NS_IMETHODIMP
|
||||
nsAccTextChangeEvent::GetLength(PRUint32 *aLength)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aLength);
|
||||
*aLength = mLength;
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -414,6 +417,7 @@ nsAccTextChangeEvent::GetLength(PRUint32 *aLength)
|
|||
NS_IMETHODIMP
|
||||
nsAccTextChangeEvent::IsInserted(PRBool *aIsInserted)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aIsInserted);
|
||||
*aIsInserted = mIsInserted;
|
||||
return NS_OK;
|
||||
}
|
||||
|
|
|
@ -58,14 +58,9 @@ enum EIsFromUserInput
|
|||
eAutoDetect = -1
|
||||
};
|
||||
|
||||
#define NS_ACCEVENT_IMPL_CID \
|
||||
{ /* 39bde096-317e-4294-b23b-4af4a9b283f7 */ \
|
||||
0x39bde096, \
|
||||
0x317e, \
|
||||
0x4294, \
|
||||
{ 0xb2, 0x3b, 0x4a, 0xf4, 0xa9, 0xb2, 0x83, 0xf7 } \
|
||||
}
|
||||
|
||||
/**
|
||||
* Generic accessible event.
|
||||
*/
|
||||
class nsAccEvent: public nsIAccessibleEvent
|
||||
{
|
||||
public:
|
||||
|
@ -94,8 +89,6 @@ public:
|
|||
eDoNotEmit
|
||||
};
|
||||
|
||||
NS_DECLARE_STATIC_IID_ACCESSOR(NS_ACCEVENT_IMPL_CID)
|
||||
|
||||
// Initialize with an nsIAccessible
|
||||
nsAccEvent(PRUint32 aEventType, nsAccessible *aAccessible,
|
||||
PRBool aIsAsynch = PR_FALSE,
|
||||
|
@ -122,6 +115,21 @@ public:
|
|||
nsINode* GetNode();
|
||||
nsDocAccessible* GetDocAccessible();
|
||||
|
||||
enum EventGroup {
|
||||
eGenericEvent,
|
||||
eReorderEvent,
|
||||
eStateChangeEvent,
|
||||
eTextChangeEvent,
|
||||
eCaretMoveEvent,
|
||||
eTableChangeEvent
|
||||
};
|
||||
|
||||
static const EventGroup kEventGroup = eGenericEvent;
|
||||
virtual unsigned int GetEventGroups() const
|
||||
{
|
||||
return 1U << eGenericEvent;
|
||||
}
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Get an accessible from event target node.
|
||||
|
@ -145,28 +153,26 @@ protected:
|
|||
friend class nsAccEventQueue;
|
||||
};
|
||||
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(nsAccEvent, NS_ACCEVENT_IMPL_CID)
|
||||
|
||||
|
||||
#define NS_ACCREORDEREVENT_IMPL_CID \
|
||||
{ /* f2629eb8-2458-4358-868c-3912b15b767a */ \
|
||||
0xf2629eb8, \
|
||||
0x2458, \
|
||||
0x4358, \
|
||||
{ 0x86, 0x8c, 0x39, 0x12, 0xb1, 0x5b, 0x76, 0x7a } \
|
||||
}
|
||||
|
||||
/**
|
||||
* Accessible reorder event.
|
||||
*/
|
||||
class nsAccReorderEvent : public nsAccEvent
|
||||
{
|
||||
public:
|
||||
|
||||
nsAccReorderEvent(nsAccessible *aAccTarget, PRBool aIsAsynch,
|
||||
PRBool aIsUnconditional, nsINode *aReasonNode);
|
||||
|
||||
NS_DECLARE_STATIC_IID_ACCESSOR(NS_ACCREORDEREVENT_IMPL_CID)
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
// nsAccEvent
|
||||
static const EventGroup kEventGroup = eReorderEvent;
|
||||
virtual unsigned int GetEventGroups() const
|
||||
{
|
||||
return nsAccEvent::GetEventGroups() | (1U << eReorderEvent);
|
||||
}
|
||||
|
||||
// nsAccReorderEvent
|
||||
/**
|
||||
* Return true if event is unconditional, i.e. must be fired.
|
||||
*/
|
||||
|
@ -182,9 +188,10 @@ private:
|
|||
nsCOMPtr<nsINode> mReasonNode;
|
||||
};
|
||||
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(nsAccReorderEvent, NS_ACCREORDEREVENT_IMPL_CID)
|
||||
|
||||
|
||||
/**
|
||||
* Accessible state change event.
|
||||
*/
|
||||
class nsAccStateChangeEvent: public nsAccEvent,
|
||||
public nsIAccessibleStateChangeEvent
|
||||
{
|
||||
|
@ -202,12 +209,28 @@ public:
|
|||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_DECL_NSIACCESSIBLESTATECHANGEEVENT
|
||||
|
||||
// nsAccEvent
|
||||
static const EventGroup kEventGroup = eStateChangeEvent;
|
||||
virtual unsigned int GetEventGroups() const
|
||||
{
|
||||
return nsAccEvent::GetEventGroups() | (1U << eStateChangeEvent);
|
||||
}
|
||||
|
||||
// nsAccStateChangeEvent
|
||||
PRUint32 GetState() const { return mState; }
|
||||
PRBool IsExtraState() const { return mIsExtraState; }
|
||||
PRBool IsStateEnabled() const { return mIsEnabled; }
|
||||
|
||||
private:
|
||||
PRUint32 mState;
|
||||
PRBool mIsExtraState;
|
||||
PRBool mIsEnabled;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Accessible text change event.
|
||||
*/
|
||||
class nsAccTextChangeEvent: public nsAccEvent,
|
||||
public nsIAccessibleTextChangeEvent
|
||||
{
|
||||
|
@ -220,6 +243,18 @@ public:
|
|||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_DECL_NSIACCESSIBLETEXTCHANGEEVENT
|
||||
|
||||
// nsAccEvent
|
||||
static const EventGroup kEventGroup = eTextChangeEvent;
|
||||
virtual unsigned int GetEventGroups() const
|
||||
{
|
||||
return nsAccEvent::GetEventGroups() | (1U << eTextChangeEvent);
|
||||
}
|
||||
|
||||
// nsAccTextChangeEvent
|
||||
PRInt32 GetStartOffset() const { return mStart; }
|
||||
PRUint32 GetLength() const { return mLength; }
|
||||
PRBool IsTextInserted() const { return mIsInserted; }
|
||||
|
||||
private:
|
||||
PRInt32 mStart;
|
||||
PRUint32 mLength;
|
||||
|
@ -227,6 +262,10 @@ private:
|
|||
nsString mModifiedText;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Accessible caret move event.
|
||||
*/
|
||||
class nsAccCaretMoveEvent: public nsAccEvent,
|
||||
public nsIAccessibleCaretMoveEvent
|
||||
{
|
||||
|
@ -237,24 +276,72 @@ public:
|
|||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_DECL_NSIACCESSIBLECARETMOVEEVENT
|
||||
|
||||
// nsAccEvent
|
||||
static const EventGroup kEventGroup = eCaretMoveEvent;
|
||||
virtual unsigned int GetEventGroups() const
|
||||
{
|
||||
return nsAccEvent::GetEventGroups() | (1U << eCaretMoveEvent);
|
||||
}
|
||||
|
||||
// nsAccCaretMoveEvent
|
||||
PRInt32 GetCaretOffset() const { return mCaretOffset; }
|
||||
|
||||
private:
|
||||
PRInt32 mCaretOffset;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Accessible table change event.
|
||||
*/
|
||||
class nsAccTableChangeEvent : public nsAccEvent,
|
||||
public nsIAccessibleTableChangeEvent {
|
||||
public nsIAccessibleTableChangeEvent
|
||||
{
|
||||
public:
|
||||
nsAccTableChangeEvent(nsAccessible *aAccessible, PRUint32 aEventType,
|
||||
PRInt32 aRowOrColIndex, PRInt32 aNumRowsOrCols,
|
||||
PRBool aIsAsynch);
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
NS_DECL_NSIACCESSIBLETABLECHANGEEVENT
|
||||
|
||||
// nsAccEvent
|
||||
static const EventGroup kEventGroup = eTableChangeEvent;
|
||||
virtual unsigned int GetEventGroups() const
|
||||
{
|
||||
return nsAccEvent::GetEventGroups() | (1U << eTableChangeEvent);
|
||||
}
|
||||
|
||||
// nsAccTableChangeEvent
|
||||
PRUint32 GetIndex() const { return mRowOrColIndex; }
|
||||
PRUint32 GetCount() const { return mNumRowsOrCols; }
|
||||
|
||||
private:
|
||||
PRUint32 mRowOrColIndex; // the start row/column after which the rows are inserted/deleted.
|
||||
PRUint32 mNumRowsOrCols; // the number of inserted/deleted rows/columns
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Downcast the generic accessible event object to derived type.
|
||||
*/
|
||||
class downcast_accEvent
|
||||
{
|
||||
public:
|
||||
downcast_accEvent(nsAccEvent *e) : mRawPtr(e) { }
|
||||
|
||||
template<class Destination>
|
||||
operator Destination*() {
|
||||
if (!mRawPtr)
|
||||
return nsnull;
|
||||
|
||||
return mRawPtr->GetEventGroups() & (1U << Destination::kEventGroup) ?
|
||||
static_cast<Destination*>(mRawPtr) : nsnull;
|
||||
}
|
||||
|
||||
private:
|
||||
nsAccEvent *mRawPtr;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1591,7 +1591,7 @@ nsDocAccessible::ProcessPendingEvent(nsAccEvent *aEvent)
|
|||
// Fire reorder event if it's unconditional (see InvalidateCacheSubtree
|
||||
// method) or if changed node (that is the reason of this reorder event)
|
||||
// is accessible or has accessible children.
|
||||
nsCOMPtr<nsAccReorderEvent> reorderEvent = do_QueryInterface(aEvent);
|
||||
nsAccReorderEvent *reorderEvent = downcast_accEvent(aEvent);
|
||||
if (reorderEvent->IsUnconditionalEvent() ||
|
||||
reorderEvent->HasAccessibleInReasonSubtree()) {
|
||||
nsEventShell::FireEvent(aEvent);
|
||||
|
|
|
@ -437,14 +437,14 @@ nsAccEventQueue::CoalesceReorderEventsFromSameSource(nsAccEvent *aAccEvent1,
|
|||
nsAccEvent *aAccEvent2)
|
||||
{
|
||||
// Do not emit event2 if event1 is unconditional.
|
||||
nsCOMPtr<nsAccReorderEvent> reorderEvent1 = do_QueryInterface(aAccEvent1);
|
||||
nsAccReorderEvent *reorderEvent1 = downcast_accEvent(aAccEvent1);
|
||||
if (reorderEvent1->IsUnconditionalEvent()) {
|
||||
aAccEvent2->mEventRule = nsAccEvent::eDoNotEmit;
|
||||
return;
|
||||
}
|
||||
|
||||
// Do not emit event1 if event2 is unconditional.
|
||||
nsCOMPtr<nsAccReorderEvent> reorderEvent2 = do_QueryInterface(aAccEvent2);
|
||||
nsAccReorderEvent *reorderEvent2 = downcast_accEvent(aAccEvent2);
|
||||
if (reorderEvent2->IsUnconditionalEvent()) {
|
||||
aAccEvent1->mEventRule = nsAccEvent::eDoNotEmit;
|
||||
return;
|
||||
|
@ -462,7 +462,7 @@ nsAccEventQueue::CoalesceReorderEventsFromSameTree(nsAccEvent *aAccEvent,
|
|||
nsAccEvent *aDescendantAccEvent)
|
||||
{
|
||||
// Do not emit descendant event if this event is unconditional.
|
||||
nsCOMPtr<nsAccReorderEvent> reorderEvent = do_QueryInterface(aAccEvent);
|
||||
nsAccReorderEvent *reorderEvent = downcast_accEvent(aAccEvent);
|
||||
if (reorderEvent->IsUnconditionalEvent())
|
||||
aDescendantAccEvent->mEventRule = nsAccEvent::eDoNotEmit;
|
||||
}
|
||||
|
|
|
@ -70,7 +70,7 @@ PRBool nsAccessNodeWrap::gIsEnumVariantSupportDisabled = 0;
|
|||
// Used to determine whether an IAccessible2 compatible screen reader is loaded.
|
||||
PRBool nsAccessNodeWrap::gIsIA2Disabled = PR_FALSE;
|
||||
|
||||
nsIAccessibleTextChangeEvent *nsAccessNodeWrap::gTextEvent = nsnull;
|
||||
nsAccTextChangeEvent *nsAccessNodeWrap::gTextEvent = nsnull;
|
||||
|
||||
// Pref to disallow CtrlTab preview functionality if JAWS or Window-Eyes are
|
||||
// running.
|
||||
|
|
|
@ -71,6 +71,8 @@
|
|||
typedef LRESULT (STDAPICALLTYPE *LPFNNOTIFYWINEVENT)(DWORD event,HWND hwnd,LONG idObjectType,LONG idObject);
|
||||
typedef LRESULT (STDAPICALLTYPE *LPFNGETGUITHREADINFO)(DWORD idThread, GUITHREADINFO* pgui);
|
||||
|
||||
class nsAccTextChangeEvent;
|
||||
|
||||
class nsAccessNodeWrap : public nsAccessNode,
|
||||
public nsIWinAccessNode,
|
||||
public ISimpleDOMNode,
|
||||
|
@ -186,7 +188,7 @@ protected:
|
|||
* It is used in nsHyperTextAccessibleWrap for IA2::newText/oldText
|
||||
* implementation.
|
||||
*/
|
||||
static nsIAccessibleTextChangeEvent *gTextEvent;
|
||||
static nsAccTextChangeEvent *gTextEvent;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -66,8 +66,8 @@ nsHyperTextAccessibleWrap::HandleAccEvent(nsAccEvent *aEvent)
|
|||
&instancePtr);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
NS_IF_RELEASE(gTextEvent);
|
||||
NS_IF_ADDREF(gTextEvent = downcast_accEvent(aEvent));
|
||||
|
||||
CallQueryInterface(aEvent, &gTextEvent);
|
||||
(static_cast<IUnknown*>(instancePtr))->Release();
|
||||
}
|
||||
}
|
||||
|
@ -89,26 +89,17 @@ nsHyperTextAccessibleWrap::GetModifiedText(PRBool aGetInsertedText,
|
|||
|
||||
if (!gTextEvent)
|
||||
return NS_OK;
|
||||
|
||||
PRBool isInserted;
|
||||
gTextEvent->IsInserted(&isInserted);
|
||||
|
||||
PRBool isInserted = gTextEvent->IsTextInserted();
|
||||
if (aGetInsertedText != isInserted)
|
||||
return NS_OK;
|
||||
|
||||
nsCOMPtr<nsIAccessibleEvent> event(do_QueryInterface(gTextEvent));
|
||||
|
||||
nsCOMPtr<nsIAccessible> targetAcc;
|
||||
event->GetAccessible(getter_AddRefs(targetAcc));
|
||||
nsAccessible *targetAcc = gTextEvent->GetAccessible();
|
||||
if (targetAcc != this)
|
||||
return NS_OK;
|
||||
|
||||
PRInt32 offset;
|
||||
PRUint32 length;
|
||||
|
||||
gTextEvent->GetStart(&offset);
|
||||
gTextEvent->GetLength(&length);
|
||||
*aStartOffset = offset;
|
||||
*aEndOffset = offset + length;
|
||||
*aStartOffset = gTextEvent->GetStartOffset();
|
||||
*aEndOffset = *aStartOffset + gTextEvent->GetLength();
|
||||
return gTextEvent->GetModifiedText(aText);
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче