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:
.
posts its associated Pulldown Menu, unpost
the Menu system pulled down from the nearest such ancestor
CascadeButton and traverse right from that CascadeButton to the next
traversable component. If that component is a CascadeButton, post its
associated Pulldown Menu and traverse to the default entry in the Menu
or, if the Menu has no default, to the first traversable entry in the
Menu.
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:
should unpost the entire Menu system.
should unpost the entire Menu system.
must either
dismiss the Menu and move the location cursor to the CascadeButton
used to pull down the Menu, or unpost the entire Menu system.
must unpost the Menu system.
,
, or
is used
to unpost an entire Menu system and an explicit focus policy is in
use, the location cursor must be moved back to the component that had
it before the Menu system was posted.