https://invisible-island.net/xterm/xtoolkit/
XtCreatePopupShell, XtVaCreatePopupShell - create a popup shell
#include <X11/Intrinsic.h> Widget XtCreatePopupShell(const char *name, WidgetClass widget_class, Widget parent, ArgList args, Cardinal num_args); Widget XtVaCreatePopupShell(const char *name, WidgetClass widget_class, Widget parent, ...);
args Specifies the argument list to override the resource defaults. name Specifies the text name for the created shell widget. num_args Specifies the number of arguments in the argument list. parent Specifies the parent widget. widget_class Specifies the widget class pointer for the created shell wid- get. ... Specifies the variable argument list to override the resource defaults.
The XtCreatePopupShell function ensures that the specified class is a subclass of Shell and, rather than using insert_child to attach the widget to the parent's children list, attaches the shell to the par- ent's pop-ups list directly. A spring-loaded pop-up invoked from a translation table already must exist at the time that the translation is invoked, so the translation manager can find the shell by name. Pop-ups invoked in other ways can be created "on-the-fly" when the pop-up actually is needed. This delayed creation of the shell is particularly useful when you pop up an unspecified number of pop-ups. You can look to see if an appropriate unused shell (that is, not currently popped up) exists and create a new shell if needed.
XtCreateWidget(3), XtPopdown(3), XtPopup(3) X Toolkit Intrinsics – C Language Interface Xlib - C Language X Interface X Version 11 libXt 1.1.5.2 XtCreatePopupShell(3)