Index: ui/accessibility/platform/ax_platform_node_win.cc |
diff --git a/ui/accessibility/platform/ax_platform_node_win.cc b/ui/accessibility/platform/ax_platform_node_win.cc |
index ee7a4f9f8c6981ec7fe7c1d28eea79f781daa01f..6489266acb46c00af602d238ad98653b1a407d43 100644 |
--- a/ui/accessibility/platform/ax_platform_node_win.cc |
+++ b/ui/accessibility/platform/ax_platform_node_win.cc |
@@ -1007,6 +1007,15 @@ int AXPlatformNodeWin::MSAAState() { |
if (state & (1 << ui::AX_STATE_DISABLED)) |
msaa_state |= STATE_SYSTEM_UNAVAILABLE; |
+ gfx::NativeViewAccessible focus = delegate_->GetFocus(); |
+ if (focus == GetNativeViewAccessible()) |
+ data_.state |= (1 << ui::AX_STATE_FOCUSED); |
+ |
+ // On Windows, the "focus" bit should be set on certain containers, like |
+ // menu bars, when one of their children has focus. |
+ if (GetData().role == ui::AX_ROLE_MENU_BAR && focus) |
+ state->AddStateFlag(ui::AX_STATE_FOCUSED); |
+ |
return msaa_state; |
} |