[ Previous | Next | Contents | Glossary | Home | Search ]
Motif and CDE 2.1 Style Guide Reference


Navigation (CDE)

Reference

Description

Navigation is the movement of pointers and cursors within the interface to indicate where actions should occur.

Guidelines

Required
When the keyboard focus policy is explicit, allow the user to press the SELECT button on a component to move focus to it, except for components, such as scroll bars, that are used to adjust the size and location of other elements.

Required
When the pointer is on a menu, allow the user to press the SELECT button to activate the menu in a spring-loaded manner.

Required
When the pointer is on an element with an inactive pop-up menu and the context of the element allows the pop-up menu to be displayed, allow the user to press the MENU button to activate the pop-up menu in a spring-loaded manner.

Required
If the user takes an action to display a pop-up menu, and a menu can be displayed for both an inner element and an outer element that contains the inner element, display the pop-up menu for the internal element. Be sure that the pop-up menu for an internal element is always accessible.

Required
Once a pop-up menu is displayed, make the MENU button behave just as the SELECT button does for any menu system.

Required
Make the SELECT button available from within posted pop-up menus. It should behave just as in any menu system.

Required
When a menu is popped up or pulled down, place the location cursor on the menu's default entry or on the first entry in the menu, if there is no default entry.

Required
Remove a spring-loaded menu system when the mouse button that activated it is released, except when the button is released on a cascading button in the menu hierarchy.

Required
While a spring-loaded menu is popped up or pulled down, moving the pointer within the menu system moves the location cursor to track the pointer.

Required
When a spring-loaded menu is popped up or pulled down and the pointer rests on a cascading button, pull down the associated menu and make it traverse. Remove the associated menu, possibly after a short delay, when the pointer moves to a menu item outside of the menu or its cascading button.

Required
When a spring-loaded menu that is part of the menu bar is pulled down, moving the pointer to any other element on the menu bar unposts the current menu system and posts the pull-down menu associated with the new element.

Required
When a spring-loaded menu is popped up or pulled down, and the button that activated the menu system is released within a component in the menu system, activate that component. If the release is on a cascading button or an option button, activate the associated menu in a posted manner if it was not posted prior to the associated button press.

Required
When the pointer is in an area with a pop-up menu, allow the user to click the MENU button to activate the menu in a posted manner if it was not posted prior to clicking the MENU button.

Required
Once a pull-down or option menu is displayed, pressing the SELECT button in the menu system causes the menu to behave as a spring-loaded menu. This allows the user to switch easily between using a posted menu and a spring-loaded menu.

Required
If a button press unposts a menu and that button press is not also passed to the underlying component, do not pass subsequent events up to and including the button release to the underlying component.

When a button press unposts a menu, the press can be passed to the underlying component. Whether or not it is passed to the underlying component, the press can have additional effects, such as raising and giving focus to the underlying window. If the press is not passed to the underlying component, events up to and including the release must not be passed to that component.

Required
Once a pop-up menu is displayed, pressing the SELECT button or pressing the MENU button in the menu system causes the menu to behave as a spring-loaded menu.

Optional
Pressing or clicking the MENU button on a menu-bar item displays the menu.

Required
Pressing or clicking the MENU button on an option button displays the option menu.

Required
Pressing the SELECT button on a text field causes the text cursor to be inserted at the mouse cursor position.

Required
In a text component, display the text cursor differently when it has keyboard focus than when it does not. In a text component, the text cursor serves as the location cursor and, therefore, must indicate whether the component has keyboard focus.

Required
If a text component indicates that it has lost the keyboard focus by hiding the text cursor and if the component subsequently regains the focus, the cursor should reappear at the same position it had when the component lost focus. The text cursor should not change position when a text component loses and then gains keyboard focus.

Required
In a small component, such as a sash, indicate that it has keyboard focus by filling it. No other meaning should be associated with the filled state.

Required
Pressing Ctrl Tab moves the location cursor to the next field, and pressing Ctrl Shift Tab moves the location cursor to the previous field. Unless Tab and Shift Tab are used for internal navigation within a field, pressing Tab also moves the location cursor to the next field, and pressing Shift Tab also moves the location cursor to the previous field.

Required
Pressing Tab (if not used for internal navigation) or Ctrl Tab moves the location cursor forward through fields in a window according to the following rules:

  1. If the next field is a control, pressing Tab (if not used for internal navigation) or Ctrl Tab moves the location cursor to that control.

  2. If the next field is a group, pressing Tab (if not used for internal navigation) or Ctrl Tab moves the location cursor to a traversable component within the group.

  3. If the next field contains no traversable components, pressing Tab (if not used for internal navigation) or Ctrl Tab skips the field.

  4. Required
    Pressing Shift Tab (if not used for internal navigation) or Ctrl Shift Tab moves the location cursor backward through fields in the order opposite to that of Tab (if not used for internal navigation) and Ctrl Tab.

    Required
    When a window acquires focus, place the location cursor on the control that last had focus in the window, providing that all the following conditions are met:

    1. The window uses an explicit keyboard focus policy.

    2. The window acquires the focus through keyboard navigation or through a button press other than within the client area of the window.

    3. The window had the focus at some time in the past.

    4. The control that last had focus in the window is still traversable.

    5. Required
      Wrap field navigation between the first and last fields in the window.

      Required
      When V and ^ are used for component navigation within a field, they should behave according to the following rules:

      1. In a left-to-right language environment, pressing V moves the location cursor through all traversable controls in the field, starting at the upper left and ending at the lower right, then wrapping to the upper left. If the controls are aligned in a matrix-like arrangement, V first traverses one column from top to bottom, then traverses the column to its right, and so on. In a right-to-left language environment, pressing V moves the location cursor through all traversable controls, starting at the upper right and ending at the lower left.

      2. Pressing ^ moves the location cursor through all traversable controls in the field in the order opposite to that of V.

      3. Required
        When > and < are used for component navigation within a field, they should behave according to the following rules:

        1. In a left-to-right language environment, pressing > moves the location cursor through all traversable controls in the field, starting at the upper left and ending at the lower right, then wrapping to the upper left. If the controls are aligned in a matrix-like arrangement, > first traverses one row from left to right, then traverses the row below it, and so on. In a right-to-left language environment, pressing > moves the location cursor through all traversable controls, starting at the lower left and ending at the upper right.

        2. Pressing < moves the location cursor through all traversable controls in the field in the order opposite to that of >.

        3. Required
          If a control uses > and < for internal navigation, pressing Begin moves the location cursor to the leftmost edge of the data or the leftmost element in a left-to-right language environment. In a right-to-left language environment, pressing Begin moves the location cursor to the rightmost edge of the data or the rightmost element.

          Required
          If a control uses > and < for internal navigation, pressing End moves the location cursor to the rightmost edge of the data or the rightmost element in a left-to-right language environment. In a right-to-left language environment, pressing End moves the location cursor to the leftmost edge of the data or the leftmost element.

          Required
          If a control uses V and ^ for internal navigation, pressing Ctrl Begin moves the location cursor to one of the following:

          1. The first element

          2. The topmost edge of the data

          3. In a left-to-right language environment, the topmost left edge of the data; in a right-to-left language environment, the topmost right edge of the data

          4. Required
            If a control uses V and ^ for internal navigation, pressing Ctrl End moves the location cursor to one of the following:

            1. The last element

            2. The bottommost edge of the data

            3. In a left-to-right language environment, the bottommost right edge of the data; in a right-to-left language environment, the bottommost left edge of the data

            4. Optional
              Each time a new window is opened, place keyboard focus in the first field or location within the window or in a default location, if this is appropriate for the particular window.

              Required
              Pressing Tab key moves input focus between push buttons within a group.

              Required
              The Ctrl, Shift, and Alt keys should modify only the function of other keys or key combinations.

              Optional
              Pressing Alt only to provides access to mnemonics.

              Required
              If the user traverses to a menu while the keyboard focus policy is implicit, temporarily change the focus policy to explicit and revert to implicit whenever the user traverses out of the menu system.

              Menus must always be traversable, even when the keyboard focus policy is generally implicit.

              Required
              Pressing F10 activates the menu bar-system if it is inactive and the location cursor is placed on the first traversable cascading button in the menu bar. If there are no traversable cascading buttons, the key should do nothing.

              Required
              When the keyboard focus is in an element with an inactive pop-up menu and the context of the element allows the pop-up menu to be displayed, pressing menu activates the pop-up menu and places the location cursor on the default item of the menu or on the first traversable item in the pop-up menu, if there is no default item.

              Required
              When the keyboard focus is in an option button, pressing Select or Spacebar displays the option menu and places location cursor on the previously selected item in the option menu; or, if the option menu has been pulled down for the first time, places the location cursor on the default item in the menu. If there is an active option menu, pressing Return, Select, or Spacebar selects the current item in the option menu, unposts the menu system, and returns the location cursor to the option button.

              Required
              Pressing V, ^, <, and > traverses through the items in a menu system.

              Required
              When a menu traversal action traverses to the next or previous component in a menu or menu bar, the order of traversal and the wrapping behavior should be the same as that of the corresponding component navigation action within a field.

              Required
              If your application uses any two-dimensional menus, do not include any cascading buttons. Cascading buttons in a two-dimensional menu restricts the user's ability to use the keyboard to navigate to all of the elements of the menu.

              Required
              When focus is on a component in a menu or menu-bar system, pressing V behaves in the following way:

              1. If the component is in a vertical or two-dimensional menu, pressing V traverses down to the next traversable component, wrapping the component within the menu if necessary.

              2. If the component is in a menu bar, and the component with the keyboard focus is a cascading button, pressing V displays its associated pull-down menu and traverses to the default entry in the menu or, if the menu has no default, to the first traversable entry in the menu.

              3. Required
                When focus is on a component in a menu or menu-bar system, pressing ^ behaves in the following way:

                1. If the component is in a vertical or two-dimensional menu, pressing ^ traverses up to the previous traversable component, wrapping within the menu if necessary, and proceeds in the order opposite to that of pressing V.

                2. Required
                  When focus is on a component in a menu or menu-bar system, pressing < behaves in the following way:

                  1. If the component is in a menu bar or two-dimensional menu, but not at the left edge, pressing < traverses left to the previous traversable component.

                  2. If the component is at the left edge of a menu bar, pressing < wraps within the menu bar.

                  3. If the component is at the left edge of a vertical or two-dimensional menu that is the child of a vertical or two-dimensional menu, pressing < unposts the current menu and traverses to the parent cascading button.

                  4. If the component is at the left edge of a vertical or two-dimensional menu that is the child of a menu bar, pressing < unposts the current menu and traverses left to the previous traversable entry in the menu bar. If that entry is a cascading button, pressing < posts its associated pull-down menu and traverses to the default entry in the menu or, if the menu has no default, to the first traversable entry in the menu.

                  5. Required
                    When focus is on a component in a menu or menu-bar system, pressing > behaves in the following way:

                    1. If the component is a cascading button in a vertical menu, pressing > displays its associated pull-down menu and traverses to the default entry in the menu or, if the menu has no default, to the first traversable entry in the menu.

                    2. If the component is in a menu bar or two-dimensional menu, but not at the right edge, pressing > traverses right to the next traversable component.

                    3. If the component is at the right edge of a menu bar, pressing > wraps within the menu bar.

                    4. If the component is not a cascading button and is at the right edge of a vertical or two-dimensional menu, and if the current menu has an ancestor cascading button (typically in a menu bar) from which pressing V displays its associated pull-down menu, pressing > unposts the menu system pulled down from the nearest such ancestor cascading button and traverses right from that cascading button to the next traversable component. If that component is a cascading button, pressing > displays its associated pull-down menu and traverses to the default entry in the menu or, if the menu has no default, to the first traversable entry in the menu.

                    5. Required
                      Allow all menu traversal actions, with the exception of menu posting, to traverse to tear-off buttons in the same way as for other menu entries. Traversal of tear-off buttons needs to be consistent with traversal of other menu items.

                      Required
                      If your application uses F10, Menu, or Cancel to unpost an entire menu system and an explicit focus policy is in use, move the location cursor back to the component that had it before the menu system was posted.

                      Required
                      Any scrollable components within your application should support the appropriate navigation and scrolling operations. The page navigation keys Page Up, Page Down, Control Page Up (for Page Left), and Control Page Down (for Page Right) scroll the visible region by a page increment. The user needs to be able to view and access the entire contents of a scrollable component.

                      Required
                      When scrolling by a page, leave at least one unit of overlap between the old and new pages.

                      Required
                      Any keyboard operation that moves the cursor to or in the component, or that inserts, deletes, or modifies items at the cursor location should scroll the component so that the cursor is visible when the operation is complete. The user needs to be able to see the results of moving the location cursor or the effects of operating on the contents of the scrollable component.

                      Required
                      If a mouse-based scrolling action is in progress, pressing Cancel cancels the scrolling action and returns the scrolling device to its state prior to the start of the scrolling operation.

                      Essential Related Topics

                      For more information, see the Input Focus, Internal Navigation, and Menu (Control) reference pages.

                      Supplemental Related Topics

                      For more information, see the Keyboard (Device) and Mouse (Device) reference pages.


                      [ Previous | Next | Contents | Glossary | Home | Search ]