Bug 569653 - Investigate and fix unsafe selection changes. r=surkov

This commit is contained in:
David Bolter 2010-06-15 10:53:32 -04:00
Родитель 1fbfa52b25
Коммит fd674e7edb
1 изменённых файлов: 14 добавлений и 3 удалений

Просмотреть файл

@ -40,6 +40,7 @@
#include "nsAccessibilityService.h" #include "nsAccessibilityService.h"
#include "nsAccUtils.h" #include "nsAccUtils.h"
#include "nsDocAccessible.h"
#include "nsEventShell.h" #include "nsEventShell.h"
#include "nsIAccessibleEvent.h" #include "nsIAccessibleEvent.h"
#include "nsTextEquivUtils.h" #include "nsTextEquivUtils.h"
@ -780,8 +781,14 @@ nsHTMLSelectOptionAccessible::SelectionChangedIfOption(nsIContent *aPossibleOpti
if (!option) if (!option)
return; return;
nsEventShell::FireEvent(nsIAccessibleEvent::EVENT_SELECTION_WITHIN,
multiSelect); nsRefPtr<nsAccEvent> selWithinEvent =
new nsAccEvent(nsIAccessibleEvent::EVENT_SELECTION_WITHIN, multiSelect);
if (!selWithinEvent)
return;
option->GetDocAccessible()->FireDelayedAccessibleEvent(selWithinEvent);
PRUint32 state = nsAccUtils::State(option); PRUint32 state = nsAccUtils::State(option);
PRUint32 eventType; PRUint32 eventType;
@ -792,7 +799,11 @@ nsHTMLSelectOptionAccessible::SelectionChangedIfOption(nsIContent *aPossibleOpti
eventType = nsIAccessibleEvent::EVENT_SELECTION_REMOVE; eventType = nsIAccessibleEvent::EVENT_SELECTION_REMOVE;
} }
nsEventShell::FireEvent(eventType, option); nsRefPtr<nsAccEvent> setAddRemoveEvent =
new nsAccEvent(eventType, option);
if (setAddRemoveEvent)
option->GetDocAccessible()->FireDelayedAccessibleEvent(setAddRemoveEvent);
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////