diff --git a/accessible/src/base/nsAccessibleEventData.h b/accessible/src/base/nsAccessibleEventData.h index e03b83cea238..db591f32863d 100644 --- a/accessible/src/base/nsAccessibleEventData.h +++ b/accessible/src/base/nsAccessibleEventData.h @@ -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 accEvent = - nsAccUtils::QueryObject(aAccEvent); - return accEvent->mEventRule; - } - static PRBool IsAsyncEvent(nsIAccessibleEvent *aAccEvent) { - nsRefPtr accEvent = - nsAccUtils::QueryObject(aAccEvent); - return accEvent->mIsAsync; - } - static PRBool IsFromUserInput(nsIAccessibleEvent *aAccEvent) { - PRBool isFromUserInput; - aAccEvent->GetIsFromUserInput(&isFromUserInput); - return isFromUserInput; - } - static void ResetLastInputState() {gLastEventFromUserInput = PR_FALSE; gLastEventNodeWeak = nsnull; } diff --git a/accessible/src/base/nsDocAccessible.cpp b/accessible/src/base/nsDocAccessible.cpp index a5f8d5d63c01..8afe1c26b41b 100644 --- a/accessible/src/base/nsDocAccessible.cpp +++ b/accessible/src/base/nsDocAccessible.cpp @@ -1681,19 +1681,21 @@ nsDocAccessible::FlushPendingEvents() if (!mWeakShell) break; - nsCOMPtr accessibleEvent(mEventsToFire[index]); + nsAccEvent *accEvent = mEventsToFire[index]; - if (nsAccEvent::EventRule(accessibleEvent) == nsAccEvent::eDoNotEmit) + if (accEvent->GetEventRule() == nsAccEvent::eDoNotEmit) continue; nsCOMPtr accessible; - accessibleEvent->GetAccessible(getter_AddRefs(accessible)); - nsCOMPtr domNode; - accessibleEvent->GetDOMNode(getter_AddRefs(domNode)); - PRUint32 eventType = nsAccEvent::EventType(accessibleEvent); - PRBool isFromUserInput = nsAccEvent::IsFromUserInput(accessibleEvent); + accEvent->GetAccessible(getter_AddRefs(accessible)); + + nsCOMPtr 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 reorderEvent = do_QueryInterface(accessibleEvent); + nsCOMPtr 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 hidingNode; - accessibleEvent->GetDOMNode(getter_AddRefs(hidingNode)); + accEvent->GetDOMNode(getter_AddRefs(hidingNode)); if (hidingNode) { RefreshNodes(hidingNode); // Will this bite us with asynch events }