[Contents] [Index] [Next] [Previous]

Menu Traversal


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:

This action must do the following:
If the component is in a vertical or 2-dimensional Menu, this action must traverse up to the previous traversable component, wrapping within the Menu if necessary, and proceeding in the order opposite to that of .
This action must do the following:
This action must do the following:

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: