Copyright (c) 2012-2016 Hyperion Entertainment and contributors.
This article provides a general description of windows: how to open windows and define their characteristics; how to get the system gadgets for shaping, moving, closing, and depth arranging windows; how to handle window I/O; and how to preserve the display when windows get overlapped.
Windows are rectangular display areas that open on screens. The window acts as a virtual terminal allowing a program to interact with the user as if it had the entire display all to itself.
Each window opens on a specific screen and takes certain characteristics, such as resolution, colors and display attributes, from that screen. These values cannot be adjusted on a window by window basis. Other window characteristics such as the text font are inherited from the screen but can be changed.
An application may open several windows at the same time on a single screen. The Workbench and other public (shareable) screens allow windows opened by different applications to coexist on the same screen.
Windows are moveable and can be positioned anywhere within the screen on which they exist. Windows may also have a title and borders containing various gadgets for controlling the window.
Window System Gadgets
Each window may have a number of system gadgets which allow the user to control window size, shape and arrangement. These gadgets are: the drag bar, the depth gadget, the sizing gadget, the zoom gadget and the close gadget.
The drag bar allows the user to change the position of the window with respect to the screen. The drag bar is in the top border of a window and occupies any space in the top border that is not used by other gadgets. The window may be dragged left, right, up and down on the screen, with the limitation that the entire window must remain within the screen's boundaries. This is done by positioning the pointer over the title bar, selecting the window and dragging to the new position. Window drag may be cancelled by pressing the right mouse button before the drag is completed.
The depth gadget allows the user to depth arrange a window with respect to other windows on the screen. The depth gadget is always positioned in the upper right corner of the window. Clicking the depth gadget will move the front-most window behind all other windows. If the window is not the front-most, it will be moved to the front. Selecting the depth gadget with the Shift qualifier always moves the window to the back (behind other windows).
The sizing gadget allows the user to change the size of the window. Sizing is subject to minimum and maximum values set by the application. Width and height are independent in a sizing operation. The sizing gadget is always positioned in the lower right corner of the window. It allows the user to drag this corner of the window to a new position relative to the upper left corner of the window, thus changing the width and height of the window. Window sizing using the sizing gadget may be cancelled by pressing the right mouse button before the size is completed.
The zoom gadget allows the user to quickly alternate between two preset window size and position values. The zoom gadget is always placed immediately to the left of the depth gadget. If there is no depth gadget on the window, the zoom gadget will still appear next to where the depth gadget would have been.
The close gadget performs no direct action on the window, rather it causes Intuition to send a message to the application to close the window. This allows the application to perform any required processing or to warn the user before it closes the window. The close gadget is always positioned in the upper left corner of the window.
The Active Window
There is only one window in the system active at any time. The active window receives all user input, including keyboard and mouse events. This is also known as the input focus, as all input is focused at this single point.
Some areas of the active window are displayed more boldly than those on inactive windows. The active window's borders are filled in with a color which is designed to stand out from the background while inactive windows have their borders filled with the background color. The specific coloring of active and inactive windows is dependent on the screen on which the window is opened. See the section DrawInfo and the 3D Look for more information.
Windows have two optional titles: one for the window and one for the screen. The window title appears in the top border of the window, regardless of whether the window is active or inactive. The window's screen title appears in the screen's title bar only when the window is active. This gives the user a secondary clue as to what application is active in the screen.
The active window's menus are displayed on the screen when the right mouse button (the menu button ) is pressed. If the active window has no menus, then none will be displayed.
Each window may also have its own mouse-pointer image. Changing the active window will change the pointer to the one currently set for the new active window.
The following sections describe Windows in more detail:
- Window Types - Describes all the types of Windows available.
- Structures and Functions - Detailed description of structures and functions.
- Communicating with Intuition - How to communicate with a Window.
- Display Preservation - How to preserve the display of a Window.
The following are brief descriptions of the Intuition functions that relate to the use of Intuition windows. See the SDK for details on each function call.
|OpenWindowTagList()||Open a window.|
|OpenWindowTags()||Alternate calling sequence for OpenWindowTagList().|
|OpenWindow()||Obsolete way to open a window.|
|CloseWindow()||Close a window.|
|BeginRefresh()||Turn on optimized window refresh mode.|
|EndRefresh()||Turn off optimized window refresh mode.|
|RefreshWindowFrame()||Redraw the borders and border gadgets of an open window.|
|ActivateWindow()||Make an open window active.|
|SizeWindow()||Change the size of an open window.|
|MoveWindow()||Change the position of an open window.|
|ChangeWindowBox()||Change the size and position of an open window.|
|WindowLimits()||Change the minimum and maximum sizes of an open window.|
|WindowToBack()||Move a window behind all other windows.|
|WindowToFront()||Move a window in front of all other windows.|
|MoveWindowInFrontOf()||Move a window in front of another window.|
|ZipWindow()||Change the size of window to its alternate size.|
|SetWindowTitles()||Change the window titles for the window and the screen.|
|SetPointer()||Set up a custom pointer to display whenever the window is active.|
|ClearPointer()||Restore the mouse pointer to its default imagery.|