


     XXmmPPaanneeddWWiinnddooww((33XX))        RReeffeerreennccee PPaaggeess        XXmmPPaanneeddWWiinnddooww((33XX))



     NNAAMMEE
          XXmmPPaanneeddWWiinnddooww-The PanedWindow widget class

     SSYYNNOOPPSSIISS
          ##iinncclluuddee <<XXmm//PPaanneeddWW..hh>>


     DDEESSCCRRIIPPTTIIOONN
          PanedWindow is a composite widget that lays out children in
          a vertically tiled format.  Children appear in top-to-bottom
          fashion, with the first child inserted appearing at the top
          of the PanedWindow and the last child inserted appearing at
          the bottom.  The PanedWindow grows to match the width of its
          widest child and all other children are forced to this
          width. The height of the PanedWindow is equal to the sum of
          the heights of all its children, the spacing between them,
          and the size of the top and bottom margins.

          The user can also adjust the size of the panes.  To
          facilitate this adjustment, a pane control sash is created
          for most children.  The sash appears as a square box
          positioned on the bottom of the pane that it controls.  The
          user can adjust the size of a pane by using the mouse or
          keyboard.

          The PanedWindow is also a constraint widget, which means
          that it creates and manages a set of constraints for each
          child.  You can specify a minimum and maximum size for each
          pane.  The PanedWindow does not allow a pane to be resized
          below its minimum size or beyond its maximum size.  Also,
          when the minimum size of a pane is equal to its maximum
          size, no control sash is presented for that pane or for the
          lowest pane.

          The default XXmmNNiinnsseerrttPPoossiittiioonn procedure for PanedWindow
          causes sashes to be inserted at the end of the list of
          children and causes non-sash widgets to be inserted after
          other non-sash children but before any sashes.

          All panes and sashes in a PanedWindow must be tab groups.
          When a pane is inserted as a child of the PanedWindow, if
          the pane's XXmmNNnnaavviiggaattiioonnTTyyppee is not XXmmEEXXCCLLUUSSIIVVEE__TTAABB__GGRROOUUPP,
          PanedWindow sets it to XXmmSSTTIICCKKYY__TTAABB__GGRROOUUPP.

        CCllaasssseess
          PanedWindow inherits behavior and resources from the CCoorree,
          CCoommppoossiittee, CCoonnssttrraaiinntt, and XXmmMMaannaaggeerr classes.

          The class pointer is xxmmPPaanneeddWWiinnddoowwWWiiddggeettCCllaassss.

          The class name is XXmmPPaanneeddWWiinnddooww.




     1-597                                            (printed 5/7/92)






     XXmmPPaanneeddWWiinnddooww((33XX))        RReeffeerreennccee PPaaggeess        XXmmPPaanneeddWWiinnddooww((33XX))



        NNeeww RReessoouurrcceess
          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 XXmmNN or XXmmCC
          prefix and use the remaining letters.  To specify one of the
          defined values for a resource in a .Xdefaults file, remove
          the XXmm 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
          XXttSSeettVVaalluueess (S), retrieved by using XXttGGeettVVaalluueess (G), or is
          not applicable (N/A).

                             XXmmPPaanneeddWWiinnddooww RReessoouurrccee SSeett
     NNaammee                     CCllaassss                TTyyppee        DDeeffaauulltt   AAcccceessss
     __________________________________________________________________________
     XmNmarginHeight          XmCMarginHeight      Dimension   3         CSG
     XmNmarginWidth           XmCMarginWidth       Dimension   3         CSG
     XmNrefigureMode          XmCBoolean           Boolean     True      CSG
     XmNsashHeight             XmCSashHeight       Dimension   10        CSG
     XmNsashIndent            XmCSashIndent        Position    -10       CSG
     XmNsashShadowThickness   XmCShadowThickness   Dimension   dynamic   CSG
     XmNsashWidth              XmCSashWidth        Dimension   10        CSG
     XmNseparatorOn           XmCSeparatorOn       Boolean     True      CSG
     XmNspacing               XmCSpacing           Dimension   8         CSG


          XXmmNNmmaarrggiinnHHeeiigghhtt
                    Specifies the distance between the top and bottom
                    edges of the PanedWindow and its children.

          XXmmNNmmaarrggiinnWWiiddtthh
                    Specifies the distance between the left and right
                    edges of the PanedWindow and its children.

          XXmmNNrreeffiigguurreeMMooddee
                    Determines whether the panes' positions are
                    recomputed and repositioned when programmatic
                    changes are being made to the PanedWindow.
                    Setting this resource to True resets the children
                    to their appropriate positions.

          XXmmNNssaasshhHHeeiigghhtt
                    Specifies the height of the sash.

          XXmmNNssaasshhIInnddeenntt
                    Specifies the horizontal placement of the sash
                    along each pane.  A positive value causes the sash
                    to be offset from the near (left) side of the
                    PanedWindow, and a negative value causes the sash



     1-598                                            (printed 5/7/92)






     XXmmPPaanneeddWWiinnddooww((33XX))        RReeffeerreennccee PPaaggeess        XXmmPPaanneeddWWiinnddooww((33XX))



                    to be offset from the far (right) side of the
                    PanedWindow.  If the offset is greater than the
                    width of the PanedWindow minus the width of the
                    sash, the sash is placed flush against the near
                    side of the PanedWindow.

                    Whether the placement actually corresponds to the
                    left or right side of the PanedWindow may depend
                    on the value of the XXmmNNssttrriinnggDDiirreeccttiioonn resource.

          XXmmNNssaasshhSShhaaddoowwTThhiicckknneessss
                    Specifies the thickness of the shadows of the
                    sashes.

          XXmmNNssaasshhWWiiddtthh
                    Specifies the width of the sash.

          XXmmNNsseeppaarraattoorrOOnn
                    Determines whether a separator is created between
                    each of the panes.  Setting this resource to True
                    creates a Separator at the midpoint between each
                    of the panes.

          XXmmNNssppaacciinngg
                    Specifies the distance between each child pane.

                          XXmmPPaanneeddWWiinnddooww CCoonnssttrraaiinntt RReessoouurrccee SSeett
        NNaammee               CCllaassss              TTyyppee        DDeeffaauulltt           AAcccceessss
        __________________________________________________________________________
        XmNallowResize     XmCBoolean         Boolean     False             CSG
        XmNpaneMaximum     XmCPaneMaximum     Dimension   1000              CSG
        XmNpaneMinimum     XmCPaneMinimum     Dimension   1                 CSG
        XmNpositionIndex   XmCPositionIndex   short       XmLAST_POSITION   CSG
        XmNskipAdjust      XmCBoolean         Boolean     False             CSG

          XXmmNNaalllloowwRReessiizzee
                    Allows an application to specify whether the
                    PanedWindow should allow a pane to request to be
                    resized.  This flag has an effect only after the
                    PanedWindow and its children have been realized.
                    If this flag is set to True, the PanedWindow tries
                    to honor requests to alter the height of the pane.
                    If False, it always denies pane requests to
                    resize.

          XXmmNNppaanneeMMaaxxiimmuumm
                    Allows an application to specify the maximum size
                    to which a pane may be resized.  This value must
                    be greater than the specified minimum.

          XXmmNNppaanneeMMiinniimmuumm
                    Allows an application to specify the minimum size



     1-599                                            (printed 5/7/92)






     XXmmPPaanneeddWWiinnddooww((33XX))        RReeffeerreennccee PPaaggeess        XXmmPPaanneeddWWiinnddooww((33XX))



                    to which a pane may be resized.  This value must
                    be greater than 0.

          XXmmNNppoossiittiioonnIInnddeexx
                    Specifies the position of the widget in its
                    parent's list of children (the list of pane
                    children, not including sashes).  The value is an
                    integer that is no less than zero and no greater
                    than the number of children in the list at the
                    time the value is specified.  A value of zero
                    means that the child is placed at the beginning of
                    the list.  The value can also be  specified as
                    XXmmLLAASSTT__PPOOSSIITTIIOONN (the default), which means that
                    the child is placed at the end of the list.  Any
                    other value is ignored.  XXttGGeettVVaalluueess returns the
                    position of the widget in its parent's child list
                    at the time of the call to XXttGGeettVVaalluueess.

                    When a widget is inserted into its parent's child
                    list, the positions of any existing children that
                    are greater than or equal to the specified
                    widget's XXmmNNppoossiittiioonnIInnddeexx are increased by one.
                    The effect of a call to XXttSSeettVVaalluueess for
                    XXmmNNppoossiittiioonnIInnddeexx is to remove the specified widget
                    from its parent's child list, decrease by one the
                    positions of any existing children that are
                    greater than the specified widget's former
                    position in the list, and then insert the
                    specified widget into its parent's child list as
                    described in the preceding sentence.

          XXmmNNsskkiippAAddjjuusstt
                    When set to True, this Boolean resource allows an
                    application to specify that the PanedWindow should
                    not automatically resize this pane.


        IInnhheerriitteedd RReessoouurrcceess
          PanedWindow inherits behavior and resources from the
          following superclasses.  For a complete description of each
          resource, refer to the man page for that superclass.

                                          XXmmMMaannaaggeerr RReessoouurrccee SSeett
     NNaammee                    CCllaassss                   TTyyppee                DDeeffaauulltt                AAcccceessss
     _________________________________________________________________________________________________
     XmNbottomShadowColor    XmCBottomShadowColor    Pixel               dynamic                CSG
     XmNbottomShadowPixmap   XmCBottomShadowPixmap   Pixmap              XmUNSPECIFIED_PIXMAP   CSG
     XmNforeground           XmCForeground           Pixel               dynamic                CSG







     1-600                                            (printed 5/7/92)






     XXmmPPaanneeddWWiinnddooww((33XX))        RReeffeerreennccee PPaaggeess        XXmmPPaanneeddWWiinnddooww((33XX))



     XmNhelpCallback         XmCCallback             XtCallbackList      NULL                   C
     XmNhighlightColor       XmCHighlightColor       Pixel               dynamic                CSG
     XmNhighlightPixmap      XmCHighlightPixmap      Pixmap              dynamic                CSG
     XmNinitialFocus         XmCInitialFocus         Widget              NULL                   CSG
     XmNnavigationType       XmCNavigationType       XmNavigationType    XmTAB_GROUP            CSG
     XmNshadowThickness      XmCShadowThickness      Dimension           2                      CSG
     XmNstringDirection      XmCStringDirection      XmStringDirection   dynamic                CG
     XmNtopShadowColor       XmCTopShadowColor       Pixel               dynamic                CSG
     XmNtopShadowPixmap      XmCTopShadowPixmap      Pixmap              dynamic                CSG
     XmNtraversalOn          XmCTraversalOn          Boolean             True                   CSG
     XmNunitType             XmCUnitType             unsigned char       dynamic                CSG
     XmNuserData             XmCUserData             XtPointer           NULL                   CSG

                                                   CCoorree RReessoouurrccee SSeett
     NNaammee                            CCllaassss                           TTyyppee             DDeeffaauulltt                AAcccceessss
     ______________________________________________________________________________________________________________
     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

                                  CCoommppoossiittee RReessoouurrccee SSeett
     NNaammee                CCllaassss               TTyyppee          DDeeffaauulltt             AAcccceessss
     ________________________________________________________________________________
     XmNchildren         XmCReadOnly         WidgetList    NULL                G
     XmNinsertPosition   XmCInsertPosition   XtOrderProc   default procedure   CSG
     XmNnumChildren      XmCReadOnly         Cardinal      0                   G

        TTrraannssllaattiioonnss
          XmPanedWindow inherits translations from XmManager.

          The translations for sashes within the PanedWindow are
          listed below.  These translations may not directly
          correspond to a translation table.

          BBSSeelleecctt PPrreessss:: SSaasshhAAccttiioonn((SSttaarrtt))
          BBSSeelleecctt MMoottiioonn::SSaasshhAAccttiioonn((MMoovvee))



     1-601                                            (printed 5/7/92)






     XXmmPPaanneeddWWiinnddooww((33XX))        RReeffeerreennccee PPaaggeess        XXmmPPaanneeddWWiinnddooww((33XX))



          BBSSeelleecctt RReelleeaassee::SSaasshhAAccttiioonn((CCoommmmiitt))

          BBDDrraagg PPrreessss::   SSaasshhAAccttiioonn((SSttaarrtt))
          BBDDrraagg MMoottiioonn::  SSaasshhAAccttiioonn((MMoovvee))
          BBDDrraagg RReelleeaassee:: SSaasshhAAccttiioonn((CCoommmmiitt))

          KKUUpp::           SSaasshhAAccttiioonn((KKeeyy,,DDeeffaauullttIInnccrr,,UUpp))
          MMCCttrrll KKUUpp::     SSaasshhAAccttiioonn((KKeeyy,,LLaarrggeeIInnccrr,,UUpp))

          KKDDoowwnn::         SSaasshhAAccttiioonn((KKeeyy,,DDeeffaauullttIInnccrr,,DDoowwnn))
          MMCCttrrll KKDDoowwnn::   SSaasshhAAccttiioonn((KKeeyy,,LLaarrggeeIInnccrr,,DDoowwnn))

          KKNNeexxttFFiieelldd::    NNeexxttTTaabbGGrroouupp(())
          KKPPrreevvFFiieelldd::    PPrreevvTTaabbGGrroouupp(())

          KKHHeellpp::         HHeellpp(())


        AAccttiioonn RRoouuttiinneess
          The XmPanedWindow action routines are described below:


          HHeellpp(()):   Calls the callbacks for XXmmNNhheellppCCaallllbbaacckk 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.

          NNeexxttTTaabbGGrroouupp(()):
                    Moves the keyboard focus to the next tab group.
                    By default each pane and sash is a tab group.

          PPrreevvTTaabbGGrroouupp(()):
                    Moves the keyboard focus to the previous tab
                    group.  By default each pane and sash is a tab
                    group.

          SSaasshhAAccttiioonn((_a_c_t_i_o_n)) or SSaasshhAAccttiioonn((KKeeyy,,_i_n_c_r_e_m_e_n_t,,_d_i_r_e_c_t_i_o_n)):
                    The SSttaarrtt action activates the interactive
                    placement of the pane's borders.  The MMoovvee action
                    causes the sash to track the position of the
                    pointer.  If one of the panes reaches its minimum
                    or maximum size, adjustment continues with the
                    next adjustable pane.  The CCoommmmiitt action ends sash
                    motion.

                    When sash action is caused by a keyboard event,
                    the sash with the keyboard focus is moved
                    according to the _i_n_c_r_e_m_e_n_t and _d_i_r_e_c_t_i_o_n
                    specified.  DDeeffaauullttIInnccrr adjusts the sash by one
                    line.  LLaarrggeeIInnccrr adjusts the sash by one view
                    region.  The _d_i_r_e_c_t_i_o_n is specified as either UUpp
                    or DDoowwnn.



     1-602                                            (printed 5/7/92)






     XXmmPPaanneeddWWiinnddooww((33XX))        RReeffeerreennccee PPaaggeess        XXmmPPaanneeddWWiinnddooww((33XX))



                    Note that the SashAction action routine is not a
                    direct action routine of the XmPanedWindow, but
                    rather an action of the Sash control created by
                    the XmPanedWindow.


        AAddddiittiioonnaall BBeehhaavviioorr
          This widget has the additional behavior described below:


          <<FFooccuussIInn>>:
                    Moves the keyboard focus to the sash and
                    highlights it.

          <<FFooccuussOOuutt>>:
                    Unsets the keyboard focus in the sash and
                    unhighlights it.


        VViirrttuuaall BBiinnddiinnggss
          The bindings for virtual keys are vendor specific.  For
          information about bindings for virtual buttons and keys, see
          VViirrttuuaallBBiinnddiinnggss((33XX)).

     RREELLAATTEEDD IINNFFOORRMMAATTIIOONN
          CCoommppoossiittee((33XX)), CCoonnssttrraaiinntt((33XX)), CCoorree((33XX)),
          XXmmCCrreeaatteePPaanneeddWWiinnddooww((33XX)), and XXmmMMaannaaggeerr((33XX)).




























     1-603                                            (printed 5/7/92)






     XXmmPPrriimmiittiivvee((33XX))          RReeffeerreennccee PPaaggeess          XXmmPPrriimmiittiivvee((33XX))



     NNAAMMEE
          XXmmPPrriimmiittiivvee-The Primitive widget class

     SSYYNNOOPPSSIISS
          ##iinncclluuddee <<XXmm//XXmm..hh>>


     DDEESSCCRRIIPPTTIIOONN
          Primitive is a widget class used as a supporting superclass
          for other widget classes.  It handles border drawing and
          highlighting, traversal activation and deactivation, and
          various callback lists needed by Primitive widgets.

        CCllaasssseess
          Primitive inherits behavior and resources from CCoorree class.

          The class pointer is xxmmPPrriimmiittiivveeWWiiddggeettCCllaassss.

          The class name is XXmmPPrriimmiittiivvee.

        NNeeww RReessoouurrcceess
          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 XXmmNN or XXmmCC
          prefix and use the remaining letters.  To specify one of the
          defined values for a resource in a .Xdefaults file, remove
          the XXmm 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
          XXttSSeettVVaalluueess (S), retrieved by using XXttGGeettVVaalluueess (G), or is
          not applicable (N/A).

                                         XXmmPPrriimmiittiivvee RReessoouurrccee SSeett
     NNaammee                    CCllaassss                   TTyyppee               DDeeffaauulltt                AAcccceessss
     ________________________________________________________________________________________________
     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          2                      CSG
     XmNnavigationType       XmCNavigationType       XmNavigationType   XmNONE                 CSG
     XmNshadowThickness      XmCShadowThickness      Dimension          2                      CSG







     1-604                                            (printed 5/7/92)






     XXmmPPrriimmiittiivvee((33XX))          RReeffeerreennccee PPaaggeess          XXmmPPrriimmiittiivvee((33XX))



     XmNtopShadowColor       XmCTopShadowColor       Pixel              dynamic                CSG
     XmNtopShadowPixmap      XmCTopShadowPixmap      Pixmap             dynamic                CSG
     XmNtraversalOn          XmCTraversalOn          Boolean            True                   CSG
     XmNunitType             XmCUnitType             unsigned char      dynamic                CSG
     XmNuserData             XmCUserData             XtPointer          NULL                   CSG


          XXmmNNbboottttoommSShhaaddoowwCCoolloorr
                    Specifies the color to use to draw the bottom and
                    right sides of the border shadow.  This color is
                    used if the XXmmNNttooppSShhaaddoowwPPiixxmmaapp resource is
                    unspecified.

          XXmmNNbboottttoommSShhaaddoowwPPiixxmmaapp
                    Specifies the pixmap to use to draw the bottom and
                    right sides of the border shadow.

          XXmmNNffoorreeggrroouunndd
                    Specifies the foreground drawing color used by
                    Primitive widgets.

          XXmmNNhheellppCCaallllbbaacckk
                    Specifies the list of callbacks that is called
                    when the help key is pressed.  The reason sent by
                    the callback is XXmmCCRR__HHEELLPP.

          XXmmNNhhiigghhlliigghhttCCoolloorr
                    Specifies the color of the highlighting rectangle.
                    This color is used if the highlight pixmap
                    resource is XXmmUUNNSSPPEECCIIFFIIEEDD__PPIIXXMMAAPP.

          XXmmNNhhiigghhlliigghhttOOnnEEnntteerr
                    Specifies if the highlighting rectangle is drawn
                    when the cursor moves into the widget.  If the
                    shell's focus policy is XXmmEEXXPPLLIICCIITT, this resource
                    is ignored, and the widget is highlighted when it
                    has the focus.  If the shell's focus policy is
                    XXmmPPOOIINNTTEERR and if this resource is True, the
                    highlighting rectangle is drawn when the the
                    cursor moves into the widget.  If the shell's
                    focus policy is XXmmPPOOIINNTTEERR and if this resource is
                    False, the highlighting rectangle is not drawn
                    when the the cursor moves into the widget.  The
                    default is False.

          XXmmNNhhiigghhlliigghhttPPiixxmmaapp
                    Specifies the pixmap used to draw the highlighting
                    rectangle.

          XXmmNNhhiigghhlliigghhttTThhiicckknneessss
                    Specifies the thickness of the highlighting
                    rectangle.



     1-605                                            (printed 5/7/92)






     XXmmPPrriimmiittiivvee((33XX))          RReeffeerreennccee PPaaggeess          XXmmPPrriimmiittiivvee((33XX))



          XXmmNNnnaavviiggaattiioonnTTyyppee
                    Determines whether the widget is a tab group.


                      +o  XXmmNNOONNEE indicates that the widget is not a tab
                         group.

                      +o  XXmmTTAABB__GGRROOUUPP indicates that the widget is a
                         tab group, unless another widget in the
                         hierarchy has an XXmmNNnnaavviiggaattiioonnTTyyppee of
                         XXmmEEXXCCLLUUSSIIVVEE__TTAABB__GGRROOUUPP.

                      +o  XXmmSSTTIICCKKYY__TTAABB__GGRROOUUPP indicates that the widget
                         is a tab group, even if another widget in the
                         hierarchy has an XXmmNNnnaavviiggaattiioonnTTyyppee of
                         XXmmEEXXCCLLUUSSIIVVEE__TTAABB__GGRROOUUPP.

                      +o  XXmmEEXXCCLLUUSSIIVVEE__TTAABB__GGRROOUUPP indicates that the
                         widget is a tab group and that widgets in the
                         hierarchy whose XXmmNNnnaavviiggaattiioonnTTyyppee is
                         XXmmTTAABB__GGRROOUUPP are not tab groups.

                         When a parent widget has an XXmmNNnnaavviiggaattiioonnTTyyppee
                         of XXmmEEXXCCLLUUSSIIVVEE__TTAABB__GGRROOUUPP, traversal of non-
                         tab-group widgets within the group is based
                         on the order of those widgets in their
                         parent's XXmmNNcchhiillddrreenn list.

                         When any widget in a hierarchy has an
                         XXmmNNnnaavviiggaattiioonnTTyyppee of XXmmEEXXCCLLUUSSIIVVEE__TTAABB__GGRROOUUPP,
                         traversal of tab groups in the hierarchy
                         proceeds to widgets in the order in which
                         their XXmmNNnnaavviiggaattiioonnTTyyppee resources were
                         specified as XXmmEEXXCCLLUUSSIIVVEE__TTAABB__GGRROOUUPP or
                         XXmmSSTTIICCKKYY__TTAABB__GGRROOUUPP, whether by creating the
                         widgets with that value, by calling
                         XXttSSeettVVaalluueess, or by calling XXmmAAddddTTaabbGGrroouupp.


          XXmmNNsshhaaddoowwTThhiicckknneessss
                    Specifies the size of the drawn border shadow.

          XXmmNNttooppSShhaaddoowwCCoolloorr
                    Specifies the color to use to draw the top and
                    left sides of the border shadow.  This color is
                    used if the XXmmNNttooppSShhaaddoowwPPiixxmmaapp resource is
                    unspecified.

          XXmmNNttooppSShhaaddoowwPPiixxmmaapp
                    Specifies the pixmap to use to draw the top and
                    left sides of the border shadow.




     1-606                                            (printed 5/7/92)






     XXmmPPrriimmiittiivvee((33XX))          RReeffeerreennccee PPaaggeess          XXmmPPrriimmiittiivvee((33XX))



          XXmmNNttrraavveerrssaallOOnn
                    Specifies if traversal is activated for this
                    widget.  In CascadeButton and CascadeButtonGadget,
                    this resource is forced to TRUE unless the parent
                    is an OptionMenu.

          XXmmNNuunniittTTyyppee
                    Provides the basic support for resolution
                    independence.  It defines the type of units a
                    widget uses with sizing and positioning resources.
                    If the widget's parent is a subclass of XXmmMMaannaaggeerr
                    and if the XXmmNNuunniittTTyyppee resource is not explicitly
                    set, it defaults to the unit type of the parent
                    widget.  If the widget's parent is not a subclass
                    of XXmmMMaannaaggeerr, the resource has a default unit type
                    of XXmmPPIIXXEELLSS.

                    XXmmNNuunniittTTyyppee can have the following values:


                      +o  XXmmPPIIXXEELLSS-all values provided to the widget
                         are treated as normal pixel values.

                      +o  XXmm110000TTHH__MMIILLLLIIMMEETTEERRSS-all values provided to
                         the widget are treated as 1/100 millimeter.

                      +o  XXmm11000000TTHH__IINNCCHHEESS-all values provided to the
                         widget are treated as 1/1000 inch.

                      +o  XXmm110000TTHH__PPOOIINNTTSS-all values provided to the
                         widget are treated as 1/100 point.  A point
                         is a unit used in text processing
                         applications and is defined as 1/72 inch.

                      +o  XXmm110000TTHH__FFOONNTT__UUNNIITTSS-all values provided to the
                         widget are treated as 1/100 of a font unit.
                         A font unit has horizontal and vertical
                         components.  These are the values of the
                         XmScreen resources XXmmNNhhoorriizzoonnttaallFFoonnttUUnniitt and
                         XXmmNNvveerrttiiccaallFFoonnttUUnniitt.


          XXmmNNuusseerrDDaattaa
                    Allows the application to attach any necessary
                    specific data to the widget.  It is an internally
                    unused resource.


        DDyynnaammiicc CCoolloorr DDeeffaauullttss
          The foreground, background, top shadow, bottom shadow, and
          highlight color resources are dynamically defaulted.  If no
          color data is specified, the colors are automatically



     1-607                                            (printed 5/7/92)






     XXmmPPrriimmiittiivvee((33XX))          RReeffeerreennccee PPaaggeess          XXmmPPrriimmiittiivvee((33XX))



          generated.  On a single-plane system, a black and white
          color scheme is generated.  Otherwise, four colors are
          generated, which display the correct shading for the 3-D
          visuals.  If the background is the only color specified for
          a widget, the top shadow and bottom shadow colors are
          generated to give the 3-D appearance.  Foreground and
          highlight colors are generated to provide sufficient
          contrast with the background color.

          Colors are generated only at creation.  Resetting the
          background through XXttSSeettVVaalluueess does not regenerate the other
          colors.  XXmmCChhaannggeeCCoolloorr can be used to recalculate all
          associated colors based on a new background color.

        IInnhheerriitteedd RReessoouurrcceess
          Primitive inherits behavior and resources from the following
          superclass.  For a complete description of each resource,
          refer to the man page for that superclass.

                                                   CCoorree RReessoouurrccee SSeett
     NNaammee                            CCllaassss                           TTyyppee             DDeeffaauulltt                AAcccceessss
     ______________________________________________________________________________________________________________
     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

        CCaallllbbaacckk IInnffoorrmmaattiioonn
          A pointer to the following structure is passed to each
          callback:

          ttyyppeeddeeff ssttrruucctt
          {{
            iinntt          _r_e_a_s_o_n;;
            XXEEvveenntt       * _e_v_e_n_t;;
          }} XXmmAAnnyyCCaallllbbaacckkSSttrruucctt;;




     1-608                                            (printed 5/7/92)






     XXmmPPrriimmiittiivvee((33XX))          RReeffeerreennccee PPaaggeess          XXmmPPrriimmiittiivvee((33XX))



          _r_e_a_s_o_n Indicates why the callback was invoked.  For this
                 callback, _r_e_a_s_o_n is set to XXmmCCRR__HHEELLPP.

          _e_v_e_n_t  Points to the XXEEvveenntt that triggered the callback.


        TTrraannssllaattiioonnss
          The XmPrimitive translations are listed below.  These
          translations may not directly correspond to a translation
          table.

          Note that for buttons in menus, altering translations in
          ##oovveerrrriiddee or ##aauuggmmeenntt mode is undefined.

          KKUUpp::           PPrriimmiittiivveeTTrraavveerrsseeUUpp(())
          KKDDoowwnn::         PPrriimmiittiivveeTTrraavveerrsseeDDoowwnn(())
          KKLLeefftt::         PPrriimmiittiivveeTTrraavveerrsseeLLeefftt(())
          KKRRiigghhtt::        PPrriimmiittiivveeTTrraavveerrsseeRRiigghhtt(())

          KKBBeeggiinnLLiinnee::    PPrriimmiittiivveeTTrraavveerrsseeHHoommee(())

          KKNNeexxttFFiieelldd::    PPrriimmiittiivveeNNeexxttTTaabbGGrroouupp(())
          KKPPrreevvFFiieelldd::    PPrriimmiittiivveePPrreevvTTaabbGGrroouupp(())

          KKAAccttiivvaattee::     PPrriimmiittiivveePPaarreennttAAccttiivvaattee(())
          KKCCaanncceell::       PPrriimmiittiivveePPaarreennttCCaanncceell(())

          KKHHeellpp::         PPrriimmiittiivveeHHeellpp(())


        AAccttiioonn RRoouuttiinneess
          The XmPrimitive action routines are described below:


          PPrriimmiittiivveeHHeellpp(()):
                    Calls the callbacks for XXmmNNhheellppCCaallllbbaacckk 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.

          PPrriimmiittiivveeNNeexxttTTaabbGGrroouupp(()):
                    Traverses to the first item in the next tab group.
                    If the current tab group is the last entry in the
                    tab group list, it wraps to the beginning of the
                    tab group list.

          PPrriimmiittiivveePPaarreennttAAccttiivvaattee(()):
                    If the parent is a manager, passes the KKAAccttiivvaattee
                    event received by the widget to the parent.

          PPrriimmiittiivveePPaarreennttCCaanncceell(()):
                    If the parent is a manager, Passes the KKCCaanncceell



     1-609                                            (printed 5/7/92)






     XXmmPPrriimmiittiivvee((33XX))          RReeffeerreennccee PPaaggeess          XXmmPPrriimmiittiivvee((33XX))



                    event received by the widget to the parent.

          PPrriimmiittiivveePPrreevvTTaabbGGrroouupp(()):
                    Traverses to the first item in the previous tab
                    group.  If the beginning of the tab group list is
                    reached, it wraps to the end of the tab group
                    list.

          PPrriimmiittiivveeTTrraavveerrsseeDDoowwnn(()):
                    Traverses to the next item below the current
                    widget in the current tab group, wrapping if
                    necessary.

          PPrriimmiittiivveeTTrraavveerrsseeHHoommee(()):
                    Traverses to the first widget or gadget in the
                    current tab group.

          PPrriimmiittiivveeTTrraavveerrsseeLLeefftt(()):
                    Traverses to the next item to the left of the
                    current widget in the current tab group, wrapping
                    if necessary.

          PPrriimmiittiivveeTTrraavveerrsseeNNeexxtt(()):
                    Traverses to the next item in the current tab
                    group, wrapping if necessary.

          PPrriimmiittiivveeTTrraavveerrsseePPrreevv(()):
                    Traverses to the previous item in the current tab
                    group, wrapping if necessary.

          PPrriimmiittiivveeTTrraavveerrsseeRRiigghhtt(()):
                    Traverses to the next item to the right of the
                    current gadget in the current tab group, wrapping
                    if necessary.

          PPrriimmiittiivveeTTrraavveerrsseeUUpp(()):
                    Traverses to the next item above the current
                    gadget in the current tab group, wrapping if
                    necessary.


        AAddddiittiioonnaall BBeehhaavviioorr
          This widget has the additional behavior described below:


          <<FFooccuussIInn>>:
                    If the shell's keyboard focus policy is
                    XXmmEEXXPPLLIICCIITT, highlights the widget and gives it the
                    focus.

          <<FFooccuussOOuutt>>:
                    If the shell's keyboard focus policy is



     1-610                                            (printed 5/7/92)






     XXmmPPrriimmiittiivvee((33XX))          RReeffeerreennccee PPaaggeess          XXmmPPrriimmiittiivvee((33XX))



                    XXmmEEXXPPLLIICCIITT, unhighlights the widget and removes
                    the focus.


        VViirrttuuaall BBiinnddiinnggss
          The bindings for virtual keys are vendor specific.  For
          information about bindings for virtual buttons and keys, see
          VViirrttuuaallBBiinnddiinnggss((33XX)).

     RREELLAATTEEDD IINNFFOORRMMAATTIIOONN
          CCoorree((33XX)), XXmmCChhaannggeeCCoolloorr((33XX)), and XXmmSSccrreeeenn((33XX)).












































     1-611                                            (printed 5/7/92)






     XXmmPPrroocceessssTTrraavveerrssaall((33XX))   RReeffeerreennccee PPaaggeess   XXmmPPrroocceessssTTrraavveerrssaall((33XX))



     NNAAMMEE
          XXmmPPrroocceessssTTrraavveerrssaall-A function that determines which
          component receives keyboard events when a widget has the
          focus

     SSYYNNOOPPSSIISS
          ##iinncclluuddee <<XXmm//XXmm..hh>>

          BBoooolleeaann XXmmPPrroocceessssTTrraavveerrssaall ((_w_i_d_g_e_t, _d_i_r_e_c_t_i_o_n))
               WWiiddggeett         _w_i_d_g_e_t;;
               XXmmTTrraavveerrssaallDDiirreeccttiioonn_d_i_r_e_c_t_i_o_n;;


     DDEESSCCRRIIPPTTIIOONN
          XXmmPPrroocceessssTTrraavveerrssaall determines which component of a hierarchy
          receives keyboard events when the hierarchy that contains
          the given widget has keyboard focus.  Using
          XXmmPPrroocceessssTTrraavveerrssaall to traverse to MenuBars, Pulldown
          MenuPanes, or Popup MenuPanes is not supported.


          _w_i_d_g_e_t      Specifies the widget ID of the widget whose
                      hierarchy is to be traversed.  The hierarchy is
                      only traversed up to the top of the shell.  If
                      that shell does not currently have the focus,
                      any changes to the element with focus within
                      that shell will not occur until the next time
                      the shell recieves focus.

          _d_i_r_e_c_t_i_o_n   Specifies the direction of traversal


          The _d_i_r_e_c_t_i_o_n parameter can have the following values, which
          cause the routine to take the corresponding actions:


            +o  XXmmTTRRAAVVEERRSSEE__CCUURRRREENNTT-Finds the hierarchy and the tab
               group that contain _w_i_d_g_e_t.  If this tab group is not
               the active tab group, makes it the active tab group.
               If _w_i_d_g_e_t is an item in the active tab group, makes it
               the active item.  If _w_i_d_g_e_t is the active tab group,
               makes the first traversable item in the tab group the
               active item.

            +o  XXmmTTRRAAVVEERRSSEE__DDOOWWNN-Finds the hierarchy that contains
               _w_i_d_g_e_t.  Finds the active item in the active tab group
               and makes the item below it the active item.  If there
               is no item below, wraps.

            +o  XXmmTTRRAAVVEERRSSEE__HHOOMMEE-Finds the hierarchy that contains
               _w_i_d_g_e_t.  Finds the active item in the active tab group
               and makes the first traversable item in the tab group



     1-612                                            (printed 5/7/92)






     XXmmPPrroocceessssTTrraavveerrssaall((33XX))   RReeffeerreennccee PPaaggeess   XXmmPPrroocceessssTTrraavveerrssaall((33XX))



               the active item.

            +o  XXmmTTRRAAVVEERRSSEE__LLEEFFTT-Finds the hierarchy that contains
               _w_i_d_g_e_t.  Finds the active item in the active tab group
               and makes the item to the left the active item.  If
               there is no item to the left, wraps.

            +o  XXmmTTRRAAVVEERRSSEE__NNEEXXTT-Finds the hierarchy that contains
               _w_i_d_g_e_t.  Finds the active item in the active tab group
               and makes the next item in child order the active item.

            +o  XXmmTTRRAAVVEERRSSEE__NNEEXXTT__TTAABB__GGRROOUUPP-Finds the hierarchy that
               contains _w_i_d_g_e_t.  Finds the active tab group (if any)
               and makes the next tab group the active tab group in
               the hierarchy.

            +o  XXmmTTRRAAVVEERRSSEE__PPRREEVV-Finds the hierarchy that contains
               _w_i_d_g_e_t.  Finds the active item in the active tab group
               and makes the previous item in child order the active
               item.

            +o  XXmmTTRRAAVVEERRSSEE__PPRREEVV__TTAABB__GGRROOUUPP-Finds the hierarchy that
               contains _w_i_d_g_e_t.  Finds the active tab group (if any)
               and makes the previous tab group the active tab group
               in the hierarchy.

            +o  XXmmTTRRAAVVEERRSSEE__RRIIGGHHTT-Finds the hierarchy that contains
               _w_i_d_g_e_t. Finds the active item in the active tab group
               and makes the item to the right the active item.  If
               there is no item to the right, wraps.

            +o  XXmmTTRRAAVVEERRSSEE__UUPP-Finds the hierarchy that contains _w_i_d_g_e_t.
               Finds the active item in the active tab group and makes
               the item above it the active item.  If there is no item
               above, wraps.


        CCAAUUTTIIOONNSS
            +o  XXmmPPrroocceessssTTrraavveerrssaall will not allow traversal to a widget
               in a different shell.

            +o  XXmmPPrroocceessssTTrraavveerrssaall will only allow traversal to widgets
               that are currently mapped.

            +o  You cannot call XXmmPPrroocceessssTTrraavveerrssaall from inside a
               focusCallback routine (or you will get a segmentation
               fault).


     RREETTUURRNN VVAALLUUEE
          Returns True if the setting succeeded.  Returns False if the
          keyboard focus policy is not XXmmEEXXPPLLIICCIITT, if there are no



     1-613                                            (printed 5/7/92)






     XXmmPPrroocceessssTTrraavveerrssaall((33XX))   RReeffeerreennccee PPaaggeess   XXmmPPrroocceessssTTrraavveerrssaall((33XX))



          traversable items, or if the call to the routine has invalid
          parameters.

     RREELLAATTEEDD IINNFFOORRMMAATTIIOONN
          XXmmGGeettVViissiibbiilliittyy((33XX)) and XXmmIIssTTrraavveerrssaabbllee((33XX)).


















































     1-614                                            (printed 5/7/92)






     XXmmPPuusshhBBuuttttoonn((33XX))         RReeffeerreennccee PPaaggeess         XXmmPPuusshhBBuuttttoonn((33XX))



     NNAAMMEE
          XXmmPPuusshhBBuuttttoonn-The PushButton widget class

     SSYYNNOOPPSSIISS
          ##iinncclluuddee <<XXmm//PPuusshhBB..hh>>


     DDEESSCCRRIIPPTTIIOONN
          PushButton issues commands within an application.  It
          consists of a text label or pixmap surrounded by a border
          shadow.  When a PushButton is selected, the shadow changes
          to give the appearance that it has been pressed in.  When a
          PushButton is unselected, the shadow changes to give the
          appearance that it is out.

          The default behavior associated with a PushButton in a menu
          depends on the type of menu system in which it resides.  By
          default, BBSSeelleecctt controls the behavior of the PushButton.
          In addition, BBMMeennuu controls the behavior of the PushButton
          if it resides in a PopupMenu system.  The actual mouse
          button used is determined by its RowColumn parent.

          Thickness for a second shadow, used when the PushButton is
          the default button,  may be specified by using the
          XXmmNNsshhoowwAAssDDeeffaauulltt resource.  If it has a non-zero value, the
          Label's resources XXmmNNmmaarrggiinnLLeefftt, XXmmNNmmaarrggiinnRRiigghhtt,
          XXmmNNmmaarrggiinnTToopp, and XXmmNNmmaarrggiinnBBoottttoomm may be modified to
          accommodate the second shadow.

          If an initial value is specified for XXmmNNaarrmmPPiixxmmaapp but not
          for XXmmNNllaabbeellPPiixxmmaapp, the XXmmNNaarrmmPPiixxmmaapp value is used for
          XXmmNNllaabbeellPPiixxmmaapp.

        CCllaasssseess
          PushButton inherits behavior and resources from CCoorree,
          XXmmPPrriimmiittiivvee, and XXmmLLaabbeell Classes.

          The class pointer is xxmmPPuusshhBBuuttttoonnWWiiddggeettCCllaassss.

          The class name is XXmmPPuusshhBBuuttttoonn.

        NNeeww RReessoouurrcceess
          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 XXmmNN or XXmmCC
          prefix and use the remaining letters.  To specify one of the
          defined values for a resource in a .Xdefaults file, remove
          the XXmm 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



     1-615                                            (printed 5/7/92)






     XXmmPPuusshhBBuuttttoonn((33XX))         RReeffeerreennccee PPaaggeess         XXmmPPuusshhBBuuttttoonn((33XX))



          given resource can be set at creation time (C), set by using
          XXttSSeettVVaalluueess (S), retrieved by using XXttGGeettVVaalluueess (G), or is
          not applicable (N/A).

                                                 XXmmPPuusshhBBuuttttoonn RReessoouurrccee SSeett
     NNaammee                              CCllaassss                             TTyyppee             DDeeffaauulltt                AAcccceessss
     __________________________________________________________________________________________________________________
     XmNactivateCallback               XmCCallback                       XtCallbackList   NULL                   C
     XmNarmCallback                    XmCCallback                       XtCallbackList   NULL                   C
     XmNarmColor                       XmCArmColor                       Pixel            dynamic                CSG
     XmNarmPixmap                      XmCArmPixmap                      Pixmap           XmUNSPECIFIED_PIXMAP   CSG
     XmNdefaultButtonShadowThickness   XmCDefaultButtonShadowThickness   Dimension        dynamic                CSG
     XmNdisarmCallback                 XmCCallback                       XtCallbackList   NULL                   C
     XmNfillOnArm                      XmCFillOnArm                      Boolean          True                   CSG
     XmNmultiClick                     XmCMultiClick                     unsigned char    dynamic                CSG
     XmNshowAsDefault                  XmCShowAsDefault                  Dimension        0                      CSG


          XXmmNNaaccttiivvaatteeCCaallllbbaacckk
                    Specifies the list of callbacks that is called
                    when PushButton is activated.  PushButton is
                    activated when the user presses and releases the
                    active mouse button while the pointer is inside
                    that widget.  Activating the PushButton also
                    disarms it.  For this callback the reason is
                    XXmmCCRR__AACCTTIIVVAATTEE.

          XXmmNNaarrmmCCaallllbbaacckk
                    Specifies the list of callbacks that is called
                    when PushButton is armed.  PushButton is armed
                    when the user presses the active mouse button
                    while the pointer is inside that widget.  For this
                    callback the reason is XXmmCCRR__AARRMM.

          XXmmNNaarrmmCCoolloorr
                    Specifies the color with which to fill the armed
                    button.  XXmmNNffiillllOOnnAArrmm must be set to True for this
                    resource to have an effect.  The default for a
                    color display is a color between the background
                    and the bottom shadow color.  For a monochrome
                    display, the default is set to the foreground
                    color, and any text in the label appears in the
                    background color when the button is armed.

          XXmmNNaarrmmPPiixxmmaapp
                    Specifies the pixmap to be used as the button face
                    if XXmmNNllaabbeellTTyyppee is XXmmPPIIXXMMAAPP and PushButton is
                    armed.  This resource is disabled when the
                    PushButton is in a menu.

          XXmmNNddeeffaauullttBBuuttttoonnSShhaaddoowwTThhiicckknneessss
                    This resource specifies the width of the default



     1-616                                            (printed 5/7/92)






     XXmmPPuusshhBBuuttttoonn((33XX))         RReeffeerreennccee PPaaggeess         XXmmPPuusshhBBuuttttoonn((33XX))



                    button indicator shadow.  If this resource is
                    zero, the width of the shadow comes from the value
                    of the XXmmNNsshhoowwAAssDDeeffaauulltt resource.  If this
                    resource is greater than zero, the
                    XXmmNNsshhoowwAAssDDeeffaauulltt resource is only used to specify
                    whether this button is the default.  The default
                    value is the initial value of XXmmNNsshhoowwAAssDDeeffaauulltt.

          XXmmNNddiissaarrmmCCaallllbbaacckk
                    Specifies the list of callbacks that is called
                    when PushButton is disarmed.  PushButton is
                    disarmed when the user presses and releases the
                    active mouse button while the pointer is inside
                    that widget.  For this callback, the reason is
                    XXmmCCRR__DDIISSAARRMM.

          XXmmNNffiillllOOnnAArrmm
                    Forces the PushButton to fill the background of
                    the button with the color specified by XXmmNNaarrmmCCoolloorr
                    when the button is armed and when this resource is
                    set to True.  If False, only the top and bottom
                    shadow colors are switched.  When the PushButton
                    is in a menu, this resource is ignored and assumed
                    to be False.

          XXmmNNmmuullttiiCClliicckk
                    If a button click is followed by another button
                    click within the time span specified by the
                    display's multi-click time, and this resource is
                    set to XXmmMMUULLTTIICCLLIICCKK__DDIISSCCAARRDD, do not process the
                    second click.  If this resource is set to
                    XXmmMMUULLTTIICCLLIICCKK__KKEEEEPP, process the event and increment
                    _c_l_i_c_k__c_o_u_n_t in the callback structure.  When the
                    button is in a menu, the default is
                    XXmmMMUULLTTIICCLLIICCKK__DDIISSCCAARRDD; otherwise, for a button not
                    in a menu, XXmmMMUULLTTIICCLLIICCKK__KKEEEEPP is the default value.

          XXmmNNsshhoowwAAssDDeeffaauulltt
                    If XXmmNNddeeffaauullttBBuuttttoonnSShhaaddoowwTThhiicckknneessss is greater than
                    zero, a value greater than zero in this resource
                    specifies to mark this button as the default
                    button.  If XXmmNNddeeffaauullttBBuuttttoonnSShhaaddoowwTThhiicckknneessss is
                    zero, a value greater than zero in this resource
                    specifies to mark this button as the default
                    button with the shadow thickness specified by this
                    resource.  The space between the shadow and the
                    default shadow is equal to the sum of both
                    shadows.  The default value is zero.  When this
                    value is not zero, the Label resources
                    XXmmNNmmaarrggiinnLLeefftt, XXmmNNmmaarrggiinnRRiigghhtt, XXmmNNmmaarrggiinnTToopp, and
                    XXmmNNmmaarrggiinnBBoottttoomm may be modified to accommodate the
                    second shadow.  This resource is disabled when the



     1-617                                            (printed 5/7/92)






     XXmmPPuusshhBBuuttttoonn((33XX))         RReeffeerreennccee PPaaggeess         XXmmPPuusshhBBuuttttoonn((33XX))



                    PushButton is in a menu.


        IInnhheerriitteedd RReessoouurrcceess
          PushButton inherits behavior and resources from the
          following superclasses.  For a complete description of each
          resource, refer to the man page for that superclass.

                                                XXmmLLaabbeell RReessoouurrccee SSeett
     NNaammee                        CCllaassss                       TTyyppee                DDeeffaauulltt                  AAcccceessss
     ___________________________________________________________________________________________________________
     XmNaccelerator              XmCAccelerator              String              NULL                     CSG
     XmNacceleratorText          XmCAcceleratorText          XmString            NULL                     CSG
     XmNalignment                XmCAlignment                unsigned char       dynamic                  CSG
     XmNfontList                 XmCFontList                 XmFontList          dynamic                  CSG
     XmNlabelInsensitivePixmap   XmCLabelInsensitivePixmap   Pixmap              XmUNSPECIFIED_PIXMAP     CSG
     XmNlabelPixmap              XmCLabelPixmap              Pixmap              dynamic                  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           dynamic                  CSG
     XmNmarginRight              XmCMarginRight              Dimension           dynamic                  CSG
     XmNmarginTop                XmCMarginTop                Dimension           dynamic                  CSG
     XmNmarginWidth              XmCMarginWidth              Dimension           2                        CSG
     XmNmnemonic                 XmCMnemonic                 KeySym              NULL                     CSG
     XmNmnemonicCharSet          XmCMnemonicCharSet          String              XmFONTLIST_DEFAULT_TAG   CSG
     XmNrecomputeSize            XmCRecomputeSize            Boolean             True                     CSG
     XmNstringDirection          XmCStringDirection          XmStringDirection   dynamic                  CSG

                                         XXmmPPrriimmiittiivvee RReessoouurrccee SSeett
     NNaammee                    CCllaassss                   TTyyppee               DDeeffaauulltt                AAcccceessss
     ________________________________________________________________________________________________
     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          2                      CSG
     XmNnavigationType       XmCNavigationType       XmNavigationType   XmNONE                 CSG
     XmNshadowThickness      XmCShadowThickness      Dimension          2                      CSG
     XmNtopShadowColor       XmCTopShadowColor       Pixel              dynamic                CSG
     XmNtopShadowPixmap      XmCTopShadowPixmap      Pixmap             dynamic                CSG
     XmNtraversalOn          XmCTraversalOn          Boolean            True                   CSG
     XmNunitType             XmCUnitType             unsigned char      dynamic                CSG
     XmNuserData             XmCUserData             XtPointer          NULL                   CSG

                                                   CCoorree RReessoouurrccee SSeett





     1-618                                            (printed 5/7/92)






     XXmmPPuusshhBBuuttttoonn((33XX))         RReeffeerreennccee PPaaggeess         XXmmPPuusshhBBuuttttoonn((33XX))



     NNaammee                            CCllaassss                           TTyyppee             DDeeffaauulltt                AAcccceessss
     ______________________________________________________________________________________________________________
     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

        CCaallllbbaacckk IInnffoorrmmaattiioonn
          A pointer to the following structure is passed to each
          callback:

          ttyyppeeddeeff ssttrruucctt
          {{
            iinntt      _r_e_a_s_o_n;;
            XXEEvveenntt   * _e_v_e_n_t;;
            iinntt      _c_l_i_c_k__c_o_u_n_t;;
          }} XXmmPPuusshhBBuuttttoonnCCaallllbbaacckkSSttrruucctt;;


          _r_e_a_s_o_n Indicates why the callback was invoked.

          _e_v_e_n_t  Points to the XXEEvveenntt that triggered the callback.

          _c_l_i_c_k__c_o_u_n_t
                 This value is valid only when the reason is
                 XXmmCCRR__AACCTTIIVVAATTEE.  It contains the number of clicks in
                 the last multiclick sequence if the XXmmNNmmuullttiiCClliicckk
                 resource is set to XXmmMMUULLTTIICCLLIICCKK__KKEEEEPP, otherwise it
                 contains 11.  The activate callback is invoked for
                 each click if XXmmNNmmuullttiiCClliicckk is set to
                 XXmmMMUULLTTIICCLLIICCKK__KKEEEEPP.


        TTrraannssllaattiioonnss
          XmPushButton includes translations from Primitive.

          Note that altering translations in ##oovveerrrriiddee or ##aauuggmmeenntt



     1-619                                            (printed 5/7/92)






     XXmmPPuusshhBBuuttttoonn((33XX))         RReeffeerreennccee PPaaggeess         XXmmPPuusshhBBuuttttoonn((33XX))



          mode is undefined.

          Additional XmPushButton translations for XmPushButtons not
          in a menu system are listed below.  These translations may
          not directly correspond to a translation table.

          BBDDrraagg PPrreessss::   PPrroocceessssDDrraagg(())

          BBSSeelleecctt PPrreessss:: AArrmm(())
          BBSSeelleecctt CClliicckk:: AAccttiivvaattee(())
                         DDiissaarrmm(())
          BBSSeelleecctt RReelleeaassee::AAccttiivvaattee(())
                         DDiissaarrmm(())
          BBSSeelleecctt PPrreessss 22++::MMuullttiiAArrmm(())
          BBSSeelleecctt RReelleeaassee 22++::MMuullttiiAAccttiivvaattee(())
                         DDiissaarrmm(())
          KKSSeelleecctt::       AArrmmAAnnddAAccttiivvaattee(())
          KKHHeellpp::         HHeellpp(())


          XmPushButton inherits menu traversal translations from
          XmLabel.  Additional XmPushButton translations for
          PushButtons in a menu system are listed below.  In a Popup
          menu system, BBMMeennuu also performs the BBSSeelleecctt actions.  These
          translations may not directly correspond to a translation
          table.

          BBSSeelleecctt PPrreessss:: BBttnnDDoowwnn(())
          BBSSeelleecctt RReelleeaassee::BBttnnUUpp(())
          KKAAccttiivvaattee::     AArrmmAAnnddAAccttiivvaattee(())
          KKSSeelleecctt::       AArrmmAAnnddAAccttiivvaattee(())
          MMAAnnyy KKCCaanncceell::  MMeennuuSShheellllPPooppddoowwnnOOnnee(())


        AAccttiioonn RRoouuttiinneess
          The XmPushButton action routines are described below:


          AAccttiivvaattee(()):
                    This action draws the shadow in the unarmed state.
                    If the button is not in a menu and if XXmmNNffiillllOOnnAArrmm
                    is set to True, the background color reverts to
                    the unarmed color.  If XXmmNNllaabbeellTTyyppee is XXmmPPIIXXMMAAPP,
                    the XXmmNNllaabbeellPPiixxmmaapp is used for the button face.
                    If the pointer is still within the button, this
                    action calls the callbacks for
                    XXmmNNaaccttiivvaatteeCCaallllbbaacckk.

          AArrmm(()):    This action arms the PushButton.  It draws the
                    shadow in the armed state.  If the button is not
                    in a menu and if XXmmNNffiillllOOnnAArrmm is set to True, it
                    fills the button with the color specified by



     1-620                                            (printed 5/7/92)






     XXmmPPuusshhBBuuttttoonn((33XX))         RReeffeerreennccee PPaaggeess         XXmmPPuusshhBBuuttttoonn((33XX))



                    XXmmNNaarrmmCCoolloorr.  If XXmmNNllaabbeellTTyyppee is XXmmPPIIXXMMAAPP, the
                    XXmmNNaarrmmPPiixxmmaapp is used for the button face.  It
                    calls the XXmmNNaarrmmCCaallllbbaacckk callbacks.

          AArrmmAAnnddAAccttiivvaattee(()):
                    In a menu, does the following:  Unposts all menus
                    in the menu hierarchy.  Unless the button is
                    already armed, calls the XXmmNNaarrmmCCaallllbbaacckk callbacks.
                    Calls the XXmmNNaaccttiivvaatteeCCaallllbbaacckk and
                    XXmmNNddiissaarrmmCCaallllbbaacckk callbacks.

                    Outside a menu, does the following:  Draws the
                    shadow in the armed state and, if XXmmNNffiillllOOnnAArrmm is
                    set to True, fills the button with the color
                    specified by XXmmNNaarrmmCCoolloorr.  If XXmmNNllaabbeellTTyyppee is
                    XXmmPPIIXXMMAAPP, the XXmmNNaarrmmPPiixxmmaapp is used for the button
                    face.  Calls the XXmmNNaarrmmCCaallllbbaacckk callbacks.

                    Outside a menu, this action also arranges for the
                    following to happen, either immediately or at a
                    later time:  The shadow is drawn in the unarmed
                    state and, if XXmmNNffiillllOOnnAArrmm is set to True, the
                    background color reverts to the unarmed color.  If
                    XXmmNNllaabbeellTTyyppee is XXmmPPIIXXMMAAPP, the XXmmNNllaabbeellPPiixxmmaapp is
                    used for the button face.  The XXmmNNaaccttiivvaatteeCCaallllbbaacckk
                    and XXmmNNddiissaarrmmCCaallllbbaacckk callbacks are called.

          BBttnnDDoowwnn(()):
                    This action unposts any menus posted by the
                    PushButton's parent menu, disables keyboard
                    traversal for the menu, and enables mouse
                    traversal for the menu.  It draws the shadow in
                    the armed state and, unless the button is already
                    armed, calls the XXmmNNaarrmmCCaallllbbaacckk callbacks.

          BBttnnUUpp(()):  This action unposts all menus in the menu
                    hierarchy and activates the PushButton.  It calls
                    the XXmmNNaaccttiivvaatteeCCaallllbbaacckk callbacks and then the
                    XXmmNNddiissaarrmmCCaallllbbaacckk callbacks.

          DDiissaarrmm(()): Calls the callbacks for XXmmNNddiissaarrmmCCaallllbbaacckk.

          HHeellpp(()):   In a Pulldown or Popup MenuPane, unposts all menus
                    in the menu hierarchy and, when the shell's
                    keyboard focus policy is XXmmEEXXPPLLIICCTT, restores
                    keyboard focus to the widget that had the focus
                    before the menu system was entered.  Calls the
                    callbacks for XXmmNNhheellppCCaallllbbaacckk 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.




     1-621                                            (printed 5/7/92)






     XXmmPPuusshhBBuuttttoonn((33XX))         RReeffeerreennccee PPaaggeess         XXmmPPuusshhBBuuttttoonn((33XX))



          MMeennuuSShheellllPPooppddoowwnnOOnnee(()):
                    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 XXmmEEXXPPLLIICCTT,
                    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.

          MMuullttiiAAccttiivvaattee(()):
                    If XXmmNNmmuullttiiCClliicckk is XXmmMMUULLTTIICCLLIICCKK__DDIISSCCAARRDD, this
                    action does nothing.

                    If XXmmNNmmuullttiiCClliicckk is XXmmMMUULLTTIICCLLIICCKK__KKEEEEPP, this action
                    does the following:  Increments _c_l_i_c_k__c_o_u_n_t in the
                    callback structure.  Draws the shadow in the
                    unarmed state.  If the button is not in a menu and
                    if XXmmNNffiillllOOnnAArrmm is set to True, the background
                    color reverts to the unarmed color.  If
                    XXmmNNllaabbeellTTyyppee is XXmmPPIIXXMMAAPP, the XXmmNNllaabbeellPPiixxmmaapp is
                    used for the button face.  If the pointer is
                    within the PushButton, calls the callbacks for
                    XXmmNNaaccttiivvaatteeCCaallllbbaacckk.  Calls the callbacks for
                    XXmmNNddiissaarrmmCCaallllbbaacckk.

          MMuullttiiAArrmm(()):
                    If XXmmNNmmuullttiiCClliicckk is XXmmMMUULLTTIICCLLIICCKK__DDIISSCCAARRDD, this
                    action does nothing.

                    If XXmmNNmmuullttiiCClliicckk is XXmmMMUULLTTIICCLLIICCKK__KKEEEEPP, this action
                    does the following:  Draws the shadow in the armed
                    state.  If the button is not in a menu and if
                    XXmmNNffiillllOOnnAArrmm is set to True, fills the button with
                    the color specified by XXmmNNaarrmmCCoolloorr.  If
                    XXmmNNllaabbeellTTyyppee is XXmmPPIIXXMMAAPP, the XXmmNNaarrmmPPiixxmmaapp is used
                    for the button face.  Calls the XXmmNNaarrmmCCaallllbbaacckk
                    callbacks.

          PPrroocceessssDDrraagg(()):
                    Drags the contents of a PushButton label,
                    identified by pressing BBDDrraagg.  This action creates
                    a DragContext object whose XXmmNNeexxppoorrttTTaarrggeettss
                    resource is set to "COMPOUND_TEXT" for a label
                    type of XXmmSSTTRRIINNGG; otherwise, "PIXMAP" if the label
                    type is XXmmPPIIXXMMAAPP.  This action is undefined for
                    PushButtons used in a menu system.





     1-622                                            (printed 5/7/92)






     XXmmPPuusshhBBuuttttoonn((33XX))         RReeffeerreennccee PPaaggeess         XXmmPPuusshhBBuuttttoonn((33XX))



        AAddddiittiioonnaall BBeehhaavviioorr
          This widget has the additional behavior described below:


          <<EEnntteerrWWiinnddooww>>:
                    In a menu, if keyboard traversal is enabled, this
                    action does nothing.  Otherwise, it draws the
                    shadow in the armed state and calls the
                    XXmmNNaarrmmCCaallllbbaacckk callbacks.

                    If the PushButton is not in a menu and the cursor
                    leaves and then reenters the PushButton's window
                    while the button is pressed, this action draws the
                    shadow in the armed state.  If XXmmNNffiillllOOnnAArrmm is set
                    to True, it also fills the button with the color
                    specified by XXmmNNaarrmmCCoolloorr.  If XXmmNNllaabbeellTTyyppee is
                    XXmmPPIIXXMMAAPP, the XXmmNNaarrmmPPiixxmmaapp is used for the button
                    face.

          <<LLeeaavveeWWiinnddooww>>:
                    In a menu, if keyboard traversal is enabled, this
                    action does nothing.  Otherwise, it draws the
                    shadow in the unarmed state and calls the
                    XXmmNNddiissaarrmmCCaallllbbaacckk callbacks.

                    If the PushButton is not in a menu and the cursor
                    leaves the PushButton's window while the button is
                    pressed, this action draws the shadow in the
                    unarmed state.  If XXmmNNffiillllOOnnAArrmm is set to True,
                    the background color reverts to the unarmed color.
                    If XXmmNNllaabbeellTTyyppee is XXmmPPIIXXMMAAPP, the XXmmNNllaabbeellPPiixxmmaapp is
                    used for the button face.


        VViirrttuuaall BBiinnddiinnggss
          The bindings for virtual keys are vendor specific.  For
          information about bindings for virtual buttons and keys, see
          VViirrttuuaallBBiinnddiinnggss((33XX)).

     RREELLAATTEEDD IINNFFOORRMMAATTIIOONN
          CCoorree((33XX)), XXmmCCrreeaatteePPuusshhBBuuttttoonn((33XX)), XXmmLLaabbeell((33XX)),
          XXmmPPrriimmiittiivvee((33XX)), and XXmmRRoowwCCoolluummnn((33XX)).













     1-623                                            (printed 5/7/92)






     XXmmPPuusshhBBuuttttoonnGGaaddggeett((33XX))   RReeffeerreennccee PPaaggeess   XXmmPPuusshhBBuuttttoonnGGaaddggeett((33XX))



     NNAAMMEE
          XXmmPPuusshhBBuuttttoonnGGaaddggeett-The PushButtonGadget widget class

     SSYYNNOOPPSSIISS
          ##iinncclluuddee <<XXmm//PPuusshhBBGG..hh>>


     DDEESSCCRRIIPPTTIIOONN
          PushButtonGadget issues commands within an application.  It
          consists of a text label or pixmap surrounded by a border
          shadow.  When PushButtonGadget is selected, the shadow
          changes to give the appearance that the PushButtonGadget has
          been pressed in.  When PushButtonGadget is unselected, the
          shadow changes to give the appearance that the
          PushButtonGadget is out.

          The default behavior associated with a PushButtonGadget in a
          menu depends on the type of menu system in which it resides.
          By default, BBSSeelleecctt controls the behavior of the
          PushButtonGadget.  In addition, BBMMeennuu controls the behavior
          of the PushButtonGadget if it resides in a PopupMenu system.
          The actual mouse button used is determined by its RowColumn
          parent.

          Thickness for a second shadow may be specified by using the
          XXmmNNsshhoowwAAssDDeeffaauulltt resource.  If it has a non-zero value, the
          Label's resources XXmmNNmmaarrggiinnLLeefftt, XXmmNNmmaarrggiinnRRiigghhtt,
          XXmmNNmmaarrggiinnTToopp, and XXmmNNmmaarrggiinnBBoottttoomm may be modified to
          accommodate the second shadow.

          If an initial value is specified for XXmmNNaarrmmPPiixxmmaapp but not
          for XXmmNNllaabbeellPPiixxmmaapp, the XXmmNNaarrmmPPiixxmmaapp value is used for
          XXmmNNllaabbeellPPiixxmmaapp.

        CCllaasssseess
          PushButtonGadget inherits behavior and resources from
          OObbjjeecctt, RReeccttOObbjj, XXmmGGaaddggeett and XXmmLLaabbeellGGaaddggeett classes.

          The class pointer is xxmmPPuusshhBBuuttttoonnGGaaddggeettCCllaassss.

          The class name is XXmmPPuusshhBBuuttttoonnGGaaddggeett.

        NNeeww RReessoouurrcceess
          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 XXmmNN or XXmmCC
          prefix and use the remaining letters.  To specify one of the
          defined values for a resource in a .Xdefaults file, remove
          the XXmm prefix and use the remaining letters (in either
          lowercase or uppercase, but include any underscores between



     1-624                                            (printed 5/7/92)






     XXmmPPuusshhBBuuttttoonnGGaaddggeett((33XX))   RReeffeerreennccee PPaaggeess   XXmmPPuusshhBBuuttttoonnGGaaddggeett((33XX))



          words).  The codes in the access column indicate if the
          given resource can be set at creation time (C), set by using
          XXttSSeettVVaalluueess (S), retrieved by using XXttGGeettVVaalluueess (G), or is
          not applicable (N/A).

                                                     XXmmPPuusshhBBuuttttoonnGGaaddggeett
     NNaammee                              CCllaassss                             TTyyppee             DDeeffaauulltt                AAcccceessss
     __________________________________________________________________________________________________________________
     XmNactivateCallback               XmCCallback                       XtCallbackList   NULL                   C
     XmNarmCallback                    XmCCallback                       XtCallbackList   NULL                   C
     XmNarmColor                       XmCArmColor                       Pixel            dynamic                CSG
     XmNarmPixmap                      XmCArmPixmap                      Pixmap           XmUNSPECIFIED_PIXMAP   CSG
     XmNdefaultButtonShadowThickness   XmCdefaultButtonShadowThickness   Dimension        dynamic                CSG
     XmNdisarmCallback                 XmCCallback                       XtCallbackList   NULL                   C
     XmNfillOnArm                      XmCFillOnArm                      Boolean          True                   CSG
     XmNmultiClick                     XmCMultiClick                     unsigned char    dynamic                CSG
     XmNshowAsDefault                  XmCShowAsDefault                  Dimension        0                      CSG


          XXmmNNaaccttiivvaatteeCCaallllbbaacckk
                    Specifies the list of callbacks that is called
                    when the PushButtonGadget is activated.  It is
                    activated when the user presses and releases the
                    active mouse button while the pointer is inside
                    the PushButtonGadget.  Activating PushButtonGadget
                    also disarms it.  For this callback the reason is
                    XXmmCCRR__AACCTTIIVVAATTEE.

          XXmmNNaarrmmCCaallllbbaacckk
                    Specifies the list of callbacks that is called
                    when PushButtonGadget is armed.  It is armed when
                    the user presses the active mouse button while the
                    pointer is inside the PushButtonGadget.  For this
                    callback the reason is XXmmCCRR__AARRMM.

          XXmmNNaarrmmCCoolloorr
                    Specifies the color with which to fill the armed
                    button.  XXmmNNffiillllOOnnAArrmm must be set to True for this
                    resource to have an effect.  The default for a
                    color display is a color between the background
                    and the bottom shadow color.  For a monochrome
                    display, the default is set to the foreground
                    color, and any text in the label appears in the
                    background color when the button is armed.

          XXmmNNaarrmmPPiixxmmaapp
                    Specifies the pixmap to be used as the button face
                    if XXmmNNllaabbeellttyyppee is XXmmPPIIXXMMAAPP and PushButtonGadget
                    is armed.  This resource is disabled when the
                    PushButtonGadget is in a menu.

          XXmmNNddeeffaauullttBBuuttttoonnSShhaaddoowwTThhiicckknneessss



     1-625                                            (printed 5/7/92)






     XXmmPPuusshhBBuuttttoonnGGaaddggeett((33XX))   RReeffeerreennccee PPaaggeess   XXmmPPuusshhBBuuttttoonnGGaaddggeett((33XX))



                    This resource specifies the width of the default
                    button indicator shadow.  If this resource is
                    zero, the width of the shadow comes from the value
                    of the XXmmNNsshhoowwAAssDDeeffaauulltt resource.  If this
                    resource is greater than zero, the
                    XXmmNNsshhoowwAAssDDeeffaauulltt resource is only used to specify
                    whether this button is the default.  The default
                    value is the initial value of XXmmNNsshhoowwAAssDDeeffaauulltt.

          XXmmNNddiissaarrmmCCaallllbbaacckk
                    Specifies the list of callbacks that is called
                    when the PushButtonGadget is disarmed.
                    PushButtonGadget is disarmed when the user presses
                    and releases the active mouse button while the
                    pointer is inside that gadget.  For this callback,
                    the reason is XXmmCCRR__DDIISSAARRMM.

          XXmmNNffiillllOOnnAArrmm
                    Forces the PushButtonGadget to fill the background
                    of the button with the color specified by
                    XXmmNNaarrmmCCoolloorr when the button is armed and when this
                    resource is set to True.  If False, only the top
                    and bottom shadow colors are switched.  When the
                    PushButtonGadget is in a menu, this resource is
                    ignored and assumed to be False.

          XXmmNNmmuullttiiCClliicckk
                    If a button click is followed by another button
                    click within the time span specified by the
                    display's multi-click time, and this resource is
                    set to XXmmMMUULLTTIICCLLIICCKK__DDIISSCCAARRDD, do not process the
                    second click.  If this resource is set to
                    XXmmMMUULLTTIICCLLIICCKK__KKEEEEPP, process the event and increment
                    _c_l_i_c_k__c_o_u_n_t in the callback structure.  When the
                    button is in a menu, the default is
                    XXmmMMUULLTTIICCLLIICCKK__DDIISSCCAARRDD; otherwise, for a button not
                    in a menu XXmmMMUULLTTIICCLLIICCKK__KKEEEEPP is the default value.

          XXmmNNsshhoowwAAssDDeeffaauulltt
                    If XXmmNNddeeffaauullttBBuuttttoonnSShhaaddoowwTThhiicckknneessss is greater than
                    zero, a value greater than zero in this resource
                    specifies to mark this button as the default
                    button.  If XXmmNNddeeffaauullttBBuuttttoonnSShhaaddoowwTThhiicckknneessss is
                    zero, a value greater than zero in this resource
                    specifies to mark this button as the default
                    button with the shadow thickness specified by this
                    resource.  The space between the shadow and the
                    default shadow is equal to the sum of both
                    shadows.  The default value is zero.  When this
                    value is not zero, the Label resources
                    XXmmNNmmaarrggiinnLLeefftt, XXmmNNmmaarrggiinnRRiigghhtt, XXmmNNmmaarrggiinnTToopp, and
                    XXmmNNmmaarrggiinnBBoottttoomm may be modified to accommodate the



     1-626                                            (printed 5/7/92)






     XXmmPPuusshhBBuuttttoonnGGaaddggeett((33XX))   RReeffeerreennccee PPaaggeess   XXmmPPuusshhBBuuttttoonnGGaaddggeett((33XX))



                    second shadow.  This resource is disabled when the
                    PushButton is in a menu.


        IInnhheerriitteedd RReessoouurrcceess
          PushButtonGadget inherits behavior and resources from the
          following superclasses.  For a complete description of each
          resource, refer to the man page for that superclass.

                                            XXmmLLaabbeellGGaaddggeett RReessoouurrccee SSeett
     NNaammee                        CCllaassss                       TTyyppee                DDeeffaauulltt                AAcccceessss
     _________________________________________________________________________________________________________
     XmNaccelerator              XmCAccelerator              String              NULL                   CSG
     XmNacceleratorText          XmCAcceleratorText          XmString            NULL                   CSG
     XmNalignment                XmCAlignment                unsigned char       dynamic                CSG
     XmNfontList                 XmCFontList                 XmFontList          dynamic                CSG
     XmNlabelInsensitivePixmap   XmCLabelInsensitivePixmap   Pixmap              XmUNSPECIFIED_PIXMAP   CSG
     XmNlabelPixmap              XmCLabelPixmap              Pixmap              dynamic                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           dynamic                CSG
     XmNmarginRight              XmCMarginRight              Dimension           dynamic                CSG
     XmNmarginTop                XmCMarginTop                Dimension           dynamic                CSG
     XmNmarginWidth              XmCMarginWidth              Dimension           2                      CSG
     XmNmnemonic                 XmCMnemonic                 KeySym              NULL                   CSG
     XmNmnemonicCharSet          XmCMnemonicCharSet          String              dynamic                CSG
     XmNrecomputeSize            XmCRecomputeSize            Boolean             True                   CSG
     XmNstringDirection          XmCStringDirection          XmStringDirection   dynamic                CSG

                                    XXmmGGaaddggeett RReessoouurrccee SSeett
     NNaammee                    CCllaassss                   TTyyppee               DDeeffaauulltt   AAcccceessss
     ___________________________________________________________________________________
     XmNbottomShadowColor    XmCBottomShadowColor    Pixel              dynamic   G
     XmNhelpCallback         XmCCallback             XtCallbackList     NULL      C
     XmNhighlightColor       XmCHighlightColor       Pixel              dynamic   G
     XmNhighlightOnEnter     XmCHighlightOnEnter     Boolean            False     CSG
     XmNhighlightThickness   XmCHighlightThickness   Dimension          2         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

                              RReeccttOObbjj RReessoouurrccee SSeett
      NNaammee                   CCllaassss            TTyyppee        DDeeffaauulltt   AAcccceessss







     1-627                                            (printed 5/7/92)






     XXmmPPuusshhBBuuttttoonnGGaaddggeett((33XX))   RReeffeerreennccee PPaaggeess   XXmmPPuusshhBBuuttttoonnGGaaddggeett((33XX))



      ____________________________________________________________________
      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

                              OObbjjeecctt RReessoouurrccee SSeett
      NNaammee                 CCllaassss         TTyyppee             DDeeffaauulltt   AAcccceessss
      ____________________________________________________________________
      XmNdestroyCallback   XmCCallback   XtCallbackList   NULL      C

        CCaallllbbaacckk IInnffoorrmmaattiioonn
          A pointer to the following structure is passed to each
          callback:

          ttyyppeeddeeff ssttrruucctt
          {{
            iinntt      _r_e_a_s_o_n;;
            XXEEvveenntt   * _e_v_e_n_t;;
            iinntt      _c_l_i_c_k__c_o_u_n_t;;
          }} XXmmPPuusshhBBuuttttoonnCCaallllbbaacckkSSttrruucctt;;


          _r_e_a_s_o_n Indicates why the callback was invoked.

          _e_v_e_n_t  Points to the XXEEvveenntt that triggered the callback.

          _c_l_i_c_k__c_o_u_n_t
                 This value is valid only when the reason is
                 XXmmCCRR__AACCTTIIVVAATTEE.  It contains the number of clicks in
                 the last multiclick sequence if the XXmmNNmmuullttiiCClliicckk
                 resource is set to XXmmMMUULLTTIICCLLIICCKK__KKEEEEPP, otherwise it
                 contains 11.  The activate callback is invoked for
                 each click if XXmmNNmmuullttiiCClliicckk is set to
                 XXmmMMUULLTTIICCLLIICCKK__KKEEEEPP.


        BBeehhaavviioorr
          XmPushButtonGadget includes behavior from XmGadget.
          XmPushButtonGadget includes menu traversal behavior from
          XmLabelGadget.  Additional behavior for XmPushButtonGadget
          is described below:


          BBDDrraagg PPrreessss:
                    Drags the contents of a PushButtonGadget label,
                    identified by pressing BBDDrraagg.  This action creates
                    a DragContext object whose XXmmNNeexxppoorrttTTaarrggeettss
                    resource is set to "COMPOUND_TEXT" for a label



     1-628                                            (printed 5/7/92)






     XXmmPPuusshhBBuuttttoonnGGaaddggeett((33XX))   RReeffeerreennccee PPaaggeess   XXmmPPuusshhBBuuttttoonnGGaaddggeett((33XX))



                    type of XXmmSSTTRRIINNGG; otherwise, "PIXMAP" if the label
                    type is XXmmPPIIXXMMAAPP.  This action is undefined for
                    PushButtonGadgets used in a menu system.

          BBSSeelleecctt PPrreessss:
                    This action arms the PushButtonGadget.

                    In a menu, this action unposts any menus posted by
                    the PushButtonGadget's parent menu, disables
                    keyboard traversal for the menu, and enables mouse
                    traversal for the menu.  It draws the shadow in
                    the armed state.  Unless the button is already
                    armed, it calls the XXmmNNaarrmmCCaallllbbaacckk callbacks.

                    If the button is not in a menu, this action draws
                    the shadow in the armed state.  If XXmmNNffiillllOOnnAArrmm is
                    set to True, it fills the button with the color
                    specified by XXmmNNaarrmmCCoolloorr.  If XXmmNNllaabbeellTTyyppee is
                    XXmmPPIIXXMMAAPP, the XXmmNNaarrmmPPiixxmmaapp is used for the button
                    face.  It calls the XXmmNNaarrmmCCaallllbbaacckk callbacks.

          BBSSeelleecctt PPrreessss 22++:
                    If XXmmNNmmuullttiiCClliicckk is XXmmMMUULLTTIICCLLIICCKK__DDIISSCCAARRDD, this
                    action does nothing.

                    If XXmmNNmmuullttiiCClliicckk is XXmmMMUULLTTIICCLLIICCKK__KKEEEEPP, this action
                    does the following:  Draws the shadow in the armed
                    state.  If the button is not in a menu and if
                    XXmmNNffiillllOOnnAArrmm is set to True, fills the button with
                    the color specified by XXmmNNaarrmmCCoolloorr.  If
                    XXmmNNllaabbeellTTyyppee is XXmmPPIIXXMMAAPP, the XXmmNNaarrmmPPiixxmmaapp is used
                    for the button face.  Calls the XXmmNNaarrmmCCaallllbbaacckk
                    callbacks.

          BBSSeelleecctt CClliicckk oorr BBSSeelleecctt RReelleeaassee:
                    In a menu, this action unposts all menus in the
                    menu hierarchy and activates the PushButtonGadget.
                    It calls the XXmmNNaaccttiivvaatteeCCaallllbbaacckk callbacks and
                    then the XXmmNNddiissaarrmmCCaallllbbaacckk callbacks.

                    If the PushButtonGadget is not in a menu, this
                    action draws the shadow in the unarmed state.  If
                    XXmmNNffiillllOOnnAArrmm is set to True, the background color
                    reverts to the unarmed color.  If XXmmNNllaabbeellTTyyppee is
                    XXmmPPIIXXMMAAPP, the XXmmNNllaabbeellPPiixxmmaapp is used for the
                    button face.  If the pointer is still within the
                    button, this action calls the callbacks for
                    XXmmNNaaccttiivvaatteeCCaallllbbaacckk.  Calls the callbacks for
                    XXmmNNddiissaarrmmCCaallllbbaacckk.

          BBSSeelleecctt RReelleeaassee 22++:
                    If XXmmNNmmuullttiiCClliicckk is XXmmMMUULLTTIICCLLIICCKK__DDIISSCCAARRDD, this



     1-629                                            (printed 5/7/92)






     XXmmPPuusshhBBuuttttoonnGGaaddggeett((33XX))   RReeffeerreennccee PPaaggeess   XXmmPPuusshhBBuuttttoonnGGaaddggeett((33XX))



                    action does nothing.

                    If XXmmNNmmuullttiiCClliicckk is XXmmMMUULLTTIICCLLIICCKK__KKEEEEPP, this action
                    does the following:  Increments _c_l_i_c_k__c_o_u_n_t in the
                    callback structure.  Draws the shadow in the
                    unarmed state.  If the button is not in a menu and
                    if XXmmNNffiillllOOnnAArrmm is set to True, the background
                    color reverts to the unarmed color.  If
                    XXmmNNllaabbeellTTyyppee is XXmmPPIIXXMMAAPP, the XXmmNNllaabbeellPPiixxmmaapp is
                    used for the button face.  If the pointer is
                    within the PushButtonGadget, calls the callbacks
                    for XXmmNNaaccttiivvaatteeCCaallllbbaacckk.  Calls the callbacks for
                    XXmmNNddiissaarrmmCCaallllbbaacckk.

          KKAAccttiivvaattee:
                    In a menu, does the following: unposts all menus
                    in the menu hierarchy; unless the button is
                    already armed, calls the XXmmNNaarrmmCCaallllbbaacckk callbacks;
                    and calls the XXmmNNaaccttiivvaatteeCCaallllbbaacckk and
                    XXmmNNddiissaarrmmCCaallllbbaacckk callbacks.  Outside a menu,
                    KKAAccttiivvaattee has no effect.  For PushButtonGadgets
                    outside of a menu, if the parent is a manager,
                    this action passes the event to the parent.

          KKSSeelleecctt:  In a menu, does the following:  Unposts all menus
                    in the menu hierarchy.  Unless the button is
                    already armed, calls the XXmmNNaarrmmCCaallllbbaacckk callbacks.
                    Calls the XXmmNNaaccttiivvaatteeCCaallllbbaacckk and
                    XXmmNNddiissaarrmmCCaallllbbaacckk callbacks.

                    Outside a menu, does the following:  Draws the
                    shadow in the armed state and, if XXmmNNffiillllOOnnAArrmm is
                    set to True, fills the button with the color
                    specified by XXmmNNaarrmmCCoolloorr.  If XXmmNNllaabbeellTTyyppee is
                    XXmmPPIIXXMMAAPP, the XXmmNNaarrmmPPiixxmmaapp is used for the button
                    face.  Calls the XXmmNNaarrmmCCaallllbbaacckk callbacks.

                    Outside a menu, this action also arranges for the
                    following to happen, either immediately or at a
                    later time:  The shadow is drawn in the unarmed
                    state and, if XXmmNNffiillllOOnnAArrmm is set to True, the
                    background color reverts to the unarmed color.  If
                    XXmmNNllaabbeellTTyyppee is XXmmPPIIXXMMAAPP, the XXmmNNllaabbeellPPiixxmmaapp is
                    used for the button face.  The XXmmNNaaccttiivvaatteeCCaallllbbaacckk
                    and XXmmNNddiissaarrmmCCaallllbbaacckk callbacks are called.

          KKHHeellpp:    In a Pulldown or Popup MenuPane, unposts all menus
                    in the menu hierarchy and restores keyboard focus
                    to the widget that had the focus before the menu
                    system was entered.  Calls the callbacks for
                    XXmmNNhheellppCCaallllbbaacckk if any exist.  If there are no
                    help callbacks for this widget, this action calls



     1-630                                            (printed 5/7/92)






     XXmmPPuusshhBBuuttttoonnGGaaddggeett((33XX))   RReeffeerreennccee PPaaggeess   XXmmPPuusshhBBuuttttoonnGGaaddggeett((33XX))



                    the help callbacks for the nearest ancestor that
                    has them.

          MMAAnnyy KKCCaanncceell:
                    In a toplevel Pulldown MenuPane from a MenuBar,
                    unposts the menu, disarms the MenuBar
                    CascadeButton and the MenuBar, and 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.  For a PushButtonGadget outside of a
                    menu, if the parent is a manger, this action
                    passes the event to the parent.

          <<EEnntteerr>>:  In a menu, if keyboard traversal is enabled, this
                    action does nothing.  Otherwise, it draws the
                    shadow in the armed state and calls the
                    XXmmNNaarrmmCCaallllbbaacckk callbacks.

                    If the PushButtonGadget is not in a menu and the
                    cursor leaves and then reenters the
                    PushButtonGadget while the button is pressed, this
                    action draws the shadow in the armed state.  If
                    XXmmNNffiillllOOnnAArrmm is set to True, it also fills the
                    button with the color specified by XXmmNNaarrmmCCoolloorr.
                    If XXmmNNllaabbeellTTyyppee is XXmmPPIIXXMMAAPP, the XXmmNNaarrmmPPiixxmmaapp is
                    used for the button face.

          <<LLeeaavvee>>:  In a menu, if keyboard traversal is enabled, this
                    action does nothing.  Otherwise, it draws the
                    shadow in the unarmed state and calls the
                    XXmmNNddiissaarrmmCCaallllbbaacckk callbacks.

                    If the PushButtonGadget is not in a menu and the
                    cursor leaves the PushButtonGadget while the
                    button is pressed, this action draws the shadow in
                    the unarmed state.  If XXmmNNffiillllOOnnAArrmm is set to
                    True, the background color reverts to the unarmed
                    color.  If XXmmNNllaabbeellTTyyppee is XXmmPPIIXXMMAAPP, the
                    XXmmNNllaabbeellPPiixxmmaapp is used for the button face.


        VViirrttuuaall BBiinnddiinnggss
          The bindings for virtual keys are vendor specific.  For
          information about bindings for virtual buttons and keys, see
          VViirrttuuaallBBiinnddiinnggss((33XX)).

     RREELLAATTEEDD IINNFFOORRMMAATTIIOONN
          OObbjjeecctt((33XX)), RReeccttOObbjj((33XX)), XXmmCCrreeaatteePPuusshhBBuuttttoonnGGaaddggeett((33XX)),



     1-631                                            (printed 5/7/92)






     XXmmPPuusshhBBuuttttoonnGGaaddggeett((33XX))   RReeffeerreennccee PPaaggeess   XXmmPPuusshhBBuuttttoonnGGaaddggeett((33XX))



          XXmmGGaaddggeett((33XX)), XXmmLLaabbeellGGaaddggeett((33XX)), and XXmmRRoowwCCoolluummnn((33XX)).






















































     1-632                                            (printed 5/7/92)






     XXmmRReeggiisstteerrSSeeggmmeennttEEnnccooddiinngg((RR3e3eXfXf)e)erreennccee PPaaXXgmgmeReRseseggiisstteerrSSeeggmmeennttEEnnccooddiinngg((33XX))



     NNAAMMEE
          XXmmRReeggiisstteerrSSeeggmmeennttEEnnccooddiinngg-A compound string function that
          registers a compound text encoding format for a specified
          font list element tag

     SSYYNNOOPPSSIISS
          ##iinncclluuddee <<XXmm//XXmm..hh>>

          cchhaarr ** XXmmRReeggiisstteerrSSeeggmmeennttEEnnccooddiinngg ((_f_o_n_t_l_i_s_t__t_a_g, _c_t__e_n_c_o_d_i_n_g))
               cchhaarr   **_f_o_n_t_l_i_s_t__t_a_g;;
               cchhaarr   **_c_t__e_n_c_o_d_i_n_g;;


     DDEESSCCRRIIPPTTIIOONN
          XXmmRReeggiisstteerrSSeeggmmeennttEEnnccooddiinngg registers a compound text encoding
          format with the specified font list element tag.  The
          XXmmCCvvttXXmmSSttrriinnggTTooCCTT function uses this registry to map the
          font list tags of compound string segments to compound text
          encoding formats.  Registering a font list tag that already
          exists in the registry overwrites the original entry.  You
          can unregister a font list tag by passing a NULL value for
          the _c_t__e_n_c_o_d_i_n_g parameter.


          _f_o_n_t_l_i_s_t__t_a_g
                 Specifies the font list element tag to be registered.
                 The tag must be a NULL-terminated ISO8859-1 string.

          _c_t__e_n_c_o_d_i_n_g
                 Specifies the compound text character set to be used
                 for segments with the font list tag.  The value must
                 be a NULL-terminated ISO8859-1 string.  A value of
                 XXmmFFOONNTTLLIISSTT__DDEEFFAAUULLTT__TTAAGG maps the specified font list
                 tag to the code set of the locale.


     RREETTUURRNN VVAALLUUEE
          Returns NULL for a new font list tag or the old _c_t__e_n_c_o_d_i_n_g
          value for an already registered font list tag.   The
          application is responsible for freeing the storage
          associated with the returned data (if any) by calling
          XXttFFrreeee.

     RREELLAATTEEDD IINNFFOORRMMAATTIIOONN
          XXmmCCvvttXXmmSSttrriinnggTTooCCTT((33XX)), XXmmFFoonnttLLiisstt((33XX)),
          XXmmMMaappSSeeggmmeennttEEnnccooddiinngg((33XX)), and XXmmSSttrriinngg((33XX)).









     1-633                                            (printed 5/7/92)






     XXmmRReemmoovveePPrroottooccoollCCaallllbbaacckk((33RRXeXe)f)feerreennccee PPaaggXXememsRsReemmoovveePPrroottooccoollCCaallllbbaacckk((33XX))



     NNAAMMEE
          XXmmRReemmoovveePPrroottooccoollCCaallllbbaacckk-A VendorShell function that removes
          a callback from the internal list

     SSYYNNOOPPSSIISS
          ##iinncclluuddee <<XXmm//XXmm..hh>>
          ##iinncclluuddee <<XXmm//PPrroottooccoollss..hh>>

          vvooiidd XXmmRReemmoovveePPrroottooccoollCCaallllbbaacckk ((_s_h_e_l_l, _p_r_o_p_e_r_t_y, _p_r_o_t_o_c_o_l, _c_a_l_l_b_a_c_k, _c_l_o_s_u_r_e))
               WWiiddggeett      _s_h_e_l_l;;
               AAttoomm        _p_r_o_p_e_r_t_y;;
               AAttoomm        _p_r_o_t_o_c_o_l;;
               XXttCCaallllbbaacckkPPrroocc_c_a_l_l_b_a_c_k;;
               XXttPPooiinntteerr   _c_l_o_s_u_r_e;;

          vvooiidd XXmmRReemmoovveeWWMMPPrroottooccoollCCaallllbbaacckk ((_s_h_e_l_l, _p_r_o_t_o_c_o_l, _c_a_l_l_b_a_c_k, _c_l_o_s_u_r_e))
               WWiiddggeett      _s_h_e_l_l;;
               AAttoomm        _p_r_o_t_o_c_o_l;;
               XXttCCaallllbbaacckkPPrroocc_c_a_l_l_b_a_c_k;;
               XXttPPooiinntteerr   _c_l_o_s_u_r_e;;


     DDEESSCCRRIIPPTTIIOONN
          XXmmRReemmoovveePPrroottooccoollCCaallllbbaacckk removes a callback from the
          internal list.

          XXmmRReemmoovveeWWMMPPrroottooccoollCCaallllbbaacckk is a convenience interface.  It
          calls XXmmRReemmoovveePPrroottooccoollCCaallllbbaacckk with the property value set
          to the atom returned by interning WWMM__PPRROOTTOOCCOOLLSS.


          _s_h_e_l_l  Specifies the widget with which the protocol property
                 is associated

          _p_r_o_p_e_r_t_y
                 Specifies the protocol property

          _p_r_o_t_o_c_o_l
                 Specifies the protocol atom (or an int cast to Atom)

          _c_a_l_l_b_a_c_k
                 Specifies the procedure to call when a protocol
                 message is received

          _c_l_o_s_u_r_eSpecifies the client data to be passed to the
                 callback when it is invoked


          For a complete definition of VendorShell and its associated
          resources, see VVeennddoorrSShheellll((33XX)).

     RREELLAATTEEDD IINNFFOORRMMAATTIIOONN



     1-634                                            (printed 5/7/92)






     XXmmRReemmoovveePPrroottooccoollCCaallllbbaacckk((33RRXeXe)f)feerreennccee PPaaggXXememsRsReemmoovveePPrroottooccoollCCaallllbbaacckk((33XX))



          VVeennddoorrSShheellll((33XX)), XXmmIInntteerrnnAAttoomm((33XX)), and
          XXmmRReemmoovveeWWMMPPrroottooccoollCCaallllbbaacckk((33XX)).





















































     1-635                                            (printed 5/7/92)






     XXmmRReemmoovveePPrroottooccoollss((33XX))    RReeffeerreennccee PPaaggeess    XXmmRReemmoovveePPrroottooccoollss((33XX))



     NNAAMMEE
          XXmmRReemmoovveePPrroottooccoollss-A VendorShell function that removes the
          protocols from the protocol manager and deallocates the
          internal tables

     SSYYNNOOPPSSIISS
          ##iinncclluuddee <<XXmm//XXmm..hh>>
          ##iinncclluuddee <<XXmm//PPrroottooccoollss..hh>>

          vvooiidd XXmmRReemmoovveePPrroottooccoollss ((_s_h_e_l_l, _p_r_o_p_e_r_t_y, _p_r_o_t_o_c_o_l_s, _n_u_m__p_r_o_t_o_c_o_l_s))
               WWiiddggeett    _s_h_e_l_l;;
               AAttoomm      _p_r_o_p_e_r_t_y;;
               AAttoomm      * _p_r_o_t_o_c_o_l_s;;
               CCaarrddiinnaall  _n_u_m__p_r_o_t_o_c_o_l_s;;

          vvooiidd XXmmRReemmoovveeWWMMPPrroottooccoollss ((_s_h_e_l_l, _p_r_o_t_o_c_o_l_s, _n_u_m__p_r_o_t_o_c_o_l_s))
               WWiiddggeett    _s_h_e_l_l;;
               AAttoomm       * _p_r_o_t_o_c_o_l_s;;
               CCaarrddiinnaall  _n_u_m__p_r_o_t_o_c_o_l_s;;


     DDEESSCCRRIIPPTTIIOONN
          XXmmRReemmoovveePPrroottooccoollss removes the protocols from the protocol
          manager and deallocates the internal tables.  If any of the
          protocols are active, it will update the handlers and update
          the property if _s_h_e_l_l is realized.

          XXmmRReemmoovveeWWMMPPrroottooccoollss is a convenience interface.  It calls
          XXmmRReemmoovveePPrroottooccoollss with the property value set to the atom
          returned by interning WWMM__PPRROOTTOOCCOOLLSS.


          _s_h_e_l_l       Specifies the widget with which the protocol
                      property is associated

          _p_r_o_p_e_r_t_y    Specifies the protocol property

          _p_r_o_t_o_c_o_l_s   Specifies the protocol atoms (or ints cast to
                      Atom)

          _n_u_m__p_r_o_t_o_c_o_l_s
                      Specifies the number of elements in protocols


          For a complete definition of VendorShell and its associated
          resources, see VVeennddoorrSShheellll((33XX)).

     RREELLAATTEEDD IINNFFOORRMMAATTIIOONN
          VVeennddoorrSShheellll((33XX)), XXmmIInntteerrnnAAttoomm((33XX)), and
          XXmmRReemmoovveeWWMMPPrroottooccoollss((33XX)).





     1-636                                            (printed 5/7/92)






     XXmmRReemmoovveeTTaabbGGrroouupp((33XX))     RReeffeerreennccee PPaaggeess     XXmmRReemmoovveeTTaabbGGrroouupp((33XX))



     NNAAMMEE
          XXmmRReemmoovveeTTaabbGGrroouupp-A function that removes a tab group

     SSYYNNOOPPSSIISS
          ##iinncclluuddee <<XXmm//XXmm..hh>>

          vvooiidd XXmmRReemmoovveeTTaabbGGrroouupp ((_t_a_b__g_r_o_u_p))
               WWiiddggeett    _t_a_b__g_r_o_u_p;;


     DDEESSCCRRIIPPTTIIOONN
          This function is obsolete and its behavior is replaced by
          setting XXmmNNnnaavviiggaattiioonnTTyyppee to XXmmNNOONNEE.  XXmmRReemmoovveeTTaabbGGrroouupp
          removes a widget from the list of tab groups associated with
          a particular widget hierarchy and sets the widget's
          XXmmNNnnaavviiggaattiioonnTTyyppee to XXmmNNOONNEE.


          _t_a_b__g_r_o_u_p Specifies the widget ID


     RREELLAATTEEDD IINNFFOORRMMAATTIIOONN
          XXmmAAddddTTaabbGGrroouupp((33XX)), XXmmMMaannaaggeerr((33XX)), and XXmmPPrriimmiittiivvee((33XX)).
































     1-637                                            (printed 5/7/92)






     XXmmRReemmoovveeWWMMPPrroottooccoollCCaallllbbaacckkRR(e(e3f3fXeXe)r)reennccee PPXXamamgRgReeeesmsmoovveeWWMMPPrroottooccoollCCaallllbbaacckk((33XX))



     NNAAMMEE
          XXmmRReemmoovveeWWMMPPrroottooccoollCCaallllbbaacckk-A VendorShell convenience
          interface that removes a callback from the internal list

     SSYYNNOOPPSSIISS
          ##iinncclluuddee <<XXmm//XXmm..hh>>
          ##iinncclluuddee <<XXmm//PPrroottooccoollss..hh>>

          vvooiidd XXmmRReemmoovveeWWMMPPrroottooccoollCCaallllbbaacckk ((_s_h_e_l_l, _p_r_o_t_o_c_o_l, _c_a_l_l_b_a_c_k, _c_l_o_s_u_r_e))
               WWiiddggeett      _s_h_e_l_l;;
               AAttoomm        _p_r_o_t_o_c_o_l;;
               XXttCCaallllbbaacckkPPrroocc_c_a_l_l_b_a_c_k;;
               XXttPPooiinntteerr   _c_l_o_s_u_r_e;;


     DDEESSCCRRIIPPTTIIOONN
          XXmmRReemmoovveeWWMMPPrroottooccoollCCaallllbbaacckk is a convenience interface.  It
          calls XXmmRReemmoovveePPrroottooccoollCCaallllbbaacckk with the property value set
          to the atom returned by interning WWMM__PPRROOTTOOCCOOLLSS.


          _s_h_e_l_l  Specifies the widget with which the protocol property
                 is associated

          _p_r_o_t_o_c_o_l
                 Specifies the protocol atom (or an int type cast to
                 Atom)

          _c_a_l_l_b_a_c_k
                 Specifies the procedure to call when a protocol
                 message is received

          _c_l_o_s_u_r_eSpecifies the client data to be passed to the
                 callback when it is invoked


          For a complete definition of VendorShell and its associated
          resources, see VVeennddoorrSShheellll((33XX)).

     RREELLAATTEEDD IINNFFOORRMMAATTIIOONN
          VVeennddoorrSShheellll((33XX)), XXmmIInntteerrnnAAttoomm((33XX)), and
          XXmmRReemmoovveePPrroottooccoollCCaallllbbaacckk((33XX)).













     1-638                                            (printed 5/7/92)






     XXmmRReemmoovveeWWMMPPrroottooccoollss((33XX))  RReeffeerreennccee PPaaggeess  XXmmRReemmoovveeWWMMPPrroottooccoollss((33XX))



     NNAAMMEE
          XXmmRReemmoovveeWWMMPPrroottooccoollss-A VendorShell convenience interface that
          removes the protocols from the protocol manager and
          deallocates the internal tables

     SSYYNNOOPPSSIISS
          ##iinncclluuddee <<XXmm//XXmm..hh>>
          ##iinncclluuddee <<XXmm//PPrroottooccoollss..hh>>

          vvooiidd XXmmRReemmoovveeWWMMPPrroottooccoollss ((_s_h_e_l_l, _p_r_o_t_o_c_o_l_s, _n_u_m__p_r_o_t_o_c_o_l_s))
               WWiiddggeett    _s_h_e_l_l;;
               AAttoomm      * _p_r_o_t_o_c_o_l_s;;
               CCaarrddiinnaall  _n_u_m__p_r_o_t_o_c_o_l_s;;


     DDEESSCCRRIIPPTTIIOONN
          XXmmRReemmoovveeWWMMPPrroottooccoollss is a convenience interface.  It calls
          XXmmRReemmoovveePPrroottooccoollss with the property value set to the atom
          returned by interning WWMM__PPRROOTTOOCCOOLLSS.


          _s_h_e_l_l       Specifies the widget with which the protocol
                      property is associated

          _p_r_o_t_o_c_o_l_s   Specifies the protocol atoms (or ints cast to
                      Atom)

          _n_u_m__p_r_o_t_o_c_o_l_s
                      Specifies the number of elements in protocols


          For a complete definition of VendorShell and its associated
          resources, see VVeennddoorrSShheellll((33XX)).

     RREELLAATTEEDD IINNFFOORRMMAATTIIOONN
          VVeennddoorrSShheellll((33XX)), XXmmIInntteerrnnAAttoomm((33XX)), and
          XXmmRReemmoovveePPrroottooccoollss((33XX)).


















     1-639                                            (printed 5/7/92)






     XXmmRReeppTTyyppeeAAddddRReevveerrssee((33XX))  RReeffeerreennccee PPaaggeess  XXmmRReeppTTyyppeeAAddddRReevveerrssee((33XX))



     NNAAMMEE
          XXmmRReeppTTyyppeeAAddddRReevveerrssee-A representation type manager function
          that installs the reverse converter for a previously
          registered representation type

     SSYYNNOOPPSSIISS
          ##iinncclluuddee <<XXmm//RReeppTTyyppee..hh>>

          vvooiidd XXmmRReeppTTyyppeeAAddddRReevveerrssee ((_r_e_p__t_y_p_e__i_d))
               XXmmRReeppTTyyppeeIIdd_r_e_p__t_y_p_e__i_d;;


     DDEESSCCRRIIPPTTIIOONN
          XXmmRReeppTTyyppeeAAddddRReevveerrssee installs the reverse converter for a
          previously registered representation type.  The reverse
          converter takes a numerical representation type value and
          returns its corresponding string value.  Certain
          applications may require this capability to obtain a string
          value to display on a screen or to build a resource file.

          The _v_a_l_u_e_s argument of the XXmmRReeppTTyyppeeRReeggiisstteerr function can be
          used to register representation types with nonconsecutive
          values or with duplicate names for the same value.  If the
          list of numerical values for a representation type contains
          duplicate values, the reverse converter uses the first name
          in the _v_a_l_u_e__n_a_m_e_s list that matches the specified numeric
          value.  For example, if a _v_a_l_u_e__n_a_m_e_s array has ccaanncceell,
          pprroocceeeedd, and aabboorrtt, and the corresponding _v_a_l_u_e_s array
          contains 0, 1, and 0, the reverse converter will return
          ccaanncceell instead of aabboorrtt for an input value of 0.


          _r_e_p__t_y_p_e__i_d
                    Specifies the identification number of the
                    representation type


     RREELLAATTEEDD IINNFFOORRMMAATTIIOONN
          XXmmRReeppTTyyppeeGGeettIIdd((33XX)) and XXmmRReeppTTyyppeeRReeggiisstteerr((33XX)).
















     1-640                                            (printed 5/7/92)






     XXmmRReeppTTyyppeeGGeettIIdd((33XX))       RReeffeerreennccee PPaaggeess       XXmmRReeppTTyyppeeGGeettIIdd((33XX))



     NNAAMMEE
          XXmmRReeppTTyyppeeGGeettIIdd-A representation type manager function that
          retrieves the identification number of a representation type

     SSYYNNOOPPSSIISS
          ##iinncclluuddee <<XXmm//RReeppTTyyppee..hh>>

          XXmmRReeppTTyyppeeIIdd XXmmRReeppTTyyppeeGGeettIIdd ((_r_e_p__t_y_p_e))
               SSttrriinngg    _r_e_p__t_y_p_e;;


     DDEESSCCRRIIPPTTIIOONN
          XXmmRReeppTTyyppeeGGeettIIdd searches the registration list for the
          specified representation type and returns the associated
          identification number.


          _r_e_p__t_y_p_e  Specifies the representation type for which an
                    identification number is requested


     RREETTUURRNN VVAALLUUEE
          Returns the identification number of the specified
          representation type.  If the representation type is not
          registered, the function returns XXmmRREEPP__TTYYPPEE__IINNVVAALLIIDD.

     RREELLAATTEEDD IINNFFOORRMMAATTIIOONN
          XXmmRReeppTTyyppeeGGeettRReeggiisstteerreedd((33XX)) and XXmmRReeppTTyyppeeRReeggiisstteerr((33XX)).



























     1-641                                            (printed 5/7/92)






     XXmmRReeppTTyyppeeGGeettNNaammeeLLiisstt((33XX)) RReeffeerreennccee PPaaggeess XXmmRReeppTTyyppeeGGeettNNaammeeLLiisstt((33XX))



     NNAAMMEE
          XXmmRReeppTTyyppeeGGeettNNaammeeLLiisstt-A representation type manager function
          that generates a list of values for a representation type

     SSYYNNOOPPSSIISS
          ##iinncclluuddee <<XXmm//RReeppTTyyppee..hh>>

          SSttrriinngg ** XXmmRReeppTTyyppeeGGeettNNaammeeLLiisstt ((_r_e_p__t_y_p_e__i_d, _u_s_e__u_p_p_e_r_c_a_s_e__f_o_r_m_a_t))
               XXmmRReeppTTyyppeeIIdd _r_e_p__t_y_p_e__i_d;;
               BBoooolleeaann     _u_s_e__u_p_p_e_r_c_a_s_e__f_o_r_m_a_t;;


     DDEESSCCRRIIPPTTIIOONN
          XXmmRReeppTTyyppeeGGeettNNaammeeLLiisstt generates a null-terminated list of the
          value names associated with the specified representation
          type.  Each value name is a null-terminated string.  This
          routine allocates memory for the returned data.  The
          application must free this memory using XXttFFrreeee.


          _r_e_p__t_y_p_e__i_d
                    Specifies the identification number of the
                    representation type.

          _u_s_e__u_p_p_e_r_c_a_s_e__f_o_r_m_a_t
                    Specifies a Boolean value that controls the format
                    of the name list.  If True, each value name is in
                    uppercase characters prefixed by "Xm"; if False,
                    the names are in lowercase characters.


     RREETTUURRNN VVAALLUUEE
          Returns a pointer to an array of the value names.

     RREELLAATTEEDD IINNFFOORRMMAATTIIOONN
          XXmmRReeppTTyyppeeGGeettIIdd((33XX)), XXmmRReeppTTyyppeeGGeettRReeggiisstteerreedd((33XX)), and
          XXmmRReeppTTyyppeeRReeggiisstteerr((33XX)).


















     1-642                                            (printed 5/7/92)






     XXmmRReeppTTyyppeeGGeettRReeccoorrdd((33XX))   RReeffeerreennccee PPaaggeess   XXmmRReeppTTyyppeeGGeettRReeccoorrdd((33XX))



     NNAAMMEE
          XXmmRReeppTTyyppeeGGeettRReeccoorrdd-A representation type manager function
          that returns information about a representation type

     SSYYNNOOPPSSIISS
          ##iinncclluuddee <<XXmm//RReeppTTyyppee..hh>>

          XXmmRReeppTTyyppeeEEnnttrryy XXmmRReeppTTyyppeeGGeettRReeccoorrdd ((_r_e_p__t_y_p_e__i_d))
               XXmmRReeppTTyyppeeIIdd_r_e_p__t_y_p_e__i_d;;


     DDEESSCCRRIIPPTTIIOONN
          XXmmRReeppTTyyppeeGGeettRReeccoorrdd retrieves information about a particular
          representation type that is registered with the
          representation type manager.  This routine allocates memory
          for the returned data. The application must free this memory
          using XXttFFrreeee.


          _r_e_p__t_y_p_e__i_d
                    The identification number of the representation
                    type


          The representation type entry structure contains the
          following information:

          ttyyppeeddeeff ssttrruucctt
          {{
            SSttrriinngg       _r_e_p__t_y_p_e__n_a_m_e;;
            SSttrriinngg       **_v_a_l_u_e__n_a_m_e_s;;
            uunnssiiggnneedd cchhaarr**_v_a_l_u_e_s;;
            uunnssiiggnneedd cchhaarr_n_u_m__v_a_l_u_e_s;;
            BBoooolleeaann      _r_e_v_e_r_s_e__i_n_s_t_a_l_l_e_d;;
            XXmmRReeppTTyyppeeIIdd  _r_e_p__t_y_p_e__i_d;;
          }} XXmmRReeppTTyyppeeEEnnttrryyRReecc,, **XXmmRReeppTTyyppeeEEnnttrryy ;;


          _r_e_p__t_y_p_e__n_a_m_e
                       The name of the representation type

          _v_a_l_u_e__n_a_m_e_s  An array of representation type value names

          _v_a_l_u_e_s       An array of representation type numerical
                       values

          _n_u_m__v_a_l_u_e_s   The number of values associated with the
                       representation type

          _r_e_v_e_r_s_e__i_n_s_t_a_l_l_e_d
                       A flag that indicates whether or not the
                       reverse converter is installed



     1-643                                            (printed 5/7/92)






     XXmmRReeppTTyyppeeGGeettRReeccoorrdd((33XX))   RReeffeerreennccee PPaaggeess   XXmmRReeppTTyyppeeGGeettRReeccoorrdd((33XX))



          _r_e_p__t_y_p_e__i_d  The identification number of the representation
                       type


     RREETTUURRNN VVAALLUUEE
          Returns a pointer to the representation type entry structure
          that describes the representation type.

     RREELLAATTEEDD IINNFFOORRMMAATTIIOONN
          XXmmRReeppTTyyppeeGGeettIIdd((33XX)), XXmmRReeppTTyyppeeGGeettRReeggiisstteerreedd((33XX)), and
          XXmmRReeppTTyyppeeRReeggiisstteerr((33XX)).












































     1-644                                            (printed 5/7/92)






     XXmmRReeppTTyyppeeGGeettRReeggiisstteerreedd((33XX))RReeffeerreennccee PPaaggeessXXmmRReeppTTyyppeeGGeettRReeggiisstteerreedd((33XX))



     NNAAMMEE
          XXmmRReeppTTyyppeeGGeettRReeggiisstteerreedd-A representation type manager
          function that returns a copy of the registration list

     SSYYNNOOPPSSIISS
          ##iinncclluuddee <<XXmm//RReeppTTyyppee..hh>>

          XXmmRReeppTTyyppeeLLiisstt XXmmRReeppTTyyppeeGGeettRReeggiisstteerreedd (())


     DDEESSCCRRIIPPTTIIOONN
          XXmmRReeppTTyyppeeGGeettRReeggiisstteerreedd retrieves information about all
          representation types that are registered with the
          representation type manager.  The registration list is an
          array of structures, each of which contains information for
          a representation type entry.  The end of the registration
          list is marked with a representation type entry whose
          _r_e_p__t_y_p_e__n_a_m_e field has a NULL pointer.  This routine
          allocates memory for the returned data.  The application
          must free this memory using XXttFFrreeee.

          The representation type entry structure contains the
          following information:

          ttyyppeeddeeff ssttrruucctt
          {{
            SSttrriinngg       _r_e_p__t_y_p_e__n_a_m_e;;
            SSttrriinngg       **_v_a_l_u_e__n_a_m_e_s;;
            uunnssiiggnneedd cchhaarr**_v_a_l_u_e_s;;
            uunnssiiggnneedd cchhaarr_n_u_m__v_a_l_u_e_s;;
            BBoooolleeaann      _r_e_v_e_r_s_e__i_n_s_t_a_l_l_e_d;;
            XXmmRReeppTTyyppeeIIdd  _r_e_p__t_y_p_e__i_d;;
          }} XXmmRReeppTTyyppeeEEnnttrryyRReecc,, **XXmmRReeppTTyyppeeLLiisstt ;;


          _r_e_p__t_y_p_e__n_a_m_e
                       The name of the representation type

          _v_a_l_u_e__n_a_m_e_s  An array of representation type value names

          _v_a_l_u_e_s       An array of representation type numerical
                       values

          _n_u_m__v_a_l_u_e_s   The number of values associated with the
                       representation type

          _r_e_v_e_r_s_e__i_n_s_t_a_l_l_e_d
                       A flag that indicates whether or not the
                       reverse converter is installed

          _r_e_p__t_y_p_e__i_d  The identification number of the representation
                       type



     1-645                                            (printed 5/7/92)






     XXmmRReeppTTyyppeeGGeettRReeggiisstteerreedd((33XX))RReeffeerreennccee PPaaggeessXXmmRReeppTTyyppeeGGeettRReeggiisstteerreedd((33XX))



     RREETTUURRNN VVAALLUUEE
          Returns a pointer to the registration list of representation
          types.

     RREELLAATTEEDD IINNFFOORRMMAATTIIOONN
          XXmmRReeppTTyyppeeRReeggiisstteerr((33XX)) and XXmmRReeppTTyyppeeGGeettRReeccoorrdd((33XX)).

















































     1-646                                            (printed 5/7/92)






     XXmmRReeppTTyyppeeIInnssttaallllTTeeaarrOOffffMMooXXdmdRRmeeReeRlfelfeCepCeporTorTneyneyvnpvnpeceecereIreIt ntnPesePsratrat(ga(ga3el3elXslXsl)T)TeeaarrOOffffMMooddeellCCoonnvveerrtteerr((33XX))



     NNAAMMEE
          XXmmRReeppTTyyppeeIInnssttaallllTTeeaarrOOffffMMooddeellCCoonnvveerrtteerr-A representation type
          manager function that installs the resource converter for
          XXmmNNtteeaarrOOffffMMooddeell.

     SSYYNNOOPPSSIISS
          ##iinncclluuddee <<XXmm//RReeppTTyyppee..hh>>

          vvooiidd XXmmRReeppTTyyppeeIInnssttaallllTTeeaarrOOffffMMooddeellCCoonnvveerrtteerr (())


     DDEESSCCRRIIPPTTIIOONN
          XXmmRReeppTTyyppeeIInnssttaallllTTeeaarrOOffffMMooddeellCCoonnvveerrtteerr installs the resource
          converter that allows values for the XXmmNNtteeaarrOOffffMMooddeell
          resource to be specified in resource default files.

     RREELLAATTEEDD IINNFFOORRMMAATTIIOONN
          XXmmRRoowwCCoolluummnn((33XX)).





































     1-647                                            (printed 5/7/92)






     XXmmRReeppTTyyppeeRReeggiisstteerr((33XX))    RReeffeerreennccee PPaaggeess    XXmmRReeppTTyyppeeRReeggiisstteerr((33XX))



     NNAAMMEE
          XXmmRReeppTTyyppeeRReeggiisstteerr-A representation type manager function
          that registers a representation type resource

     SSYYNNOOPPSSIISS
          ##iinncclluuddee <<XXmm//RReeppTTyyppee..hh>>

          XXmmRReeppTTyyppeeIIdd XXmmRReeppTTyyppeeRReeggiisstteerr ((_r_e_p__t_y_p_e, _v_a_l_u_e__n_a_m_e_s, _v_a_l_u_e_s, _n_u_m__v_a_l_u_e_s))
               SSttrriinngg      _r_e_p__t_y_p_e;;
               SSttrriinngg      **_v_a_l_u_e__n_a_m_e_s;;
               uunnssiiggnneedd cchhaarr**_v_a_l_u_e_s;;
               uunnssiiggnneedd cchhaarr_n_u_m__v_a_l_u_e_s;;


     DDEESSCCRRIIPPTTIIOONN
          XXmmRReeppTTyyppeeRReeggiisstteerr registers a representation type resource
          with the representation type manager.  All features of the
          representation type management facility become available for
          the specified representation type.  The function installs a
          forward type converter to convert string values to numerical
          representation type values.

          When the _v_a_l_u_e_s argument is NULL, consecutive numerical
          values are assumed.  The order of the strings in the
          _v_a_l_u_e__n_a_m_e_s array determines the numerical values for the
          resource.  For example, the first value name is 0; the
          second value name is 1; and so on.

          If it is non-NULL, the _v_a_l_u_e_s argument can be used to assign
          values to representation types that have nonconsecutive
          values or have duplicate names for the same value.
          Representation types registered in this manner will consume
          additional storage and will be slightly slower than
          representation types with consecutive values.

          A representation type can only be registered once; if the
          same representation type name is registered more than once,
          the behavior is undefined.

          The function XXmmRReeppTTyyppeeAAddddRReevveerrssee installs a reverse
          converter for a registered representation type.  The reverse
          converter takes a representation type numerical value and
          returns the corresponding string value. If the list of
          numerical values for a representation type contains
          duplicate values, the reverse converter uses the first name
          in the _v_a_l_u_e__n_a_m_e_s list that matches the specified numeric
          value.  For example, if a _v_a_l_u_e__n_a_m_e_s array has ccaanncceell,
          pprroocceeeedd, and aabboorrtt, and the corresponding _v_a_l_u_e_s array
          contains 0, 1, and 0, the reverse converter will return
          ccaanncceell instead of aabboorrtt for an input value of 0.





     1-648                                            (printed 5/7/92)






     XXmmRReeppTTyyppeeRReeggiisstteerr((33XX))    RReeffeerreennccee PPaaggeess    XXmmRReeppTTyyppeeRReeggiisstteerr((33XX))



          _r_e_p__t_y_p_e    Specifies the representation type name.

          _v_a_l_u_e__n_a_m_e_s Specifies a pointer to an array of value names
                      associated with the representation type.  A
                      value name is specified in lowercase characters
                      without an "Xm" prefix.  Words within a name are
                      separated with underscores.

          _v_a_l_u_e_s      Specifies a pointer to an array of values
                      associated with the representation type.  A
                      value in this array is associated with the value
                      name in the corresponding position of the
                      _v_a_l_u_e__n_a_m_e_s array.

          _n_u_m__v_a_l_u_e_s  Specifies the number of entries in the
                      _v_a_l_u_e__n_a_m_e_s and _v_a_l_u_e_s arrays.


     RREETTUURRNN VVAALLUUEE
          Returns the identification number for the specified
          representation type.

     RREELLAATTEEDD IINNFFOORRMMAATTIIOONN
          XXmmRReeppTTyyppeeAAddddRReevveerrssee((33XX)), XXmmRReeppTTyyppeeGGeettIIdd((33XX)),
          XXmmRReeppTTyyppeeGGeettNNaammeeLLiisstt((33XX)), XXmmRReeppTTyyppeeGGeettRReeccoorrdd((33XX)),
          XXmmRReeppTTyyppeeGGeettRReeggiisstteerreedd((33XX)), and XXmmRReeppTTyyppeeVVaalliiddVVaalluuee((33XX)).





























     1-649                                            (printed 5/7/92)






     XXmmRReeppTTyyppeeVVaalliiddVVaalluuee((33XX))  RReeffeerreennccee PPaaggeess  XXmmRReeppTTyyppeeVVaalliiddVVaalluuee((33XX))



     NNAAMMEE
          XXmmRReeppTTyyppeeVVaalliiddVVaalluuee-A representation type manager function
          that tests the validity of a numerical value of a
          representation type resource

     SSYYNNOOPPSSIISS
          ##iinncclluuddee <<XXmm//RReeppTTyyppee..hh>>

          BBoooolleeaann XXmmRReeppTTyyppeeVVaalliiddVVaalluuee ((_r_e_p__t_y_p_e__i_d, _t_e_s_t__v_a_l_u_e, _e_n_a_b_l_e__d_e_f_a_u_l_t__w_a_r_n_i_n_g))
               XXmmRReeppTTyyppeeIIdd _r_e_p__t_y_p_e__i_d;;
               uunnssiiggnneedd cchhaarr_t_e_s_t__v_a_l_u_e;;
               WWiiddggeett      _e_n_a_b_l_e__d_e_f_a_u_l_t__w_a_r_n_i_n_g;;


     DDEESSCCRRIIPPTTIIOONN
          XXmmRReeppTTyyppeeVVaalliiddVVaalluuee tests the validity of a numerical value
          for a given representation type resource.  The function
          generates a default warning message if the value is invalid
          and the _e_n_a_b_l_e__d_e_f_a_u_l_t__w_a_r_n_i_n_g argument is non-NULL.


          _r_e_p__t_y_p_e__i_d
                    Specifies the identification number of the
                    representation type.

          _t_e_s_t__v_a_l_u_e
                    Specifies the numerical value to test.

          _e_n_a_b_l_e__d_e_f_a_u_l_t__w_a_r_n_i_n_g
                    Specifies the ID of the widget that contains a
                    default warning message.  If this parameter is
                    NULL, no default warning message is generated and
                    the application must provide its own error
                    handling.


     RREETTUURRNN VVAALLUUEE
          Returns True if the specified value is valid; otherwise,
          returns False.

     RREELLAATTEEDD IINNFFOORRMMAATTIIOONN
          XXmmRReeppTTyyppeeGGeettIIdd((33XX)) and XXmmRReeppTTyyppeeRReeggiisstteerr((33XX)).













     1-650                                            (printed 5/7/92)






     XXmmRReessoollvveeAAllllPPaarrttOOffffsseettss((33XXRR)e)effeerreennccee PPaaggeeXXsmsmRReessoollvveeAAllllPPaarrttOOffffsseettss((33XX))



     NNAAMMEE
          XXmmRReessoollvveeAAllllPPaarrttOOffffsseettss-A function that allows writing of
          upward-compatible applications and widgets

     SSYYNNOOPPSSIISS
          ##iinncclluuddee <<XXmm//XXmmPP..hh>>

          vvooiidd XXmmRReessoollvveeAAllllPPaarrttOOffffsseettss ((_w_i_d_g_e_t__c_l_a_s_s, _o_f_f_s_e_t, _c_o_n_s_t_r_a_i_n_t__o_f_f_s_e_t))
               WWiiddggeettCCllaassss_w_i_d_g_e_t__c_l_a_s_s;;
               XXmmOOffffsseettPPttrr* _o_f_f_s_e_t;;
               XXmmOOffffsseettPPttrr* _c_o_n_s_t_r_a_i_n_t__o_f_f_s_e_t;;


     DDEESSCCRRIIPPTTIIOONN
          The use of offset records requires two extra global
          variables per widget class.  The variables consist of
          pointers to arrays of offsets into the widget record and
          constraint record for each part of the widget structure.
          The XXmmRReessoollvveeAAllllPPaarrttOOffffsseettss function allocates the offset
          records needed by an application to guarantee upward-
          compatible access to widget instance and constraint records
          by applications and widgets.  These offset records are used
          by the widget to access all of the widget's variables.  A
          widget needs to take the following steps:


            +o  Instead of creating a resource list, the widget creates
               an offset resource list.  To help you accomplish this,
               use the XXmmPPaarrttRReessoouurrccee structure and the XXmmPPaarrttOOffffsseett
               macro.  The XXmmPPaarrttRReessoouurrccee data structure looks just
               like a resource list, but instead of having one integer
               for its offset, it has two shorts.  This is put into
               the class record as if it were a normal resource list.
               Instead of using XXttOOffffsseett for the offset, the widget
               uses XXmmPPaarrttOOffffsseett.

               If the widget is a subclass of the Constraint class and
               it defines additional constraint resources, create an
               offset resource list for the constraint part as well.
               Instead of using XXttOOffffsseett for the offset, the widget
               uses XXmmCCoonnssttrraaiinnttPPaarrttOOffffsseett in the constraint resource
               list.

               XmPartResource resources[] = {
                 {  BarNxyz, BarCXyz, XmRBoolean, sizeof(Boolean),
                    XmPartOffset(Bar,xyz), XmRImmediate, (XtPointer)False } };

               XmPartResource constraints[] = {
                 {  BarNmaxWidth, BarNMaxWidth,
                         XmRDimension, sizeof(Dimension),
                         XmConstraintPartOffset(Bar,max_width),
                         XmRImmediate, (XtPointer)100 } };



     1-651                                            (printed 5/7/92)






     XXmmRReessoollvveeAAllllPPaarrttOOffffsseettss((33XXRR)e)effeerreennccee PPaaggeeXXsmsmRReessoollvveeAAllllPPaarrttOOffffsseettss((33XX))



            +o  Instead of putting the widget size in the class record,
               the widget puts the widget part size in the same field.
               If the widget is a subclass of the Constraint class,
               instead of putting the widget constraint record size in
               the class record, the widget puts the widget constraint
               part size in the same field.

            +o  Instead of putting XXttVVeerrssiioonn in the class record, the
               widget puts XXttVVeerrssiioonnDDoonnttCChheecckk in the class record.

            +o  Define a variable, of type XXmmOOffffsseettPPttrr, to point to the
               offset record.  If the widget is a subclass of the
               Constraint class, define a variable of type XmOffsetPtr
               to point to the constraint offset record.  These can be
               part of the widget's class record or separate global
               variables.

            +o  In class initialization, the widget calls
               XXmmRReessoollvveeAAllllPPaarrttOOffffsseettss, passing it pointers to the
               class record, the address of the offset record, and the
               address of the constraint offset record.  If the widget
               not is a subclass of the Constraint class, it should
               pass NULL as the address of the constraint offset
               record.  This does several things:

               Adds the superclass (which, by definition, has already
               been initialized) size field to the part size field

               If the widget is a subclass of the Constraint class,
               adds the superclass constraint size field to the
               constraint size field

               Allocates an array based upon the number of
               superclasses

               If the widget is a subclass of the constraint class,
               allocates an array for the constraint offset record

               Fills in the offsets of all the widget parts and
               constraint parts with the appropriate values,
               determined by examining the size fields of all
               superclass records

               Uses the part offset array to modify the offset entries
               in the resource list to be real offsets, in place

            +o  The widget defines a constant which will be the index
               to its part structure in the offsets array.  The value
               should be 1 greater than the index of the widget's
               superclass.  Constants defined for all Xm widgets can
               be found in XXmmPP..hh.




     1-652                                            (printed 5/7/92)






     XXmmRReessoollvveeAAllllPPaarrttOOffffsseettss((33XXRR)e)effeerreennccee PPaaggeeXXsmsmRReessoollvveeAAllllPPaarrttOOffffsseettss((33XX))



               #define BarIndex (XmBulletinBIndex + 1)


            +o  Instead of accessing fields directly, the widget must
               always go through the offset table.  The XXmmFFiieelldd and
               XXmmCCoonnssttrraaiinnttFFiieelldd macros help you access these fields.
               Because the XXmmPPaarrttOOffffsseett, XXmmCCoonnssttrraaiinnttPPaarrttOOffffsseett,
               XXmmFFiieelldd, and XXmmCCoonnssttrraaiinnttFFiieelldd macros concatenate
               things together, you must ensure that there is no space
               after the part argument.  For example, the following
               macros do not work because of the space after the part
               (Label) argument:

               XmField(w, offset, Label , text, char *)
               XmPartOffset(Label , text).

               Therefore, you must not have any spaces after the part
               (Label) argument, as illustrated here:

               XmField(w, offset, Label, text, char *)

               You can define macros for each field to make this
               easier.  Assume an integer field _x_y_z:

               #define BarXyz(w) (*(int *)(((char *) w) + \
                 offset[BarIndex] + XtOffset(BarPart,xyz)))


               For constraint field _m_a_x__w_i_d_t_h:

               #define BarMaxWidth(w) \
                 XmConstraintField(w,constraint_offsets,Bar,max_width,Dimension)


          The parameters for XXmmRReessoollvveeAAllllPPaarrttOOffffsseettss are defined
          below:


          _w_i_d_g_e_t__c_l_a_s_s
                    Specifies the widget class pointer for the created
                    widget

          _o_f_f_s_e_t    Returns the offset record

          _c_o_n_s_t_r_a_i_n_t__o_f_f_s_e_t
                    Returns the constraint offset record


     RREELLAATTEEDD IINNFFOORRMMAATTIIOONN
          XXmmRReessoollvveePPaarrttOOffffsseettss((33XX)).





     1-653                                            (printed 5/7/92)






     XXmmRReessoollvveePPaarrttOOffffsseettss((33XX)) RReeffeerreennccee PPaaggeess XXmmRReessoollvveePPaarrttOOffffsseettss((33XX))



     NNAAMMEE
          XXmmRReessoollvveePPaarrttOOffffsseettss-A function that allows writing of
          upward-compatible applications and widgets

     SSYYNNOOPPSSIISS
          ##iinncclluuddee <<XXmm//XXmmPP..hh>>

          vvooiidd XXmmRReessoollvveePPaarrttOOffffsseettss ((_w_i_d_g_e_t__c_l_a_s_s, _o_f_f_s_e_t))
               WWiiddggeettCCllaassss_w_i_d_g_e_t__c_l_a_s_s;;
               XXmmOOffffsseettPPttrr* _o_f_f_s_e_t;;


     DDEESSCCRRIIPPTTIIOONN
          The use of offset records requires one extra global variable
          per widget class.  The variable consists of a pointer to an
          array of offsets into the widget record for each part of the
          widget structure.  The XXmmRReessoollvveePPaarrttOOffffsseettss function
          allocates the offset records needed by an application to
          guarantee upward-compatible access to widget instance
          records by applications and widgets.  These offset records
          are used by the widget to access all of the widget's
          variables.  A widget needs to take the following steps:


            +o  Instead of creating a resource list, the widget creates
               an offset resource list.  To help you accomplish this,
               use the XXmmPPaarrttRReessoouurrccee structure and the XXmmPPaarrttOOffffsseett
               macro.  The XXmmPPaarrttRReessoouurrccee data structure looks just
               like a resource list, but instead of having one integer
               for its offset, it has two shorts.  This is put into
               the class record as if it were a normal resource list.
               Instead of using XXttOOffffsseett for the offset, the widget
               uses XXmmPPaarrttOOffffsseett.

               XmPartResource resources[] = {
                 { BarNxyz, BarCXyz, XmRBoolean,
                   sizeof(Boolean), XmPartOffset(Bar,xyz),
                   XmRImmediate, (XtPointer)False }
               };


            +o  Instead of putting the widget size in the class record,
               the widget puts the widget part size in the same field.

            +o  Instead of putting XXttVVeerrssiioonn in the class record, the
               widget puts XXttVVeerrssiioonnDDoonnttCChheecckk in the class record.

            +o  The widget defines a variable, of type XXmmOOffffsseettPPttrr, to
               point to the offset record.  This can be part of the
               widget's class record or a separate global variable.

            +o  In class initialization, the widget calls



     1-654                                            (printed 5/7/92)






     XXmmRReessoollvveePPaarrttOOffffsseettss((33XX)) RReeffeerreennccee PPaaggeess XXmmRReessoollvveePPaarrttOOffffsseettss((33XX))



               XXmmRReessoollvveePPaarrttOOffffsseettss, passing it a pointer to contain
               the address of the offset record and the class record.
               This does several things:

               Adds the superclass (which, by definition, has already
               been initialized) size field to the part size field

               Allocates an array based upon the number of
               superclasses

               Fills in the offsets of all the widget parts with the
               appropriate values, determined by examining the size
               fields of all superclass records

               Uses the part offset array to modify the offset entries
               in the resource list to be real offsets, in place

            +o  The widget defines a constant which will be the index
               to its part structure in the offsets array.  The value
               should be 1 greater than the index of the widget's
               superclass.  Constants defined for all Xm widgets can
               be found in XXmmPP..hh.

               #define BarIndex (XmBulletinBIndex + 1)


            +o  Instead of accessing fields directly, the widget must
               always go through the offset table.  The XXmmFFiieelldd macro
               helps you access these fields.  Because the
               XXmmPPaarrttOOffffsseett and XXmmFFiieelldd macros concatenate things
               together, you must ensure that there is no space after
               the part argument.  For example, the following macros
               do not work because of the space after the part (Label)
               argument:

               XmField(w, offset, Label , text, char *)
               XmPartOffset(Label , text)

               Therefore, you must not have any spaces after the part
               (Label) argument, as illustrated here:

               XmField(w, offset, Label, text, char *)

               You can define macros for each field to make this
               easier.  Assume an integer field _x_y_z:

               #define BarXyz(w) (*(int *)(((char *) w) + \
                 offset[BarIndex] + XtOffset(BarPart,xyz)))


          The parameters for XXmmRReessoollvveePPaarrttOOffffsseettss are defined below:




     1-655                                            (printed 5/7/92)






     XXmmRReessoollvveePPaarrttOOffffsseettss((33XX)) RReeffeerreennccee PPaaggeess XXmmRReessoollvveePPaarrttOOffffsseettss((33XX))



          _w_i_d_g_e_t__c_l_a_s_s
                    Specifies the widget class pointer for the created
                    widget.

          _o_f_f_s_e_t    Returns the offset record.


     RREELLAATTEEDD IINNFFOORRMMAATTIIOONN
          XXmmRReessoollvveeAAllllPPaarrttOOffffsseettss((33XX)).














































     1-656                                            (printed 5/7/92)



 _
