summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--views/accessibility/accessibility_types.h1
-rw-r--r--views/accessibility/view_accessibility.cc2
-rw-r--r--views/controls/menu/menu_scroll_view_container.cc2
-rw-r--r--views/controls/menu/submenu_view.cc18
-rw-r--r--views/controls/menu/submenu_view.h3
5 files changed, 22 insertions, 4 deletions
diff --git a/views/accessibility/accessibility_types.h b/views/accessibility/accessibility_types.h
index eccf14f..4470344 100644
--- a/views/accessibility/accessibility_types.h
+++ b/views/accessibility/accessibility_types.h
@@ -57,6 +57,7 @@ class AccessibilityTypes {
ROLE_GRAPHIC,
ROLE_GROUPING,
ROLE_LINK,
+ ROLE_MENUBAR,
ROLE_MENUITEM,
ROLE_MENUPOPUP,
ROLE_OUTLINE,
diff --git a/views/accessibility/view_accessibility.cc b/views/accessibility/view_accessibility.cc
index 4a9c0b3..5ed0c99 100644
--- a/views/accessibility/view_accessibility.cc
+++ b/views/accessibility/view_accessibility.cc
@@ -809,6 +809,8 @@ int32 ViewAccessibility::MSAARole(AccessibilityTypes::Role role) {
return ROLE_SYSTEM_GROUPING;
case AccessibilityTypes::ROLE_LINK:
return ROLE_SYSTEM_LINK;
+ case AccessibilityTypes::ROLE_MENUBAR:
+ return ROLE_SYSTEM_MENUBAR;
case AccessibilityTypes::ROLE_MENUITEM:
return ROLE_SYSTEM_MENUITEM;
case AccessibilityTypes::ROLE_MENUPOPUP:
diff --git a/views/controls/menu/menu_scroll_view_container.cc b/views/controls/menu/menu_scroll_view_container.cc
index ff7ff22..afdcc16 100644
--- a/views/controls/menu/menu_scroll_view_container.cc
+++ b/views/controls/menu/menu_scroll_view_container.cc
@@ -270,7 +270,7 @@ gfx::Size MenuScrollViewContainer::GetPreferredSize() {
bool MenuScrollViewContainer::GetAccessibleRole(
AccessibilityTypes::Role* role) {
DCHECK(role);
- *role = AccessibilityTypes::ROLE_MENUPOPUP;
+ *role = AccessibilityTypes::ROLE_MENUBAR;
return true;
}
diff --git a/views/controls/menu/submenu_view.cc b/views/controls/menu/submenu_view.cc
index ba40933..a6e48d5 100644
--- a/views/controls/menu/submenu_view.cc
+++ b/views/controls/menu/submenu_view.cc
@@ -124,6 +124,11 @@ void SubmenuView::DidChangeBounds(const gfx::Rect& previous,
SchedulePaint();
}
+bool SubmenuView::GetAccessibleRole(AccessibilityTypes::Role* role) {
+ *role = AccessibilityTypes::ROLE_MENUPOPUP;
+ return true;
+}
+
void SubmenuView::PaintChildren(gfx::Canvas* canvas) {
View::PaintChildren(canvas);
@@ -229,7 +234,9 @@ void SubmenuView::ShowAt(gfx::NativeWindow parent,
host_->ShowMenuHost(do_capture);
GetScrollViewContainer()->NotifyAccessibilityEvent(
- AccessibilityTypes::EVENT_MENUPOPUPSTART);
+ AccessibilityTypes::EVENT_MENUSTART);
+
+ NotifyAccessibilityEvent(AccessibilityTypes::EVENT_MENUPOPUPSTART);
return;
}
@@ -241,7 +248,9 @@ void SubmenuView::ShowAt(gfx::NativeWindow parent,
host_->Init(parent, bounds, scroll_view_container_, do_capture);
GetScrollViewContainer()->NotifyAccessibilityEvent(
- AccessibilityTypes::EVENT_MENUPOPUPSTART);
+ AccessibilityTypes::EVENT_MENUSTART);
+
+ NotifyAccessibilityEvent(AccessibilityTypes::EVENT_MENUPOPUPSTART);
}
void SubmenuView::Reposition(const gfx::Rect& bounds) {
@@ -251,8 +260,10 @@ void SubmenuView::Reposition(const gfx::Rect& bounds) {
void SubmenuView::Close() {
if (host_) {
+ NotifyAccessibilityEvent(AccessibilityTypes::EVENT_MENUPOPUPEND);
+
GetScrollViewContainer()->NotifyAccessibilityEvent(
- AccessibilityTypes::EVENT_MENUPOPUPEND);
+ AccessibilityTypes::EVENT_MENUEND);
host_->DestroyMenuHost();
host_ = NULL;
@@ -302,6 +313,7 @@ MenuScrollViewContainer* SubmenuView::GetScrollViewContainer() {
std::wstring accessible_name;
GetMenuItem()->GetAccessibleName(&accessible_name);
scroll_view_container_->SetAccessibleName(accessible_name);
+ SetAccessibleName(accessible_name);
}
return scroll_view_container_;
}
diff --git a/views/controls/menu/submenu_view.h b/views/controls/menu/submenu_view.h
index 85cf95bc..263f988 100644
--- a/views/controls/menu/submenu_view.h
+++ b/views/controls/menu/submenu_view.h
@@ -58,6 +58,9 @@ class SubmenuView : public View {
virtual void DidChangeBounds(const gfx::Rect& previous,
const gfx::Rect& current);
+ // Override from View.
+ virtual bool GetAccessibleRole(AccessibilityTypes::Role* role);
+
// Painting.
void PaintChildren(gfx::Canvas* canvas);