Shell widgets
Shell widgets provide the interface between an application and the platform's
window manager. A shell widget looks like a window on the screen and contains exactly one child. The window manager is the part of the platform window system that manages the geometry, appearance, and stacking order of windows on the display. The window manager can add
window decorations to a window, such as a frame, a title, resize handles, minimize and maximize buttons, and a close button. Window decorations are described in more detail in
"Top-level shell widgets". The window manager also keeps track of which window has
input focus, that is, which window receives keyboard input. A shell can receive a
focus callback when focus is either lost or gained.
A CwTopLevelShell provides a normal window with standard appearance and decorations, and does not have a parent. CwTopLevelShell widgets are described in detail in the next section. CwOverrideShell and CwDialogShell widgets must have a parent widget. These shells are described in this section.
CwDialogShell widgets are pop-up windows used to implement modal or modeless dialog windows. The child of a
CwDialogShell is typically an instance of a subclass of
CwBulletinBoard. A
CwDialogShell and its child are typically created automatically by using one of the dialog convenience methods. Unlike other types of shells, a
CwDialogShell popped up by managing its child. The parent of a
CwDialogShell can be any widget, and the dialog always appears over the window containing its parent widget. For further information on dialog shells and dialogs, see the section on
"Composite-box widgets".
CwOverrideShell widgets are used for pop-up windows that bypass window management and appear in front of all other windows. They do not have a window frame, and cannot be moved, resized, or iconified by the user. Create CwOverrideShell widgets using the CwShell class method createPopupShell:parent:argBlock:. Make a CwOverrideShell visible by sending it the popup message.
Last modified date: 05/13/2020