bug 1164193 - emit a few more events on proxied accessibles for atk r=davidb

This commit is contained in:
Trevor Saunders 2015-05-12 16:16:10 -04:00
parent 6009cf3ce8
commit 4dd9a89a4d

View File

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