The Menu traversal model is different from the field traversal model. This allows Menus to be traversable even when the focus policy is implicit. If a Menu is traversed to while the focus policy in the application is implicit, the focus policy must temporarily change to explicit. The focus policy must revert to implicit whenever the user traverses out of the Menu system.
Traversing to a Menu system is the same as
activating the Menu system. If the MenuBar is inactive, must traverse to, or activate, the MenuBar
system. The location cursor must be placed on the first traversable
CascadeButton in the MenuBar. If there are no traversable CascadeButtons in the MenuBar,
must do nothing. Note that
is used on
systems where
is not available.
If the keyboard focus is on an element with an inactive Popup Menu and the context of the
element allows a Popup Menu to be displayed, must post (activate) the Popup Menu. The
location cursor must be placed on the default item of the Menu, or the
first traversable item if there is no default item. Note that the
availability of the Popup Menu can depend on the location of the
cursor within the element, the contents of the element, or the
selection state of the element. Menus popped up from the keyboard
should be in the context of the insertion position of the element with
the location cursor. If there are no traversable items in the Popup
Menu, it is up to the system and the application whether to post the
Menu or not. Note that
is used on systems where
is not available.
If the keyboard focus is in an OptionButton, [Select] or
must post the Option Menu. The location
cursor must be placed on the previously selected item in the
Option Menu. If the Option Menu is pulled down for the first time, the
location cursor must be placed on the default item in the Menu. If
there are no traversable items in the Option Menu, the application
should decide whether to post the Menu or not. If there is an active
Option Menu, [Enter],
, [Select], or
must select the current item in the Option
Menu, unpost the active Option Menu system, and return the location
cursor to the OptionButton.
Once a Menu system is posted, the Menu items can be traversed using
,
,
, and
. A posted
Menu system behaves somewhat like a field, with the addition of
traversing among Menus in the system. When a Menu traversal action
traverses to the next or previous component in a Menu or MenuBar, the
order of traversal and the wrapping behavior must be the same as that
of the corresponding component navigation action within a field, as
described in Component
Navigation.
Two-dimensional Menus must not contain CascadeButtons.
The following Menu traversal behavior must be supported:
For all Menu traversal actions, when the Menu is first posted, traversal should go to the second traversable entry in the Menu if the Menu has no default and the first traversable entry is a TearOffButton. Subsequent traversal actions must traverse to the TearOffButton in the same way as for other Menu entries.
The user can use keyboard actions to exit a Menu or a Menu system in the following way: