XmCascadeButtonGadget(3X) OSF XmCascadeButtonGadget(3X)
NAME
XmCascadeButtonGadget-The CascadeButtonGadget widget class
SYNOPSIS
#include <Xm/CascadeBG.h>
DESCRIPTION
CascadeButtonGadget links two MenuPanes, a MenuBar to a
MenuPane, or an OptionMenu to a MenuPane.
It is used in menu systems and must have a RowColumn parent
with its XmNrowColumnType resource set to XmMENUBAR,
XmMENUPOPUP, XmMENUPULLDOWN, or XmMENUOPTION.
It is the only gadget that can have a Pulldown MenuPane
attached to it as a submenu. The submenu is displayed when
this gadget is activated within a PopupMenu, a PulldownMenu,
or an OptionMenu. 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 an OptionMenu.
The default behavior associated with a CascadeButtonGadget
depends on the type of menu system in which it resides. By
default, BSelect controls the behavior of the
CascadeButtonGadget. In addition, BMenu controls the
behavior of the CascadeButtonGadget if it resides in a
PopupMenu system. The actual mouse button used is
determined by its RowColumn parent.
A CascadeButtonGadget'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 CascadeButtonGadget within a Pulldown or Popup
MenuPane is armed as the result of the user moving the mouse
pointer into the gadget, it does not immediately display its
submenu. Instead, it waits a short time to see if the
arming was temporary (that is, the user was simply passing
through the gadget), or the user really wanted the submenu
posted. This delay is configurable via XmNmappingDelay.
CascadeButtonGadget provides a single mechanism for
activating the gadget from the keyboard. This mechanism is
referred to as a keyboard mnemonic. If a mnemonic has been
specified for the gadget, the user may activate it by simply
typing the mnemonic while the CascadeButtonGadget is
visible. If the CascadeButtonGadget is in a MenuBar and the
MenuBar does not have the focus, the MAlt modifier must be
1 (printed 6/8/92)
XmCascadeButtonGadget(3X) OSF XmCascadeButtonGadget(3X)
pressed with the mnemonic. Mnemonics are typically used to
interact with a menu via the keyboard.
If a CascadeButtonGadget is 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 LabelGadget's default, which is 2.
Classes
CascadeButtonGadget inherits behavior and resources from
Object, RectObj, XmGadget, and XmLabelGadget classes.
The class pointer is xmCascadeButtonGadgetClass.
The class name is XmCascadeButtonGadget.
New Resources
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).
XmCascadeButtonGadget
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
XmNactivateCallback
Specifies the list of callbacks that is called
when the user activates the CascadeButtonGadget,
and there is no submenu attached to pop up. The
activation occurs by releasing a mouse button or
by typing the mnemonic associated with the gadget.
The specific mouse button depends on information
in the RowColumn parent. The reason sent by the
callback is XmCRACTIVATE.
2 (printed 6/8/92)
XmCascadeButtonGadget(3X) OSF XmCascadeButtonGadget(3X)
XmNcascadePixmap
Specifies the cascade pixmap displayed on one end
of the gadget when a CascadeButtonGadget is used
within a Popup or Pulldown MenuPane and a submenu
is attached. The LabelGadget class resources
XmNmarginBottom, XmNmarginLeft, XmNmarginRight,
and XmNmarginTop may be modified to ensure that
room is left for the cascade pixmap. The default
cascade pixmap in menus other than option menus is
an arrow pointing to the side of the menu where
the submenu will appear. The default for the
CascadeButtonGadget in an option menu is
XmUNSPECIFIEDPIXMAP.
XmNcascadingCallback
Specifies the list of callbacks that is called
just prior to the mapping of the submenu
associated with the CascadeButtonGadget. The
reason sent by the callback is XmCRCASCADING.
XmNmappingDelay
Specifies the amount of time, in milliseconds,
between when a CascadeButtonGadget becomes armed
and when it maps its submenu. This delay is used
only when the gadget is within a Popup or Pulldown
MenuPane. The value must not be negative.
XmNsubMenuId
Specifies the widget ID for the Pulldown MenuPane
to be associated with this CascadeButtonGadget.
The specified MenuPane is displayed when the
CascadeButtonGadget becomes armed. The MenuPane
must have been created with the appropriate
parentage depending on the type of menu used. See
XmCreatePulldownMenu(3X), XmCreatePopupMenu(3X),
and XmCreateOptionMenu(3X) for more information on
the menu systems.
Inherited Resources
CascadeButtonGadget inherits behavior and resources from the
following superclasses. For a complete description of each
resource, refer to the man page for that superclass.
XmLabelGadget Resource Set
Name Class Type Default Access
_________________________________________________________________________________________________________
XmNaccelerator XmCAccelerator String NULL N/A
3 (printed 6/8/92)
XmCascadeButtonGadget(3X) OSF XmCascadeButtonGadget(3X)
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 dynamic CSG
XmNrecomputeSize XmCRecomputeSize Boolean True CSG
XmNstringDirection XmCStringDirection XmStringDirection dynamic CSG
XmGadget Resource Set
Name Class Type Default Access
___________________________________________________________________________________
XmNbottomShadowColor XmCBottomShadowColor Pixel dynamic G
XmNhelpCallback XmCCallback XtCallbackList NULL C
XmNhighlightColor XmCHighlightColor Pixel dynamic G
XmNhighlightOnEnter XmCHighlightOnEnter Boolean False CSG
XmNhighlightThickness XmCHighlightThickness Dimension 0 CSG
XmNnavigationType XmCNavigationType XmNavigationType XmNONE CSG
XmNshadowThickness XmCShadowThickness Dimension 2 CSG
XmNtopShadowColor XmCTopShadowColor Pixel dynamic G
XmNtraversalOn XmCTraversalOn Boolean True CSG
XmNunitType XmCUnitType unsigned char dynamic CSG
XmNuserData XmCUserData XtPointer NULL CSG
RectObj Resource Set
Name Class Type Default Access
____________________________________________________________________
XmNancestorSensitive XmCSensitive Boolean dynamic G
XmNborderWidth XmCBorderWidth Dimension 0 CSG
XmNheight XmCHeight Dimension dynamic CSG
XmNsensitive XmCSensitive Boolean True CSG
XmNwidth XmCWidth Dimension dynamic CSG
XmNx XmCPosition Position 0 CSG
XmNy XmCPosition Position 0 CSG
Object Resource Set
Name Class Type Default Access
____________________________________________________________________
XmNdestroyCallback XmCCallback XtCallbackList NULL C
Callback Information
A pointer to the following structure is passed to each
callback:
4 (printed 6/8/92)
XmCascadeButtonGadget(3X) OSF XmCascadeButtonGadget(3X)
typedef struct
{
int reason;
XEvent * event;
} XmAnyCallbackStruct;
reason Indicates why the callback was invoked.
event Points to the XEvent that triggered the callback or
is NULL if this callback was not triggered by an
XEvent.
Behavior
XmCascadeButtonGadget includes behavior from XmGadget.
XmCascadeButton includes the menu traversal behavior from
XmLabel. Additional XmCascadeButtonGadget behavior is
described below (in a Popup menu system, BMenu also performs
the BSelect actions):
BSelect Press:
Unposts any menus posted by the parent menu. Arms
the CascadeButtonGadget, posts the associated
submenu, enables mouse traversal, and, in a
MenuBar, arms the MenuBar. If the menu is already
active, this event disables keyboard traversal for
the menu and returns the menu to mouse traversal
mode.
BSelect Release:
Calls the callbacks in XmNcascadingCallback, posts
the submenu attached to the CascadeButtonGadget
and enables keyboard traversal within the menu.
If the CascadeButtonGadget does not have a submenu
attached, calls the callbacks in
XmNactivateCallback, the CascadeButtonGadget is
activated and all posted menus in the cascade are
unposted.
KActivate:
Calls the callbacks in XmNcascadingCallback, and
posts the submenu attached to the
CascadeButtonGadget if keyboard traversal is
enabled in the menu. If the CascadeButtonGadget
does not have a submenu attached, calls the
callbacks in XmNactivateCallback, the
CascadeButtonGadget is activated and all posted
menus in the cascade are unposted. This action
applies only to gadgets in MenuBars,
PulldownMenus, and PopupMenus. For a
5 (printed 6/8/92)
XmCascadeButtonGadget(3X) OSF XmCascadeButtonGadget(3X)
CascadeButtonGadget in an OptionMenu, if the
parent is a manager, this action passes the event
to the parent.
KSelect: Calls the callbacks in XmNcascadingCallback, and
posts the submenu attached to the
CascadeButtonGadget if keyboard traversal is
enabled in the menu. If the CascadeButtonGadget
does not have a submenu attached, calls the
callbacks in XmNactivateCallback, the
CascadeButtonGadget is activated and all posted
menus in the cascade are unposted.
KHelp: Unposts all menus in the menu hierarchy and, when
the shell's keyboard focus policy is XmEXPLICT,
restores keyboard focus to the widget that had the
focus before the menu system was entered. Calls
the callbacks for XmNhelpCallback if any exist.
If there are no help callbacks for this widget,
this action calls the help callbacks for the
nearest ancestor that has them.
MAny KCancel:
In a MenuBar, disarms the CascadeButtonGadget and
the menu and, when the shell's keyboard focus
policy is XmEXPLICT, restores keyboard focus to
the widget that had the focus before the menu was
entered. For a CascadeButtonGadget in an
OptionMenu, if the parent is a manager, this
action passes the event to the parent.
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 restores
keyboard focus to the widget from which the menu
was posted.
<Enter>: If keyboard traversal is enabled does nothing.
Otherwise, in a MenuBar, unposts any MenuPanes
associated with another MenuBar entry, arms the
CascadeButtonGadget, and posts the associated
submenu. In other menus, arms the
CascadeButtonGadget and posts the associated
submenu after the delay specified by
XmNmappingDelay.
6 (printed 6/8/92)
XmCascadeButtonGadget(3X) OSF XmCascadeButtonGadget(3X)
<Leave>: If keyboard traversal is enabled does nothing.
Otherwise, in a MenuBar, disarms the
CascadeButtonGadget if the submenu associated with
the CascadeButtonGadget is not currently posted or
if there is no submenu associated with the
CascadeButtonGadget.
In other menus, if the pointer moves anywhere
except into a submenu associated with the
CascadeButtonGadget, the CascadeButtonGadget is
disarmed and its submenu is unposted.
Virtual Bindings
The bindings for virtual keys are vendor specific. For
information about bindings for virtual buttons and keys, see
VirtualBindings(3X).
RELATED INFORMATION
Object(3X), RectObj(3X), XmCascadeButtonHighlight(3),
XmCreateCascadeButtonGadget(3X), XmCreatePulldownMenu(3X),
XmCreatePopupMenu(3X), XmCreateOptionMenu(3X),XmGadget(3X),
XmLabelGadget(3X), and XmRowColumn(3X).
7 (printed 6/8/92)