XmMenuShell(library call) XmMenuShell(library call)
NAME
XmMenuShell -- The MenuShell widget class
SYNOPSIS
#include <Xm/MenuShell.h>
DESCRIPTION
The MenuShell widget is a custom OverrideShell widget. An OverrideShell widget bypasses
mwm when displaying itself. It is designed specifically to contain Popup or Pulldown menu
panes.
Most application writers never encounter this widget if they use the menu-system conve-
nience functions, XmCreatePopupMenu or XmCreatePulldown Menu, to create a Popup or Pull-
down menu pane. The convenience functions automatically create a MenuShell widget as the
parent of the menu pane. However, if the convenience functions are not used, the applica-
tion programmer must create the required MenuShell. In this case, it is important to note
that the parent of the MenuShell depends on the type of menu system being built.
o If the MenuShell is for the top-level Popup menu pane, the MenuShell's parent must
be the widget from which the Popup menu pane is popped up.
o If the MenuShell is for a menu pane that is pulled down from a Popup or another
Pulldown menu pane, the MenuShell's parent must be the Popup or Pulldown menu pane.
o If the MenuShell is for a menu pane that is pulled down from a MenuBar, the
MenuShell's parent must be the MenuBar.
o If the MenuShell is for a Pulldown menu pane in an OptionMenu, the MenuShell's par-
ent must be the OptionMenu's parent.
Setting XmNheight, XmNwidth, or XmNborderWidth for either a MenuShell or its child sets
that resource to the same value in both the parent and the child. An application should
always specify these resources for the child, not the parent.
For the managed child of a MenuShell, regardless of the value of the shell's XmNallow-
ShellResize, setting XmNx or XmNy sets the corresponding resource of the parent but does
not change the child's position relative to the parent. XtGetValues for the child's XmNx
or XmNy yields the value of the corresponding resource in the parent. The x and y-coordi-
nates of the child's upper left outside corner relative to the parent's upper left inside
corner are both 0 (zero) minus the value of XmNborderWidth.
MenuShell uses the XmQTmenuSystem trait and holds the XmQTspecifyRenderTable trait.
Classes
MenuShell inherits behavior, resources, and traits from Core, Composite, Shell, and Over-
rideShell.
The class pointer is xmMenuShellWidgetClass.
The class name is XmMenuShell.
New Resources
MenuShell overrides the XmNallowShellResize resource in Shell. The following table
defines a set of widget resources used by the programmer to specify data. The programmer
can also set the resource values for the inherited classes to set attributes for this wid-
get. To reference a resource by name or by class in a .Xdefaults file, remove the XmN or
XmC prefix and use the remaining letters. To specify one of the defined values for a
resource in a .Xdefaults file, remove the Xm prefix and use the remaining letters (in
either lowercase or uppercase, but include any underscores between words). The codes in
the access column indicate if the given resource can be set at creation time (C), set by
using XtSetValues (S), retrieved by using XtGetValues (G), or is not applicable (N/A).
+---------------------------------------------------------------------------------------+
| | XmMenuShell Resource Set | | |
|Name | Class | Type | Default | Access |
+---------------------+----------------------+---------------+-----------------+--------+
|XmNbuttonFontList | XmCButtonFontList | XmFontList | dynamic | CSG |
+---------------------+----------------------+---------------+-----------------+--------+
|XmNbuttonRenderTable | XmCButtonRenderTable | XmRenderTable | NULL | CSG |
+---------------------+----------------------+---------------+-----------------+--------+
|XmNdefaultFontList | XmCDefaultFontList | XmFontList | dynamic | CG |
+---------------------+----------------------+---------------+-----------------+--------+
|XmNlabelFontList | XmCLabelFontList | XmFontList | dynamic | CSG |
+---------------------+----------------------+---------------+-----------------+--------+
|XmNlabelRenderTable | XmCLabelRenderTable | XmRenderTable | NULL | CSG |
+---------------------+----------------------+---------------+-----------------+--------+
|XmNlayoutDirection | XmCLayoutDirection | XmDirection | XmLEFT_TO_RIGHT | CG |
+---------------------+----------------------+---------------+-----------------+--------+
|XmNanimate | XmCAnimate | Boolean | False | CG |
+---------------------+----------------------+---------------+-----------------+--------+
+---------------------+----------------------+---------------+-----------------+--------+
XmNbuttonFontList
Specifies the font list used for button descendants. See the XmNbuttonRen-
derTable resource.
XmNbuttonRenderTable
Specifies the render table used for MenuShell's button descendants. If this
value is NULL at initialization and if the value of XmNdefaultFontList is not
NULL, XmNbuttonRenderTable is initialized to the value of XmNdefaultFontList. If
the value of XmNdefaultFontList is NULL, XmNbuttonRenderTable is initialized by
looking up the parent hierarchy of the widget for an ancestor that holds the
XmQTspecifyRenderTable trait. If such an ancestor is found, XmNbuttonRen-
derTable is initialized to the XmBUTTON_RENDER_TABLE value of the ancestor wid-
get. If no such ancestor is found, the default is implementation dependent.
Refer to XmRenderTable(3) for more information on the creation and structure of
a render table.
XmNdefaultFontList
Specifies a default font list for MenuShell's descendants. This resource is
obsolete and exists for compatibility with earlier releases. It has been
replaced by XmNbuttonFontList and XmNlabelFontList.
XmNlabelFontList
Specifies the font list used for label descendants. See the XmNlabelRenderTable
resource.
XmNlabelRenderTable
Specifies the render table used for MenuShell's label descendants (Labels and
LabelGadgets). If this value is NULL at initialization and if the value of XmN-
defaultFontList is not NULL, XmNlabelRenderTable is initialized to the value of
XmNdefaultFontList. If the value of XmNdefaultFontList is NULL, the parent hier-
archy of the widget is searched for an ancestor that holds the XmQTspecifyRen-
derTable trait. If such an ancestor is found, XmNlabelRenderTable is initial-
ized to the XmLABEL_RENDER_TABLE value of the ancestor widget. If no such ances-
tor is found, the default is implementation dependent. Refer to XmRenderTable(3)
for more information on the creation and structure of a render table.
XmNlayoutDirection
Specifies the direction in which the subwidgets, children of a widget, or other
visual components are to be laid out. This policy will apply as the default lay-
out policy for all descendants of this MenuShell.
XmNanimate
Controls whether menus will post in an animated fashion.
Inherited Resources
MenuShell inherits behavior and resources from the superclasses described in the following
tables. For a complete description of each resource, refer to the reference page for that
superclass. The programmer can set the resource values for these inherited classes to set
attributes for this widget. To reference a resource by name or by class in a .Xdefaults
file, remove the XmN or XmC prefix and use the remaining letters. To specify one of the
defined values for a resource in a .Xdefaults file, remove the Xm prefix and use the
remaining letters (in either lowercase or uppercase, but include any underscores between
words). The codes in the access column indicate if the given resource can be set at cre-
ation time (C), set by using XtSetValues (S), retrieved by using XtGetValues (G), or is
not applicable (N/A).
+-----------------------------------------------------------------------------------------------------+
| | Shell Resource Set | | |
|Name | Class | Type | Default | Access |
+------------------------+-------------------------+------------------------+----------------+--------+
|XmNallowShellResize | XmCAllowShellResize | Boolean | True | G |
+------------------------+-------------------------+------------------------+----------------+--------+
|XmNcreatePopupChildProc | XmCCreatePopupChildProc | XtCreatePopupChildProc | NULL | CSG |
+------------------------+-------------------------+------------------------+----------------+--------+
|XmNgeometry | XmCGeometry | String | NULL | CSG |
+------------------------+-------------------------+------------------------+----------------+--------+
|XmNoverrideRedirect | XmCOverrideRedirect | Boolean | True | CSG |
+------------------------+-------------------------+------------------------+----------------+--------+
|XmNpopdownCallback | XmCCallback | XtCallbackList | NULL | C |
+------------------------+-------------------------+------------------------+----------------+--------+
|XmNpopupCallback | XmCCallback | XtCallbackList | NULL | C |
+------------------------+-------------------------+------------------------+----------------+--------+
|XmNsaveUnder | XmCSaveUnder | Boolean | True | CSG |
+------------------------+-------------------------+------------------------+----------------+--------+
|XmNvisual | XmCVisual | Visual * | CopyFromParent | CSG |
+------------------------+-------------------------+------------------------+----------------+--------+
+------------------------+-------------------------+------------------------+----------------+--------+
+-----------------------------------------------------------------------+
| | Composite Resource Set | | |
|Name | Class | Type | Default | Access |
+------------------+-------------------+-------------+---------+--------+
|XmNchildren | XmCReadOnly | WidgetList | NULL | G |
+------------------+-------------------+-------------+---------+--------+
|XmNinsertPosition | XmCInsertPosition | XtOrderProc | NULL | CSG |
+------------------+-------------------+-------------+---------+--------+
|XmNnumChildren | XmCReadOnly | Cardinal | 0 | G |
+------------------+-------------------+-------------+---------+--------+
+------------------+-------------------+-------------+---------+--------+
+---------------------------------------------------------------------------------------------------------------+
| | Core Resource Set | | |
|Name | Class | Type | Default | Access |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNaccelerators | XmCAccelerators | XtAccelerators | dynamic | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNancestorSensitive | XmCSensitive | Boolean | dynamic | G |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNbackground | XmCBackground | Pixel | dynamic | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNbackgroundPixmap | XmCPixmap | Pixmap | XmUNSPECIFIED_PIXMAP | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNborderColor | XmCBorderColor | Pixel | XtDefaultForeground | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNborderPixmap | XmCPixmap | Pixmap | XmUNSPECIFIED_PIXMAP | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNborderWidth | XmCBorderWidth | Dimension | 0 | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNcolormap | XmCColormap | Colormap | dynamic | CG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNdepth | XmCDepth | int | dynamic | CG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNdestroyCallback | XmCCallback | XtCallbackList | NULL | C |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNheight | XmCHeight | Dimension | dynamic | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNinitialResourcesPersistent | XmCInitialResourcesPersistent | Boolean | True | C |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNmappedWhenManaged | XmCMappedWhenManaged | Boolean | True | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNscreen | XmCScreen | Screen * | dynamic | CG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNsensitive | XmCSensitive | Boolean | True | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNtranslations | XmCTranslations | XtTranslations | dynamic | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNwidth | XmCWidth | Dimension | dynamic | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNx | XmCPosition | Position | 0 | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNy | XmCPosition | Position | 0 | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
+------------------------------+-------------------------------+----------------+----------------------+--------+
Translations
The XmMenuShell translations are described in the following list.
The following key names are listed in the X standard key event translation table syntax.
This format is the one used by Motif to specify the widget actions corresponding to a
given key. A brief overview of the format is provided under VirtualBindings(3). For a
complete description of the format, please refer to the X Toolkit Instrinsics Documenta-
tion.
<BtnDown>:
ClearTraversal()
<BtnUp>: MenuShellPopdownDone()
Action Routines
The XmMenuShell action routines are
ClearTraversal():
Disables keyboard traversal for the menu, enables mouse traversal, and unposts
any menus posted by this menu.
MenuShellPopdownDone():
Unposts the menu hierarchy and, when the shell's keyboard focus policy is XmEX-
PLICIT, restores focus to the widget that had the focus before the menu system
was entered.
MenuShellPopdownOne():
In a top-level Pulldown MenuPane from a MenuBar, this action unposts the menu,
disarms the MenuBar CascadeButton and the MenuBar, and, when the shell's key-
board focus policy is XmEXPLICIT, restores keyboard focus to the widget that had
the focus before the MenuBar was entered. In other Pulldown MenuPanes, this
action unposts the menu.
In a Popup MenuPane, this action unposts the menu, and, when the shell's key-
board focus policy is XmEXPLICIT, restores keyboard focus to the widget from
which the menu was posted.
Virtual Bindings
The bindings for virtual keys are vendor specific. For information about bindings for
virtual buttons and keys, see VirtualBindings(3).
RELATEDComposite(3), Core(3), OverrideShell(3), Shell(3), XmCreateMenuShell(3), XmCreatePopup-
Menu(3), XmCreatePulldownMenu(3), and XmRowColumn(3).
XmMenuShell(library call)