mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 19:35:51 +00:00
Bug 540262 - get rid nsAccEvent static helpers, r=ginn
This commit is contained in:
parent
591464929e
commit
986bf20a6d
@ -55,11 +55,11 @@
|
||||
class nsIPresShell;
|
||||
|
||||
#define NS_ACCEVENT_IMPL_CID \
|
||||
{ /* 55b89892-a83d-4252-ba78-cbdf53a86936 */ \
|
||||
0x55b89892, \
|
||||
0xa83d, \
|
||||
0x4252, \
|
||||
{ 0xba, 0x78, 0xcb, 0xdf, 0x53, 0xa8, 0x69, 0x36 } \
|
||||
{ /* 39bde096-317e-4294-b23b-4af4a9b283f7 */ \
|
||||
0x39bde096, \
|
||||
0x317e, \
|
||||
0x4294, \
|
||||
{ 0xb2, 0x3b, 0x4a, 0xf4, 0xa9, 0xb2, 0x83, 0xf7 } \
|
||||
}
|
||||
|
||||
class nsAccEvent: public nsIAccessibleEvent
|
||||
@ -100,6 +100,12 @@ public:
|
||||
|
||||
NS_DECL_NSIACCESSIBLEEVENT
|
||||
|
||||
// nsAccEvent
|
||||
PRUint32 GetEventType() const { return mEventType; }
|
||||
EEventRule GetEventRule() const { return mEventRule; }
|
||||
PRBool IsAsync() const { return mIsAsync; }
|
||||
PRBool IsFromUserInput() const { return mIsFromUserInput; }
|
||||
|
||||
static void GetLastEventAttributes(nsIDOMNode *aNode,
|
||||
nsIPersistentProperties *aAttributes);
|
||||
|
||||
@ -121,27 +127,6 @@ private:
|
||||
static nsIDOMNode* gLastEventNodeWeak;
|
||||
|
||||
public:
|
||||
static PRUint32 EventType(nsIAccessibleEvent *aAccEvent) {
|
||||
PRUint32 eventType;
|
||||
aAccEvent->GetEventType(&eventType);
|
||||
return eventType;
|
||||
}
|
||||
static EEventRule EventRule(nsIAccessibleEvent *aAccEvent) {
|
||||
nsRefPtr<nsAccEvent> accEvent =
|
||||
nsAccUtils::QueryObject<nsAccEvent>(aAccEvent);
|
||||
return accEvent->mEventRule;
|
||||
}
|
||||
static PRBool IsAsyncEvent(nsIAccessibleEvent *aAccEvent) {
|
||||
nsRefPtr<nsAccEvent> accEvent =
|
||||
nsAccUtils::QueryObject<nsAccEvent>(aAccEvent);
|
||||
return accEvent->mIsAsync;
|
||||
}
|
||||
static PRBool IsFromUserInput(nsIAccessibleEvent *aAccEvent) {
|
||||
PRBool isFromUserInput;
|
||||
aAccEvent->GetIsFromUserInput(&isFromUserInput);
|
||||
return isFromUserInput;
|
||||
}
|
||||
|
||||
static void ResetLastInputState()
|
||||
{gLastEventFromUserInput = PR_FALSE; gLastEventNodeWeak = nsnull; }
|
||||
|
||||
|
@ -1681,19 +1681,21 @@ nsDocAccessible::FlushPendingEvents()
|
||||
if (!mWeakShell)
|
||||
break;
|
||||
|
||||
nsCOMPtr<nsIAccessibleEvent> accessibleEvent(mEventsToFire[index]);
|
||||
nsAccEvent *accEvent = mEventsToFire[index];
|
||||
|
||||
if (nsAccEvent::EventRule(accessibleEvent) == nsAccEvent::eDoNotEmit)
|
||||
if (accEvent->GetEventRule() == nsAccEvent::eDoNotEmit)
|
||||
continue;
|
||||
|
||||
nsCOMPtr<nsIAccessible> accessible;
|
||||
accessibleEvent->GetAccessible(getter_AddRefs(accessible));
|
||||
nsCOMPtr<nsIDOMNode> domNode;
|
||||
accessibleEvent->GetDOMNode(getter_AddRefs(domNode));
|
||||
PRUint32 eventType = nsAccEvent::EventType(accessibleEvent);
|
||||
PRBool isFromUserInput = nsAccEvent::IsFromUserInput(accessibleEvent);
|
||||
accEvent->GetAccessible(getter_AddRefs(accessible));
|
||||
|
||||
nsCOMPtr<nsIDOMNode> domNode;
|
||||
accEvent->GetDOMNode(getter_AddRefs(domNode));
|
||||
|
||||
PRUint32 eventType = accEvent->GetEventType();
|
||||
PRBool isFromUserInput = accEvent->IsFromUserInput();
|
||||
PRBool isAsync = accEvent->IsAsync();
|
||||
|
||||
PRBool isAsync = nsAccEvent::IsAsyncEvent(accessibleEvent);
|
||||
if (domNode == gLastFocusedNode && isAsync &&
|
||||
(eventType == nsIAccessibleEvent::EVENT_SHOW ||
|
||||
eventType == nsIAccessibleEvent::EVENT_HIDE)) {
|
||||
@ -1812,24 +1814,24 @@ nsDocAccessible::FlushPendingEvents()
|
||||
// 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(accessibleEvent);
|
||||
nsCOMPtr<nsAccReorderEvent> reorderEvent = do_QueryInterface(accEvent);
|
||||
if (reorderEvent->IsUnconditionalEvent() ||
|
||||
reorderEvent->HasAccessibleInReasonSubtree()) {
|
||||
nsAccEvent::PrepareForEvent(accessibleEvent);
|
||||
FireAccessibleEvent(accessibleEvent);
|
||||
nsAccEvent::PrepareForEvent(accEvent);
|
||||
FireAccessibleEvent(accEvent);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// The input state was previously stored with the nsIAccessibleEvent,
|
||||
// so use that state now when firing the event
|
||||
nsAccEvent::PrepareForEvent(accessibleEvent);
|
||||
FireAccessibleEvent(accessibleEvent);
|
||||
nsAccEvent::PrepareForEvent(accEvent);
|
||||
FireAccessibleEvent(accEvent);
|
||||
// Post event processing
|
||||
if (eventType == nsIAccessibleEvent::EVENT_HIDE) {
|
||||
// Shutdown nsIAccessNode's or nsIAccessibles for any DOM nodes in
|
||||
// this subtree.
|
||||
nsCOMPtr<nsIDOMNode> hidingNode;
|
||||
accessibleEvent->GetDOMNode(getter_AddRefs(hidingNode));
|
||||
accEvent->GetDOMNode(getter_AddRefs(hidingNode));
|
||||
if (hidingNode) {
|
||||
RefreshNodes(hidingNode); // Will this bite us with asynch events
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user