Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ XmCascaBB(Xm) — OpenDesktop Software Development System 3.0.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought


 XmCascadeButtonGadget(Xm)      6 January 1993      XmCascadeButtonGadget(Xm)


 Name

    XmCascadeButtonGadget - the CascadeButtonGadget widget class

 Syntax


    #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 Pull-
    down 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 pressed with the mnemonic.  Mnemon-
    ics 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 pro-
    grammer to specify data.  The programmer can also set the resource values
    for the inherited classes to set attributes for this widget.  To refer-
    ence 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.

    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 associ-
            ated with this CascadeButtonGadget.  The specified MenuPane is
            displayed when the CascadeButtonGadget becomes armed.  The Menu-
            Pane must have been created with the appropriate parentage
            depending on the type of menu used.  See XmCreatePulldown-
            Menu(Xm), XmCreatePopupMenu(Xm), and XmCreateOptionMenu(Xm) 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
 XmNacceleratorText  XmCAcceleratorText  XmString         NULL           N/A
 XmNalignment        XmCAlignment        unsigned char    dynamic        CSG
 XmNfontList         XmCFontList         XmFontList       dynamic        CSG
 XmNlabelInsensitive-XmCLabelInsensitive-Pixmap           XmUNSPECIFIED_-CSG
 Pixmap              Pixmap                               PIXMAP
 XmNlabelPixmap      XmCLabelPixmap      Pixmap           XmUNSPECIFIED_-CSG
                                                          PIXMAP
 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  XmStringDirectiondynamic        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 XmCHighlightThicknessDimension        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:

       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 XmCascade-
    ButtonGadget 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 Cascade-
            ButtonGadget, posts the associated submenu, enables mouse traver-
            sal, 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 traver-
            sal 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 cas-
            cade are unposted.

    KActivate:
            Calls the callbacks in XmNcascadingCallback, and posts the sub-
            menu 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 cas-
            cade are unposted.  This action applies only to gadgets in Menu-
            Bars, PulldownMenus, and PopupMenus.  For a 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 sub-
            menu 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 cas-
            cade 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 XmNmappingDe-
            lay.

    <Leave>:
            If keyboard traversal is enabled does nothing.  Otherwise, in a
            MenuBar, disarms the CascadeButtonGadget if the submenu associ-
            ated 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 sub-
            menu associated with the CascadeButtonGadget, the CascadeBut-
            tonGadget 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(Xm).

 See also

    Object(Xm), RectObj(Xm), XmCascadeButtonHighlight(Xm),
    XmCreateCascadeButtonGadget(Xm), XmCreatePulldownMenu(Xm),
    XmCreatePopupMenu(Xm), XmCreateOptionMenu(Xm), XmGadget(Xm),
    XmLabelGadget(Xm) and XmRowColumn(Xm).


Typewritten Software • bear@typewritten.org • Edmonds, WA 98026