XtPopup()XtPopup()NameXtPopup - 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_kind Specifies how user events should be constrained. (Can be one
of XtGrabNone, XtGrabNonexclusive, XtGrabExclusive.)
DescriptionXtPopup() calls the functions registered on the shell's XtNpopupCall‐
back 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 XtGrab‐
Nonexclusive and XtGrabExclusive, see XtAddGrab().
Usage
By default, XtPopup() maps its window to the upper-left corner of the
display. You will generally want to position the shell by setting its
XtNx and XtNy resources 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.
If you are using the Motif widget set, you will generally never need to
call XtPopup() or XtPopdown(). The Motif XmDialogShell widget auto‐
matically pops up when its child is managed, and pops down when its
child is unmanaged.
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 AlsoXtAddGrab(1), XtCallbackExclusive(1), XtCallbackNone(1), XtCallbac‐
kNonexclusive(1), XtCallbackPopdown(1), XtCreatePopupShell(1),
XtMenuPopdown(1), XtMenuPopup(1), XtPopdown(1), XtPopupSpringLoaded(1).
Xt - Pop Ups XtPopup()