XmCascadeButton - The CascadeButton widget class
#include <Xm/CascadeB.h>
CascadeButton links two MenuPanes or a MenuBar to a MenuPane.
It is used in menu systems and must have a RowColumn parent with its XmNrowColumnType resource set to XmMENU_BAR, XmMENU_POPUP or XmMENU_PULLDOWN.
It is the only widget that can have a Pulldown MenuPane attached to it as a submenu. The submenu is displayed when this widget is activated within a MenuBar, a PopupMenu, or a PulldownMenu. Its visuals can include a label or pixmap and a cascading indicator when it is in a Popup or Pulldown MenuPane; or, it can include only a label or a pixmap when it is in a MenuBar.
The default behavior associated with a CascadeButton depends on the type of menu system in which it resides. By default, BSelect controls the behavior of the CascadeButton. In addition, BMenu controls the behavior of the CascadeButton if it resides in a PopupMenu system. The actual mouse button used is determined by its RowColumn parent.
A CascadeButton's visuals differ from most other button gadgets. When the button becomes armed, its visuals change from a 2-D to a 3-D look, and it displays the submenu that has been attached to it. If no submenu is attached, it simply changes its visuals.
When a CascadeButton within a Pulldown or Popup MenuPane is armed as the result of the user moving the mouse pointer into the widget, it does not immediately display its submenu. Instead, it waits a short amount of time to see if the arming was temporary (that is, the user was simply passing through the widget), or whether the user really wanted the submenu posted. This time delay is configurable via XmNmappingDelay.
CascadeButton provides a single mechanism for activating the widget from the keyboard. This mechanism is referred to as a keyboard mnemonic. If a mnemonic has been specified for the widget, the user may activate the CascadeButton by simply typing the mnemonic while the CascadeButton is visible. If the CascadeButton is in a MenuBar and the MenuBar does not have the focus, the MAlt modifier must be pressed with the mnemonic. Mnemonics are typically used to interact with a menu via the keyboard interface.
If in a Pulldown or Popup MenuPane and there is a submenu attached, the XmNmarginBottom, XmNmarginLeft, XmNmarginRight, and XmNmarginTop resources may enlarge to accommodate XmNcascadePixmap. XmNmarginWidth defaults to 6 if this resource is in a MenuBar; otherwise, it takes Label's default, which is 2.
CascadeButton inherits behavior and resources from Core, XmPrimitive, and XmLabel classes.
The class pointer is xmCascadeButtonWidgetClass.
The class name is XmCascadeButton.
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 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 creation time (C), set by using XtSetValues
(S), retrieved by using XtGetValues (G), or is not
applicable (N/A).
Name | Class | Type | Default | Access |
---|---|---|---|---|
XmNactivateCallback | XmCCallback | XtCallbackList | NULL | C |
XmNcascadePixmap | XmCPixmap | Pixmap | dynamic | CSG |
XmNcascadingCallback | XmCCallback | XtCallbackList | NULL | C |
XmNmappingDelay | XmCMappingDelay | int | 180 ms | CSG |
XmNsubMenuId | XmCMenuWidget | Widget | NULL | CSG |
CascadeButton inherits behavior and resources from the following superclasses. For a complete description of each resource, refer to the man page for that superclass.
Name | Class | Type | Default | Access |
---|---|---|---|---|
XmNaccelerator | XmCAccelerator | String | NULL | N/A |
XmNacceleratorText | XmCAcceleratorText | XmString | NULL | N/A |
XmNalignment | XmCAlignment | unsigned char | dynamic | CSG |
XmNfontList | XmCFontList | XmFontList | dynamic | CSG |
XmNlabelInsensitivePixmap | XmCLabelInsensitivePixmap | Pixmap | XmUNSPECIFIED_PIXMAP | CSG |
XmNlabelPixmap | XmCLabelPixmap | Pixmap | XmUNSPECIFIED_PIXMAP | CSG |
XmNlabelString | XmCXmString | XmString | dynamic | CSG |
XmNlabelType | XmCLabelType | unsigned char | XmSTRING | CSG |
XmNmarginBottom | XmCMarginBottom | Dimension | dynamic | CSG |
XmNmarginHeight | XmCMarginHeight | Dimension | 2 | CSG |
XmNmarginLeft | XmCMarginLeft | Dimension | 0 | CSG |
XmNmarginRight | XmCMarginRight | Dimension | dynamic | CSG |
XmNmarginTop | XmCMarginTop | Dimension | dynamic | CSG |
XmNmarginWidth | XmCMarginWidth | Dimension | dynamic | CSG |
XmNmnemonic | XmCMnemonic | KeySym | NULL | CSG |
XmNmnemonicCharSet | XmCMnemonicCharSet | String | XmFONTLIST_DEFAULT_TAG | CSG |
XmNrecomputeSize | XmCRecomputeSize | Boolean | True | CSG |
XmNstringDirection | XmCStringDirection | XmStringDirection | dynamic | CSG |
Name | Class | Type | Default | Access |
---|---|---|---|---|
XmNbottomShadowColor | XmCBottomShadowColor | Pixel | dynamic | CSG |
XmNbottomShadowPixmap | XmCBottomShadowPixmap | Pixmap | XmUNSPECIFIED_PIXMAP | CSG |
XmNforeground | XmCForeground | Pixel | dynamic | CSG |
XmNhelpCallback | XmCCallback | XtCallbackList | NULL | C |
XmNhighlightColor | XmCHighlightColor | Pixel | dynamic | CSG |
XmNhighlightOnEnter | XmCHighlightOnEnter | Boolean | False | CSG |
XmNhighlightPixmap | XmCHighlightPixmap | Pixmap | dynamic | CSG |
XmNhighlightThickness | XmCHighlightThickness | Dimension | 0 | CSG |
XmNnavigationType | XmCNavigationType | XmNavigationType | XmNONE | CSG |
XmNshadowThickness | XmCShadowThickness | Dimension | 2 | CSG |
XmNtopShadowColor | XmCTopShadowColor | Pixel | dynamic | CSG |
XmNtopShadowPixmap | XmCTopShadowPixmap | Pixmap | dynamic | CSG |
XmNtraversalOn | XmCTraversalOn | Boolean | dynamic | G |
XmNunitType | XmCUnitType | unsigned char | dynamic | CSG |
XmNuserData | XmCUserData | XtPointer | NULL | CSG |
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 |
A pointer to the following structure is passed to each callback:
typedef struct { int reason; XEvent * event; } XmAnyCallbackStruct;
XmCascadeButton includes translations from Primitive. XmCascadeButton includes the menu traversal translations from XmLabel. These translations may not directly correspond to a translation table.
Note that altering translations in #override or #augment mode is undefined.
The translations for a CascadeButton in a MenuBar are listed below. These translations may not directly correspond to a translation table.
BSelect Press: MenuBarSelect() BSelect Release: DoSelect() KActivate: KeySelect() KSelect: KeySelect() KHelp: Help() MAny KCancel: CleanupMenuBar()
The translations for a CascadeButton in a PullDown or Popup MenuPane are listed below. In a Popup menu system, BMenu also performs the BSelect actions. These translations may not directly correspond to a translation table.
BSelect Press: StartDrag() BSelect Release: DoSelect() KActivate: KeySelect() KSelect: KeySelect() KHelp: Help() MAny KCancel: CleanupMenuBar()
The XmCascadeButton action routines are described below:
In a toplevel Pulldown MenuPane from a MenuBar, unposts the menu, disarms the MenuBar CascadeButton and the MenuBar, and, when the shell's keyboard focus policy is XmEXPLICT, restores keyboard focus to the widget that had the focus before the MenuBar was entered. In other Pulldown MenuPanes, unposts the menu.
In a Popup MenuPane, unposts the menu and, when the shell's keyboard focus policy is XmEXPLICT, restores keyboard focus to the widget from which the menu was posted.
Posting a submenu calls the XmNcascadingCallback callbacks. This widget has the additional behavior described below:
In other menus, if the pointer moves anywhere except into a submenu associated with the CascadeButton, the CascadeButton is disarmed and its submenu is unposted.
The bindings for virtual keys are vendor specific. For information about bindings for virtual buttons and keys, see VirtualBindings(3X).
Core(3X), XmCascadeButtonHighlight(3X), XmCreateCascadeButton(3X),XmCreateMenuBar(3X), XmCreatePulldownMenu(3X), XmCreatePopupMenu(3X), XmLabel(3X), XmPrimitive(3X), and XmRowColumn(3X).