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

Window Decorations


A window manager can provide windows with a window frame that contains components called decorations. The window decorations allow user interaction with the window manager. Along with the frame components, a window manager contains a client area. The client area is the display area for an application. A typical window and its decorations are shown below.

A window manager can support any number of window decorations, but it must support the client area and the window frame. A window manager must support the following window frame components:

Each window must have a client area. A window manager must allow each window to choose which combination of decorations to include, except that a window must not have any buttons without a title area. A primary window must by default have all the decorations: window Menu button, maximize button, minimize button, title area, and resize border. A secondary window must by default have a window Menu button and title area. In a secondary window, resize borders and a maximize button can be provided if there is a reason to resize the window.

Clicking BSelect on the window frame should give the window focus and raise the window to the top of the window hierarchy, except when dialog modality disallows focus to be set in the window.

Client Area

The client area is the portion of the window in which the user performs most application-level tasks. For example, if the user is working with a graphics editor or a text editor, the client area contains the figure or document being edited. The client area is inside the window frame and can be composed of multiple work areas.

Title Area

The title area, also called the title bar, supplies a place to identify the window. If a window includes a title area, it must be a horizontal bar at the top of the window. It must be just above the client area and lie horizontally between the window Menu (or other buttons) on the left and the window control buttons on the right.

The title area should contain a short string called the title that labels the contents of the window. The title must be settable at window startup both by the user and by the application. For applications with a single primary window, the title should be the name of the application. For applications with multiple primary windows, the title should indicate the purpose of the window. The title in secondary windows should indicate the purpose of the window. The title can also contain other useful information, such as the machine on which the application is running, the current directory, or similar relatively static information.

Besides supplying a location for a label, the title area also acts as a position, or handle, for moving a window. Pressing BSelect or BTransfer in the title area and dragging the pointer must move the window relative to the moving pointer.

Maximize Button

The maximize button provides mouse users with a shortcut to the Maximize entry in the window Menu. If a window includes a maximize button, it must be just above the client area and its right border must align with the right border of the client area. Primary windows should have a maximize button. Secondary windows generally do not have a maximize button.

The graphic in the maximize button should be a large square or an up arrow. If the maximize button uses an up arrow as its graphic, a maximized window should use a double-headed arrow to indicate that it is maximized. If the maximized button uses a large square as its graphic, a maximized window can show the graphic in a different state. Activating the maximize button must increase the size of the window to the maximum allowable size. As a shortcut for mouse users to the Restore entry in the window Menu, activating the maximize button of a maximized window must restore the window to its size and location before being maximized.

Minimize Button

The minimize button provides mouse users with a shortcut to the Minimize entry in the window Menu. If a window includes a minimize button, it must be just above the client area and directly to the left of the maximize button.

Primary windows should have a minimize button. Secondary windows must not have a minimize button.

The graphic in the minimize button should be a small square or a down arrow. Activating the minimize button must iconify the window unless the window family contains a system modal DialogBox.

Other Buttons

You can bind additional window manager functions to buttons on the window frame. Any additional buttons must be placed directly to the left of the minimize button or directly to the right of the window Menu button and above the client area. Each button action must correspond to a entry in the window Menu.

Resize Borders

Applications can suggest the initial size of their windows to the window manager. Window sizes can vary according to the work performed in them. At any time, a user should be able to alter the size of most windows. The Size entry in the window Menu provides a method for the user to alter the size of windows. The resize borders provide a shortcut for mouse users for the Size entry in the window Menu. Resize borders are not generally provided on secondary windows.

The resize borders are the outermost components of the window manager frame. They are made up of two components: the corner handles and the edge handles. If a window includes resize borders, there must be one corner handle in each corner of the window at its extremes, and one edge handle between each pair of corner handles. There must be no window components outside the boundary formed by the resize borders.

Pressing BSelect or BTransfer in a corner handle and dragging the pointer must change the height and width of the window relative to the moving pointer without changing the position of the opposite corner. Pressing BSelect or BTransfer in a top or bottom edge handle and dragging the pointer must change the height of the window relative to the moving pointer without changing the width or the position of the opposite edge. Pressing BSelect or BTransfer in a side edge handle and dragging the pointer must change the width of the window relative to the moving pointer without changing the height or the position of the opposite edge.

Window Menu

The window Menu, sometimes called the system Menu or control Menu, is used to display the list of window actions. All actions possible for a window should be displayed in the window Menu because keyboard-only users interact with the window manager through this Menu. Because of this, it is rare that a window does not need a window Menu. The window Menu can be configured out by the application or by the user, but it should not be removed by the window manager.

If a window includes a window Menu, the window Menu button must be located just above the client area, the left edge of the button must align with the left edge of the client area, and the button must be just to the left of the title area, unless other buttons are included between the window Menu button and the title area.

Double-clicking the window Menu button can be used to close the window, unless focus is disallowed in the window. A user must be able to activate the window Menu button for the window with the focus by using [Escape] or .

A typical window Menu is shown below.

A primary window Menu must have the following entries in the order listed:

Restore Alt+F5
Restores a minimized or maximized window to the previous size and location of the window. This entry must be deemphasized (grayed out) when the window is in its normal state. This action must have the mnemonic R. If this action has an accelerator, it must be if is available.
Move Alt+F7
Moves a window around the workspace. This action must have the mnemonic M. If this action has an accelerator, it must be if is available.
Size Alt+F8
Changes the height and width of the window in the direction indicated by the pointer. This action must have the mnemonic S. If this action has an accelerator, it must be if is available.
Minimize Alt+F9
Changes a window into an icon. This action must have the mnemonic N. If this action has an accelerator, it must be if is available.
Maximize Alt+F10
Enlarges a window to its maximum size. This action must have the mnemonic X. If this action has an accelerator, it must be if is available.
Lower Alt+F3
Moves a window to the bottom of the window hierarchy. This action can be omitted. This action must have the mnemonic L. If this action has an accelerator, it must be if is available.
Close Alt+F4
Closes a window and removes it from the workspace. This action must have the mnemonic C. If this action has an accelerator, it must be if is available. Applications should prompt the user to save any unsaved changes when a window is closed.

A secondary window Menu must have the following entries in the order listed: Move, Size, and Close. A secondary window Menu can include Restore above Move, Maximize below Size, and Lower above Close, but the lower option on a secondary window lowers all the windows secondary to that window's primary window. A secondary window Menu should not include Restore if it does not include Maximize. A secondary window must not include an entry for Minimize.

A secondary window resulting from a Menu being torn off must have the following entries in the order listed: Move, Lower, and Close. It must not include entries for Restore, Size, Minimize, or Maximize.

Additional Menu items can be added to the window Menus of both primary and secondary windows according to the guidelines for Menus described in Application Design Principles.