NAME
XtPopup − map a popup shell.
SYNOPSIS
void XtPopup(popup_shell, grab_kind)
Widget popup_shell;
XtGrabKind grab_kind;
Inputs
popup_shell
Specifies a shell widget returned by XtCreatePopupShell().
grab_kindSpecifies how user events should be constrained. (Can be one of XtGrabNone, XtGrabNonexclusive, XtGrabExclusive.)
DESCRIPTION
XtPopup() calls the functions registered on the shell’s XtNpopupCallback list and pops up the shell widget (and its managed child). The "Algorithm" section below explains this process in more detail.
If grab_kind is XtGrabNone, the resulting popup is "modeless", and does not lock out input events to the rest of the application. If it is XtGrabNonexclusive, then the resulting popup is "modal" and locks out input to the main application window, but not to other modal popups that are currently popped up. If it is XtGrabExclusive, then the resulting popup is modal and locks out input to the main application window and all previous popup windows. For more details on XtGrabNonexclusive and XtGrabExclusive, see XtAddGrab().
USAGE
By default, XtPopup() maps its window to the upper-left corner of the display. You will generally want to move the shell with XtMoveWidget() before calling XtPopup().
The Intrinsics also provide convenience routines to popup a shell. To perform a pop up from a callback list, register one of the functions XtCallbackNone(), XtCallbackNonexclusive(), or XtCallbackExclusive(). To do so from a translation table, use the XtMenuPopup action.
Widgets can be popped down with XtPopdown(), the XtCallbackPopdown() callback function, or the XtMenuPopdown action.
ALGORITHM
The XtPopup() function performs the following:
•Calls XtCheckSubclass() to ensure popup_shell’s class is a subclass of shellWidgetClass.
•Raises the window and returns if the shell’s popped_up field is already True.
•Calls the callback procedures on the shell’s XtNpopupCallback list, specifying a pointer to the value of grab_kind as the call_data argument.
•Sets the shell popped_up field to True, the shell spring_loaded field to False, and the shell grab_kind field from grab_kind.
•If the shell’s XtNcreatePopupChildProc resource is non-NULL, XtPopup() calls the specified procedure with popup_shell as the parameter.
•If grab_kind is either XtGrabNonexclusive or XtGrabExclusive, it calls: XtAddGrab(popup_shell, (grab_kind == XtGrabExclusive), False)
•Calls XtRealizeWidget() with popup_shell specified.
•Calls XMapRaised() with the window of popup_shell.
STRUCTURES
The XtGrabKind type is defined as follows: typedef enum {XtGrabNone, XtGrabNonexclusive, XtGrabExclusive} XtGrabKind;
SEE ALSO
XtAddGrabUNIX SYSTEM V/68, XtCallbackExclusiveUNIX SYSTEM V/68, XtCallbackNoneUNIX SYSTEM V/68, XtCallbackNonexclusiveUNIX SYSTEM V/68, XtCallbackPopdownUNIX SYSTEM V/68, XtCreatePopupShellUNIX SYSTEM V/68, XtMenuPopdownUNIX SYSTEM V/68, XtMenuPopupUNIX SYSTEM V/68, XtPopdownUNIX SYSTEM V/68, XtPopupSpringLoadedUNIX SYSTEM V/68.