3-1
- When the keyboard focus policy is explicit, pressing BSelect on a
component moves focus to it, except for components, such as ScrollBars,
that are used to adjust the size and location of other elements (Mouse-Based Navigation).
BSelect provides a convenient mechanism for using
the mouse to move focus when the keyboard focus policy is explicit.
3-2
- When the pointer is on a Menu, your application uses BSelect Press
to activate the Menu in a spring-loaded manner (Mouse-Based Navigation).
A spring-loaded Menu is one that appears when the user presses a
mouse button, remains on the screen for as long as the button is
pressed, and disappears when the user releases the button.
BSelect, the first mouse button, provides a means of activating
spring-loaded Menus that is consistent across applications.
3-3
- When the pointer is in an element with an inactive Popup Menu and the
context of the element allows the Popup Menu to be displayed, your
application uses BMenu Press to activate the Popup Menu in a
spring-loaded manner (Mouse-Based Navigation).
The availability of a Popup Menu can depend on the location of the
pointer within an element, the contents of an element, or the selection
state of an element.
BMenu, the third mouse button, provides a consistent means of activating a spring-loaded Popup Menu.
3-4
- If the user takes an action to post a Popup Menu, and a Menu can be
posted for both an inner element and an outer element that contains the
inner element, the Popup Menu for the internal element is posted
(Mouse-Based Navigation).
This specification ensures that the Popup Menu for an internal
element is always accessible.
3-5
- Once a Popup Menu is posted, BMenu behaves just as BSelect
does for any Menu system (Mouse-Based Navigation).
The specified operation of BMenu is for manipulating Popup Menus.
3-6
- BSelect is also available from within posted Popup Menus and
behaves just as in any Menu system (Mouse-Based Navigation).
Once a Popup Menu is posted, the user can select an element from it
using the standard selection mechanism, BSelect.
3-7
- When a Menu is popped up or pulled down in a posted manner, your
application places the location cursor on the Menu's default entry, or
on the first entry in the Menu if there is no default entry (Mouse-Based Navigation).
A posted Menu remains visible until it is explicitly unposted.
Placing the location cursor on the default entry allows the user to
select the default operation easily.
When there is no default entry, placing the location cursor on the first
entry yields uniform behavior across applications.
3-8
- Your application removes a spring-loaded Menu system when the mouse
button that activated it is released, except when the button is released
on a CascadeButton in the Menu hierarchy (Mouse-Based Navigation).
The concept of a spring-loaded Menu system requires that the Menu
disappear when the mouse button is released.
3-9
- While a spring-loaded Menu system is popped up or pulled down, moving
the pointer within the Menu system moves the location cursor to track
the pointer (Mouse-Based Navigation).
Once a spring-loaded Menu system has appeared on the screen, the user
needs to be able to maneuver the location cursor through the Menu system
using the mouse.
3-10
- When a spring-loaded Menu system is popped up or pulled down and the
pointer rests on a CascadeButton, the associated Menu is pulled down and
becomes traversable.
The associated Menu is removed, possibly after a short delay, when the
pointer moves to a Menu item outside of the Menu or its CascadeButton
(Mouse-Based Navigation).
The user needs to be able to use the mouse to access all of the
associated Menus of a Menu system.
This feature allows the user to move quickly to any Menu in a Menu
system.
3-11
- When a spring-loaded Menu system that is part of the MenuBar is pulled
down, moving the pointer to any other element on the MenuBar unposts the
current Menu system and posts the Pulldown Menu associated with the new
element (Mouse-Based Navigation).
This feature of a spring-loaded Menu system allows the user to browse
quickly through all of the Menus attached to a MenuBar.
3-12
- When a spring-loaded Menu system is popped up or pulled down, and the
button that activated the Menu system is released within a component in
the Menu system, that component is activated.
If the release is on a CascadeButton or an OptionButton,
the associated Menu is activated in a posted manner if it was
not posted prior to the associated button press (Mouse-Based Navigation).
Releasing the mouse button that activated a spring-loaded Menu
provides a means of activating a Menu element that is consistent across
applications.
3-13
- When the pointer is in an area with a Popup Menu, your application uses
BMenu Click to activate the Menu in a posted manner if it was
not posted prior to the BMenu Click (Mouse-Based Navigation).
BMenu Click provides a means of posting a Popup Menu that is
consistent across applications.
3-14
- Once a Pulldown or Option Menu is posted, BSelect Press in the
Menu system causes the Menu to behave as a spring-loaded Menu (Mouse-Based Navigation).
This feature of a posted Pulldown or Option Menu allows the user to
switch easily between using a posted Menu and a spring-loaded Menu.
3-15
- If a button press unposts a Menu and that button press is not also
passed to the underlying component, subsequent events up to and
including the button release are not passed to the underlying component
(Mouse-Based Navigation).
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.
3-16
- Once a Popup Menu is posted, BSelect Press or BMenu Press in
the Menu system causes the Menu to behave as a spring-loaded Menu
(Mouse-Based Navigation).
This feature of a posted Popup Menu allows the user to switch easily
between using a posted Menu and a spring-loaded Menu.
3-17
- In a Text component, the text cursor is shown differently when the
component does and does not have the keyboard focus (Location Cursor).
In a Text component, the text cursor serves as the location cursor
and therefore must indicate whether or not the component has keyboard
focus.
3-18
- 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 reappears at the same position it had when the
component lost focus (Location Cursor).
To ensure predictability, it is important that the text cursor not
change position when a Text component loses and then regains the
keyboard focus.
3-19
- If a small component, such as a Sash, indicates that it has the keyboard
focus by filling, no other meaning is associated with the filled state
(Location Cursor).
This rule reduces possible confusion about the significance of
filling in a small component.
3-20
- All components are designed and positioned within your application so
that adding and removing each component's location cursor do not change
the amount of space that the component takes up on the screen (Location Cursor).
For visual consistency, the sizes and positions of components should
not change when keyboard focus moves from one component to another.
3-21
moves the location cursor to the next field, and
moves the location cursor to the previous field.
Unless
and
are used for internal navigation within a field,
also moves the location cursor to the next field, and
also moves the location cursor to the previous field (Component Navigation).
These keys provide a consistent means of navigating among
fields in a window.
3-22
(if not used for internal navigation) and
move the location cursor forward through fields in a window according to
the following rules (Component Navigation):
- If the next field is a control,
(if not used for internal navigation) and
move the location cursor to that control.
- If the next field is a group,
(if not used for internal navigation) and
move the location cursor to a traversable component within the group.
- If the next field contains no traversable components,
(if not used for internal navigation) and
skip the field.
These rules ensure the consistent operation of
(if not used for internal navigation) and
across applications.
3-23
(if not used for internal navigation) and
move the location cursor backward through fields in the order opposite
to that of
(if not used for internal navigation) and
(Component Navigation).
These rules result in the uniform operation of
(if not used for internal navigation) and
across applications.
3-24
- When a window acquires focus, the location cursor is placed on the
control that last had focus in the window, providing that all the
following conditions are met (Component Navigation):
- The window uses an explicit keyboard focus policy.
- The window acquires the focus through keyboard navigation or through a
button press other than within the client area of the window.
- The window had the focus at some time in the past.
- The control that last had focus in the window is still traversable.
This rule ensures that when the user returns to a window after
navigating away, the focus returns to the component where the user left
it.
3-25
- Field navigation wraps between the first and last fields in the window.
(Component Navigation).
This feature of field navigation provides the user with a convenient
way to move through all of the fields in a window.
3-26
- When
and
are used for component navigation within a field, they behave according
to the following rules (Component Navigation):
- In a left-to-right language environment,
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 column from top to bottom, then traverses the column
to its right, and so on.
In a right-to-left language environment,
moves the location cursor through all traversable controls, starting at
the upper right and ending at the lower left.
-
moves the location cursor through all traversable controls in the field
in the order opposite to that of
.
These rules ensure a consistent means of navigating among components
using the directional keys.
3-27
- When
and
are used for component navigation within a field, they behave according
to the following rules (Component Navigation):
- In a left-to-right language environment,
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,
moves the location cursor through all traversable controls, starting at
the lower left and ending at the upper right.
-
moves the location cursor through all traversable controls in the field
in the order opposite to that of
.
These rules ensure a consistent means of navigating among components
using the directional keys.
3-28
- If a control uses
and
for internal navigation,
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,
moves the location cursor to the rightmost edge of the data or the
rightmost element (Component Navigation).
This rule permits convenient navigation to the left or right edge of
the data or the left or right element in a control.
3-29
- If a control uses
and
for internal navigation,
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,
moves the location cursor to the leftmost edge of the data or the
leftmost element (Component Navigation).
This rule permits convenient navigation to the left or right edge of
the data or the left or right element in a control.
3-30
- If a control uses
and
for internal navigation,
moves the location cursor to one of the following (Component Navigation):
- The first element
- The topmost edge of the data
- 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
This rule permits convenient navigation to the beginning of the data
in a control.
3-31
- If a control uses
and
for internal navigation,
moves the location cursor to one of the following (Component Navigation):
- The last element
- The bottommost edge of the data
- 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
This rule permits convenient navigation to the end of the data in a
control.
3-32
- If the user traverses to a Menu while the keyboard focus policy is
implicit, the focus policy temporarily changes to explicit and reverts
to implicit whenever the user traverses out of the Menu system (Menu Traversal).
Menus must always be traversable, even when the keyboard focus policy
is generally implicit.
3-33
- Your application uses
to activate the MenuBar system if it is inactive.
The location cursor is placed on the first traversable CascadeButton in
the MenuBar.
If there are no traversable CascadeButtons, the key does nothing
(Menu Traversal).
provides a consistent means of traversing to the MenuBar using the
keyboard.
3-34
- When the keyboard focus is in an element with an inactive Popup Menu and
the context of the element allows the Popup Menu to be displayed, your
application uses
to activate the Popup Menu.
The location cursor is placed on the default item of the Menu, or on the
first traversable item in the Popup Menu if there is no default item
(Menu Traversal).
provides a uniform way of activating a Popup Menu from the keyboard.
3-35
- When the keyboard focus is in an OptionButton, your application uses
[Select]
or
to post the Option Menu.
The location cursor is placed on the previously selected item in the
Option Menu; or, if the Option Menu has been pulled down for the first
time, the location cursor is placed on the default item in the Menu.
If there is an active Option Menu,
[Enter],
,
[Select],
or
selects the current item in the Option Menu, unposts the Menu system, and
returns the location cursor to the OptionButton (Menu Traversal).
These keys provide a means of posting an Option Menu from the
keyboard that is consistent across applications.
3-36
- Your application uses
,
,
,
and
to traverse through the items in a Menu system (Menu Traversal).
The
,
,
,
and
directional keys
provide a consistent means of navigating among items
in a Menu system.
3-37
- 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
are the same as that of the corresponding component navigation action
within a field, as described in Component Navigation (Menu Traversal).
This specification provides consistency between Menu traversal and
component navigation within a field.
3-38
- If your application uses any 2-dimensional Menus, they do not contain
any CascadeButtons (Menu Traversal).
CascadeButtons in a 2-dimensional Menu would restrict the user's ability
to navigate to all of the elements of the Menu using the keyboard.
3-39
- When focus is on a component in a Menu or MenuBar system,
behaves in the following way (Menu Traversal):
- If the component is in a vertical or 2-dimensional Menu, traverse down
to the next traversable component, wrapping within the Menu if
necessary.
- If the component is in a MenuBar, and the component with the keyboard
focus 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.
This rule results in consistent operation of the directional keys in
a Menu or MenuBar system.
3-40
- When focus is on a component in a Menu or MenuBar system,
behaves in the following way (Menu Traversal):
If the component is in a vertical or 2-dimensional Menu, this action
traverses up to the previous traversable component, wrapping within the
Menu if necessary, and proceeding in the order opposite to that of
.
This rule results in consistent operation of the directional keys in
a Menu or MenuBar system.
3-41
- When focus is on a component in a Menu or MenuBar system,
behaves in the following way (Menu Traversal):
- If the component is in a MenuBar or 2-dimensional Menu, but not at the
left edge, traverse left to the previous traversable component.
- If the component is at the left edge of a MenuBar, wrap within the
MenuBar.
- If the component is at the left edge of a vertical or 2-dimensional Menu
that is the child of a vertical or 2-dimensional Menu, unpost the
current Menu and traverse to the parent CascadeButton.
- If the component is at the left edge of a vertical or 2-dimensional Menu
that is the child of a MenuBar, unpost the current Menu and traverse
left to the previous traversable entry in the MenuBar.
If that entry 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.
This rule results in consistent operation of the directional keys in
a Menu or MenuBar system.
3-42
- When focus is on a component in a Menu or MenuBar system,
behaves in the following way (Menu Traversal):
- If the component is a CascadeButton in a vertical Menu, 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.
- If the component is in a MenuBar or 2-dimensional Menu, but not at the
right edge, traverse right to the next traversable component.
- If the component is at the right edge of a MenuBar, wrap within the
MenuBar.
- If the component is not a CascadeButton and is at the right edge of a
vertical or 2-dimensional Menu, and if the current Menu has an ancestor
CascadeButton (typically in a MenuBar) from which
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.
This rule results in consistent operation of the directional keys in
a Menu or MenuBar system.
3-43
- All Menu traversal actions, with the exception of Menu posting, traverse
to TearOffButtons in the same way as for other Menu entries (Menu Traversal).
Traversal of TearOffButtons needs to be consistent with traversal
of other Menu items.
3-44
- If your application uses
,
,
or
to unpost an entire Menu system and an explicit focus policy is in use,
the location cursor is moved back to the component that had it before
the Menu system was posted (Menu Traversal).
Returning the location cursor to the component that had it previously
allows the user to resume a task without disruption.