XmCascadeButton(3X)

XmCascadeButton - The CascadeButton widget class

As shipped in IRIX 6.5.22. Added in IRIX 6.5.5.

     NAME
          XmCascadeButton - The CascadeButton widget class

     SYNOPSIS
          #include <Xm/CascadeB.h>

     VERSION
          This page documents Motif 2.1.

     DESCRIPTION
          CascadeButton links two menu panes or a MenuBar to a menu
          pane.

          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 menu pane
          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 menu
          pane; or it can include only a label or a pixmap when it is
          in a MenuBar.  The positioning of the PulldownMenu with
          respect to the CascadeButton depends on the
          XmNlayoutDirection resource of the MenuShell.

          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.  BMenu
          also performs the BSelect actions in all types of menu
          systems.

          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 menu pane 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
          using 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 using the keyboard interface.

          If the Cascadebutton is in a Pulldown or Popup menu pane 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 uses the XmQTmenuSystem and
          XmQTspecifyRenderTable traits.

        Classes
          CascadeButton inherits behavior, resources, and traits from
          Core, XmPrimitive, and XmLabel classes.

          The class pointer is xmCascadeButtonWidgetClass.

          The class name is XmCascadeButton.

        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).

                                 XmCascadeButton Resource Set
          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 CascadeButton widget
                    and there is no submenu attached to pop up. The
                    activation occurs when a mouse button is released
                    or when the mnemonic associated with the widget is
                    typed. The specific mouse button depends on
                    information in the RowColumn parent. The reason
                    sent by the callback is XmCR_ACTIVATE.

          XmNcascadePixmap
                    Specifies the cascade pixmap displayed on one end
                    of the widget when a CascadeButton is used within
                    a Popup or Pulldown menu pane and a submenu is
                    attached.  The Label class resources
                    XmNmarginBottom, XmNmarginLeft, XmNmarginRight,
                    and XmNmarginTop may be modified to ensure that
                    room is left for the cascade pixmap.  The default
                    cascade pixmap is an arrow pointing to the side of
                    the menu where the submenu will appear.  The
                    positioning of the cascade pixmap to either the
                    left of right of the widget, and the direction of
                    the arrow, depend on the XmNlayoutDirection
                    resource of the MenuShell.

          XmNcascadingCallback
                    Specifies the list of callbacks that is called
                    just prior to the mapping of the submenu
                    associated with CascadeButton. The reason sent by
                    the callback is XmCR_CASCADING.

          XmNmappingDelay
                    Specifies the amount of time, in milliseconds,
                    between when a CascadeButton becomes armed and
                    when it maps its submenu. This delay is used only
                    when the widget is within a Popup or Pulldown menu
                    pane.  The value must not be negative.

          XmNsubMenuId
                    Specifies the widget ID for the Pulldown menu pane
                    to be associated with this CascadeButton. The
                    specified menu pane is displayed when the
                    CascadeButton becomes armed. The menu pane must
                    have been created with the appropriate parentage
                    depending on the type of menu used. See
                    XmCreateMenuBar(3), XmCreatePulldownMenu(3), and
                    XmCreatePopupMenu(3) for more information on the
                    menu systems.

        Inherited Resources
          CascadeButton 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.
                                                     XmLabel 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
          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
          XmNrenderTable              XmCRenderTable              XmRenderTable       dynamic                  CSG
          XmNstringDirection          XmCStringDirection          XmStringDirection   dynamic                  CSG

                                               XmPrimitive Resource Set
          Name                      Class                   Type               Default                Access
          XmNbottomShadowColor      XmCBottomShadowColor    Pixel              dynamic                CSG
          XmNbottomShadowPixmap     XmCBottomShadowPixmap   Pixmap             XmUNSPECIFIED_PIXMAP   CSG
          XmNconvertCallback        XmCCallback             XtCallbackList     NULL                   C
          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
          XmNlayoutDirection        XmCLayoutDirection      XmDirection        dynamic                CG
          XmNnavigationType         XmCNavigationType       XmNavigationType   XmNONE                 CSG
          XmNpopupHandlerCallback   XmCCallback             XtCallbackList     NULL                   C
          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

                                                        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

        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 due
                    to an XEvent

        Translations
          XmCascadeButton includes translations from XmPrimitive.
          XmCascadeButton includes the menu traversal translations
          from XmLabel.

          Note that altering translations in #overrideor #augment mode
          is undefined.

          The following list describes the translations for a
          CascadeButton in a MenuBar.  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 Documentation.

          <EnterWindow>Normal:
                    MenuBarEnter()

          <LeaveWindow>Normal:
                    MenuBarLeave()

          <Btn2Down>:
                    ProcessDrag()

          c<BtnDown>:
                    MenuButtonTakeFocusUp()

          c<BtnUp>: MenuButtonTakeFocusUp()

          ~c<BtnDown>:
                    MenuBarSelect()

          ~c<BtnUp>:
                    DoSelect()

          :<Key><osfSelect>:
                    KeySelect()

          :<Key><osfActivate>:
                    KeySelect()

          :<Key><osfHelp>:
                    Help()

          :<Key><osfCancel>:
                    CleanupMenuBar()

          ~s<Key>Return:
                    KeySelect()

          ~s<Key>space:
                    KeySelect()

          The following list describes the translations for a
          CascadeButton in a PullDown or Popup MenuPane.  In a Popup
          menu system, <Btn3> also performs the <Btn1> actions.

          <EnterWindow>:
                    DelayedArm()

          <LeaveWindow>:
                    CheckDisarm()

          <Btn2Down>:
                    ProcessDrag()

          c<BtnDown>:
                    MenuButtonTakeFocus()

          c<BtnUp>: MenuButtonTakeFocusUp()

          ~c<BtnDown>:
                    StartDrag()

          ~c<BtnUp>:
                    DoSelect()

          :<Key><osfSelect>:
                    KeySelect()

          :<Key><osfActivate>:
                    KeySelect()

          :<Key><osfHelp>:
                    Help()

          :<Key><osfCancel>:
                    CleanupMenuBar()

          ~s<Key>Return:
                    KeySelect()

          ~s<Key>space:
                    KeySelect()

        Action Routines
          The XmCascadeButton action routines are

          CleanupMenuBar():
                    In a MenuBar, disarms the CascadeButton and the
                    menu and, when the shell's keyboard focus policy
                    is XmEXPLICIT, restores keyboard focus to the
                    widget that had the focus before the menu was
                    entered.

                    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 XmEXPLICIT,
                    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 XmEXPLICIT,
                    restores keyboard focus to the widget from which
                    the menu was posted.

          DoSelect():
                    Calls the callbacks in XmNcascadingCallback, posts
                    the submenu attached to the CascadeButton and
                    enables keyboard traversal within the menu.  If
                    the CascadeButton does not have a submenu
                    attached, this action calls the callbacks in
                    XmNactivateCallback, activates the CascadeButton,
                    and unposts all posted menus in the cascade.

          Help():   Unposts all menus in the menu hierarchy and, when
                    the shell's keyboard focus policy is XmEXPLICIT,
                    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.

          KeySelect():
                    Calls the callbacks in XmNcascadingCallback, and
                    posts the submenu attached to the CascadeButton if
                    keyboard traversal is enabled in the menu.  If the
                    CascadeButton does not have a submenu attached,
                    this action calls the callbacks in
                    XmNactivateCallback, activates the CascadeButton,
                    and unposts all posted menus in the cascade.

          MenuBarSelect():
                    Unposts any menus posted by the parent menu.  Arms
                    both the CascadeButton and the MenuBar, posts the
                    associated submenu, and enables mouse traversal.
                    If the menu is already active, this event disables
                    keyboard traversal for the menu and returns the
                    menu to mouse traversal mode.

          StartDrag():
                    Arms the CascadeButton, posts the associated
                    submenu, and enables mouse traversal.  If the menu
                    is already active, this event disables keyboard
                    traversal for the menu and returns the menu to
                    mouse traversal mode.

        Additional Behavior
          Posting a submenu calls the XmNcascadingCallback callbacks.
          This widget has the following additional behavior:

          <EnterWindow>:
                    If keyboard traversal is enabled, does nothing.
                    Otherwise, in a MenuBar that is armed, unposts any
                    MenuPanes associated with another MenuBar entry,
                    arms the CascadeButton, and posts the associated
                    submenu.  In other menus, arms the CascadeButton
                    and posts the associated submenu after the delay
                    specified by XmNmappingDelay.

          <LeaveWindow>:
                    If keyboard traversal is enabled does nothing.
                    Otherwise, in a MenuBar that is armed, disarms the
                    CascadeButton if the submenu associated with the
                    CascadeButton is not currently posted or if there
                    is no submenu associated with the CascadeButton.

                    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.

        Virtual Bindings
          The bindings for virtual keys are vendor specific.  For
          information about bindings for virtual buttons and keys, see
          VirtualBindings(3).

     RELATED
          Core(3), XmCascadeButtonHighlight(3),
          XmCreateCascadeButton(3), XmCreateMenuBar(3),
          XmCreatePulldownMenu(3), XmCreatePopupMenu(3), XmLabel(3),
          XmPrimitive(3), and XmRowColumn(3).