diff --git a/accessible/atk/AccessibleWrap.cpp b/accessible/atk/AccessibleWrap.cpp index 523f615757e5..1b8b96f1b858 100644 --- a/accessible/atk/AccessibleWrap.cpp +++ b/accessible/atk/AccessibleWrap.cpp @@ -1353,9 +1353,30 @@ void a11y::ProxyEvent(ProxyAccessible* aTarget, uint32_t aEventType) { AtkObject* wrapper = GetWrapperFor(aTarget); - if (aEventType == nsIAccessibleEvent::EVENT_FOCUS) { + + switch (aEventType) { + case nsIAccessibleEvent::EVENT_FOCUS: atk_focus_tracker_notify(wrapper); atk_object_notify_state_change(wrapper, ATK_STATE_FOCUSED, true); + break; + case nsIAccessibleEvent::EVENT_DOCUMENT_LOAD_COMPLETE: + g_signal_emit_by_name(wrapper, "load_complete"); + break; + case nsIAccessibleEvent::EVENT_DOCUMENT_RELOAD: + g_signal_emit_by_name(wrapper, "reload"); + break; + case nsIAccessibleEvent::EVENT_DOCUMENT_LOAD_STOPPED: + g_signal_emit_by_name(wrapper, "load_stopped"); + break; + case nsIAccessibleEvent::EVENT_MENUPOPUP_START: + atk_focus_tracker_notify(wrapper); // fire extra focus event + atk_object_notify_state_change(wrapper, ATK_STATE_VISIBLE, true); + atk_object_notify_state_change(wrapper, ATK_STATE_SHOWING, true); + break; + case nsIAccessibleEvent::EVENT_MENUPOPUP_END: + atk_object_notify_state_change(wrapper, ATK_STATE_VISIBLE, false); + atk_object_notify_state_change(wrapper, ATK_STATE_SHOWING, false); + break; } }