Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ Intro(Xm) — OpenDesktop Software Development System 3.0.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought


 Intro(Xm)                      6 January 1993                      Intro(Xm)


 Name

    Intro - Identifies the feature changes from Motif 1.0 through 1.2

 Description

    This manual page describes the changes between Motif 1.0, 1.1, and 1.2.
    Also covered are the additional changes implemented through Motif 1.1.2,
    1.1.3 and 1.1.4 and 1.2. This manual page uses this two-stage approach to
    provide the ability to have a historical record of the modifications to
    Motif on a release-by-release basis.

 New features and changes for Motif 1.1

    This section summarizes the new features and changes included in the 1.1
    release of Motif.

    AES/UE and style guide compliance

    Motif 1.1 is compliant with the Revision B of the User Environment Volume
    of the Application Environment Specification (AES/UE) and with the
    OSF/Motif Style Guide.  This release includes a great many changes; these
    changes have been incorporated in the AES/UE to achieve compliance.

    Enhancements included in the AES

    Motif 1.1 implements many enhancements included in Revision B of the
    AES/UE  These enhancements include:

    +  Improved XmFileSelectionBox widget, containing a separate listing of
       directories.

    +  Improved keyboard navigation and selection in many widgets, in compli-
       ance with the OSF/Motif Style Guide.

    +  In Text, primary paste, quick paste using secondary selection, and
       clipboard cut and paste.

    +  New convenience routines for the List and Text widgets.

    +  Routines for converting between compound strings and compound text.

    +  A routine for creating a compound string in the current language
       environment.

    +  A routine for calculating default shadow and select colors.

    +  A routine, XmTrackingLocate, to provide a modal interface for selec-
       tion of a component.

    +  A new Motif Resource Manager (MRM) function for registering names
       whose scope is restricted to a single hierarchy.


    The following services are new in Revision B of the AES/UE (not including
    previously existing services added in Revision B):

           MrmRegisterNamesInHierarchy      XMStringSimpleCreate
           XmCascadeButtonGadgetHighlight   XmStringTable
           XmCreateWorkArea                 XmTextCopy
           XmCvtCTToXmString                XmTextCut
           XmCvtXmStringToCT                XmTextGetBaseline
           XmFontList                       XmTextGetInsertionPosition
           XmGetColors                      XmTextGetLastPosition
           XmGetPostedFromWidget            XmTextGetSelectionPosition
           XmListAddItems                   XmTextGetSource
           XmListDeleteAllItems             XmTextGetTopCharacter
           XmListDeleteItems                XmTextInsert
           XmListDeleteItemsPos             XmTextPaste
           XmListGetMatchPos                XmTextPosToXY
           XmListGetSelectedPos             XmTextPosition
           XmListItemPos                    XmTextRemove
           XmListReplaceItems               XmTextScroll
           XmListReplaceItemsPos            XmTextSetAddMode
           XmListSetAddMode                 XmTextSetHighlight
           XmMainWindowSep3                 XmTextSetInsertionPosition
           XmProcessTraversal               XmTextSetSource
           XmString                         XmTextSetTopCharacter
           XmStringCreateSimple             XmTextShowPosition
           XmStringDirection                XmTextXYToPos
           XmStringHasSubstring             XmTrackingLocate


    The following previously existing services have been added to the AES/UE
    in Revision B:

              MrmCloseHierarchy          XmRemoveProtocols
              MrmFetchColorLiteral       XmRemoveWMProtocolCallback
              MrmFetchIconLiteral        XmRemoveWMProtocols
              MrmFetchLiteral            XmSetProtocolHooks
              MrmFetchSetValues          XmSetWMProtocolHooks
              MrmFetchWidget             XmStringBaseline
              MrmFetchWidgetOverride     XmStringByteCompare
              MrmInitialize              XmStringCompare
              MrmOpenHierarchy           XmStringConcat
              MrmRegisterClass           XmStringCopy
              MrmRegisterNames           XmStringCreate
              Uil                        XmStringDraw
              XmActivateProtocol         XmStringDrawImage
              XmActivateWMProtocol       XmStringDrawUnderline
              XmAddProtocolCallback      XmStringEmpty
              XmAddProtocols             XmStringExtent
              XmAddWMProtocolCallback    XmStringFree
              XmAddWMProtocols           XmStringHeight
              XmConvertUnits             XmStringLength
              XmDeactivateProtocol       XmStringLineCount
              XmDeactivateWMProtocol     XmStringNConcat
              XmFontListAdd              XmStringNCopy
              XmFontListCreate           XmStringSeparatorCreate
              XmFontListFree             XmStringWidth
              XmRemoveProtocolCallback

    The WindowObj service has been removed from the AES/UE in Revision B.

    Other enhancements

    Motif 1.1 contains a number of enhancements that are not included in the
    AES/UE.  These enhancements include:

    +  New routines for creating simple menus.  Each type of menu supported
       by these routines has two simple creation functions, one with a fixed
       argument list and one with a variable-length argument list.  See the
       manual pages for routines whose names begin with XmCreateSimple and
       XmVaCreateSimple (for example, XmCreateSimplePopupMenu and XmVaCre-
       ateSimplePopupMenu ).

    +  A new widget, XmTextField, and associated convenience routines, for
       single-line text.

    +  A new routine, XmProcessTraversal, to set keyboard focus.

    +  New routines for getting and setting a routine to calculate default
       colors.

    +  A new routine for finding the widget that has the destination cursor.

    +  New routines for traversing a font list.

    +  Virtual keysyms in many translation tables that can be bound at run-
       time to user- or vendor-specific keysyms.

    +  Enhancements to the User Interface Language (UIL), including the fol-
       lowing:

       -  allowance of forward references for all UIL-named elements

       -  a provision for names for all objects

       -  SINGLE_FLOAT and RGB data types

       -  KEYSYM function

       -  support for enumeration values for resources (UIL and WML)

       -  use of $LANG to determine base character set

       -  support of toolkit object names for gadgets


    The following new manual pages exist in Motif 1.1 for features not
    included in the AES/UE:

        XmCreateSimpleCheckBox            XmTextFieldGetMaxLength
        XmCreateSimpleMenuBar             XmTextFieldGetSelection
        XmCreateSimpleOptionMenu          XmTextFieldGetSelectionPosition
        XmCreateSimplePopupMenu           XmTextFieldGetString
        XmCreateSimplePulldownMenu        XmTextFieldInsert
        XmCreateSimpleRadioBox            XmTextFieldPaste
        XmCreateTextField                 XmTextFieldPosToXY
        XmFontListCopy                    XmTextFieldRemove


        XmFontListFreeFontContext         XmTextFieldReplace
        XmFontListGetNextFont             XmTextFieldSetAddMode
        XmFontListInitFontContext         XmTextFieldSetEditable
        XmGetColorCalculation             XmTextFieldSetHighlight
        XmGetDestination                  XmTextFieldSetInsertionPosition
        XmResolveAllPartOffsets           XmTextFieldSetMaxLength
        XmSetColorCalculation             XmTextFieldSetSelection
        XmSetFontUnits                    XmTextFieldSetString
        XmTextField                       XmTextFieldShowPosition
        XmTextFieldClearSelection         XmTextFieldXYToPos
        XmTextFieldCopy                   XmVaCreateSimpleCheckBox
        XmTextFieldCut                    XmVaCreateSimpleMenuBar
        XmTextFieldGetBaseline            XmVaCreateSimpleOptionMenu
        XmTextFieldGetEditable            XmVaCreateSimplePopupMenu
        XmTextFieldGetInsertionPosition
        XmTextFieldGetLastPosition        XmVaCreateSimpleRadioBox


    Changes to #Include files

    The AtomMgr.h, Protocols.h, ProtocolsP.h, and MwmUtil.h #include files
    have been moved from the /usr/include/X11 directory to the
    /usr/include/Xm directory.  Pointer files to the /Xm directory remain in
    the /X11 directory for backward compatibility through Motif 1.1.  The in-
    stallation procedure removes these old files from the /usr/include/X11
    directory and replaces them with links to these new files in the
    /usr/include/Xm directory for backward compatibility with Motif 1.0.

    The Motif-specific information has been removed from the Vendor.h and
    VendorP.h #include files in the /lib/Xt directory; it has been moved to
    the files Vendor.c and VendorE.h in the /lib/Xm directory.

    OSF/Motif and the Xt intrinsics

    Motif 1.1 uses Version 11, Release 4 of the X Window System, including
    the X11R4 X Toolkit Intrinsics.  This section lists some implications of
    this change for application programs.

    +  Values of type Position and Dimension are now 16-bit quantities.

    +  Applications should use the X11R4 Xt programming interface, as
       described in Appendix C, ``Conversion Notes,'' in the X Toolkit
       Intrinsics - C Language Interface guide.  In particular, applications
       should use XtAppInitialize, XtAppCreateShell, and XtAppMainLoop
       instead of XtInitialize, XtCreateApplicationShell, and XtMainLoop.

    +  Whenever a widget grabs the keyboard, it should use the Xt grabbing
       functions instead of the Xlib functions, because Xt maintains internal
       state indicating whether or not the keyboard is grabbed.  Applications
       that do not use the Xt grabbing functions are not guaranteed to work
       in future versions of OSF/Motif.

    +  Use of some intrinsics functions by applications may conflict with
       internal use of those functions by Motif 1.1.  In such cases Motif
       provides equivalent functions.  In particular, applications should
       avoid using the following functions:

       -  XtSetKeyboardFocus might break Motif keyboard traversal.  An appli-
          cation should use XmProcessTraversal to set keyboard focus.

       -  XtRemoveAllCallbacks, called from an application, removes all call-
          backs from a widget, including those added internally by Motif
          code.  An application should use XtRemoveCallback or XtRemoveCall-
          backs to remove particular callbacks.


    +  Applications should use appropriate Xt routines for managing, realiz-
       ing, and mapping children.  Managing a widget implies that geometry is
       totally recomputed.  Unmanaging and managing a widget simply to make
       it appear or disappear without geometry changes is inappropriate.  An
       application should use XtMap and XtUnmap for this purpose.


    Compound string modifications

    The internal implementation of the XmString data type has changed.
    Applications that used the internals of the opaque data structure are
    likely to break.

    Motif 1.1 has introduced a number of extensions with the intent of pro-
    viding backward compatibility for the next internationalization release.
    In particular:

    +  XmStringCreate is included in Revision B of the AES/UE as a
       temporary-use element and might be changed or removed from the AES/UE
       in future revisions.

    +  A new routine, XmStringCreateSimple, creates a compound string, deriv-
       ing the character set from the language environment of a widget passed
       as an argument.  Applications should use this routine instead of
       XmStringCreate to create a compound string using the ``default'' char-
       acter set.

    +  Some applications have been using the character set identifier in a
       compound string as a specific tag meaningful only to the application,
       not as a real character set identifier.  Such applications are likely
       to be broken in future releases.


    Internal modifications

    Changes have been made to the internal Gadget caching code and the clip-
    board code.  These internal changes do not affect the application pro-
    gramming interface.

    ANSI C compliance

    Motif 1.1 is compliant with ANSI C.  All external functions are proto-
    typed.

    Resource name modifications

    The names of three resources have been changed because of conflicts with
    resource names in other widgets.  In XmPanedWindow, XmNminimum has been
    renamed to XmNpaneMinimum, and XmNmaximum has been renamed to XmNpaneMax-
    imum.  In XmText, XmNtopPosition has been renamed to XmNtopCharacter.

    The mwm selectColor icon box resource has been renamed to troughColor.

    Default font list modifications

    The value of the XmNfontList resource now obtains its default dynami-
    cally.  The default value is obtained by looking up the parent hierarchy
    of the widget for an ancestor that is a subclass of the XmBulletinBoard,
    VendorShell, or XmMenuShell widget class.  If such an ancestor is found,
    the font list is initialized to the appropriate default font list of the
    ancestor widget ( XmNdefaultFontList for VendorShell and XmMenuShell;
    XmNbuttonFontList, XmNlabelFontList, or XmNtextFontList for XmBulletin-
    Board).  The three XmBulletinBoard font list resources obtain their
    defaults in the same way.

    Potential XmBulletinBoard modification

    The XmNtextTranslations resource in XmBulletinBoard exists in Motif 1.1
    but may be removed in a future release. BulletinBoard no longer overrides
    the KReturn translation for multi-line text.

    Help translation additions

    Every widget has a translation for KHelp.  The Help action calls the
    XmNhelpCallback callbacks if they exist.  If they do not exist, the Help
    action looks up the parent hierarchy until it finds an XmNhelpCallback
    and then calls it.  Applications no longer need provide translation table
    entries for <F1>.

    Traversal modifications

    Traversal for many controls is enabled by default in this release; the
    XmNtraversalOn resource defaults to True for these widgets.  The default
    value of XmNtraversalOn is False for the following widgets and gadgets:

                XmLabel                  XmSeparator
                XmLabelGadget            XmSeparatorGadget
                XmScrollBar

    The default is True for all other widgets (except that it is forced to
    False in an empty List).  This is a change to the following widgets and
    gadgets:

                XmArrowButton            XmPushButtonGadget
                XmArrowButtonGadget      XmToggleButton
                XmCascadeButton          XmToggleButtonGadget
                XmCascadeButtonGadget    XmList
                XmDrawnButton            XmText
                XmPushButton

    This change can affect the layout of applications, as many controls are
    larger to accommodate the traversal highlight.  In most cases the Motif
    1.0 appearance can be restored by setting the following resources:

       *traversalOn:           false
       *highlightOnEnter:      false
       *highlightThickness:    0


    Changes to XmNmnemonic resources

    The type of the XmNmnemonic resources in XmLabel, XmLabelGadget, and
    XmRowColumn has been changed to KeySym.  The size of this type is dif-
    ferent from that of the Motif 1.0 type, char, for these resources.

    Mnemonic underlining

    To be underlined when a mnemonic is used, a character in a label string
    must match the mnemonic exactly.  However, to activate the mnemonic, the
    user can press either the shifted or the unshifted key that corresponds
    to the mnemonic.

    Removal of MrmFetchInterfaceModule

    The MrmFetchInterfaceModule routine has been removed in Motif 1.1.

    The widget Meta-Language facility

    A new widget meta-language (WML) facility generates components of the
    user interface language (UIL) compiler.  The file
    /usr/lib/X11/tools/wml/motif.wml is a specification based on lex and yacc
    and is used to describe toolkit classes and resources.  The file is a
    hierarchical description of toolkit widgets, including their inheritance
    relations.  This information is used in generating the UIL compiler and
    is included for reference only.

    Miscellaneous tips


    +  If apps were not using Application Contexts, they should be.

    +  The form widget geometry manager has changed, it is much less forgiv-
       ing of circular references, and constraints.

    +  Resource name change for scale widget processing directions.

    +  The focus policy is totally different, if apps use XmGrabFocus they
       are not going to port clean, use XmProcessTraversal.

    +  Rules for what may be put into a RadioBox have changed, use ToggleBut-
       tonGadgets, not ToggleButtons.


 OSF/Motif 1.1.2

    The following list descibes some of the major changes and bug fixes in
    Motif 1.1.2:

    +  corrected code to allow specification of a bitmap filename for the
       XtNiconPixmap resource of the WmShellWidgetClass

    +  split iconPlacementMargin resource into two separate (horizontal and
       vertical margins) resources

    +  implemented window resizing relative to the current mouse position

    +  added ability to lock focus on a window in pointer mode

    +  implemented horizontal capability to Paned windows

    +  added function to return owner of the last item placed on a clipboard

    +  modified widgets to check validity of resources passed to them

    +  revised code to display  margins properly when XmNscrolledWindowMar-
       ginWidth and XmNscrolledWindowMarginHeight are set after widget crea-
       tion

    +  corrected memory leak created when dialog shells are destroyed

    +  reformatted UIL error and warning messages

    +  implemented ability to place a non-integer value above slider on a
       scale

    +  revised code so double clicking correctly sets the selectedItemCount
       resource in a list

    +  modified shadowing of rectangular border of XmArrowButton and added
       appropriate resource

    +  eliminated warning when setting ResInd via resource file

    +  revised code to allow XmUnhighlightBorder and XmHighlightBorder to
       properly set/reset highlight flag

    +  corrected Drawing Area to draw shadowThickness properly

    +  revised code so menus can always be traversed from a menuBar

    +  revised RowColumn widget to work properly with ArrowButtons

    +  corrected RowColumn to modify its children's border instead of adding
       entryBorder to its children's widget's window

    +  modified code so toggle button widgets call proper callback when a
       click is executed in its border

    +  corrected RowColumn geometry management to allow for a margin width
       setting of 1

    +  revised XmNentryCallback to re-vector activate callback for Arrow,
       Drawn, Toggle and Push buttons

    +  revised Arrow to return event in callback structure when activated by
       keyboard

    +  modified Widgets to pass a widget pointer as first parameter of
       XtCallCallbackList

    +  improved help callbacks in Message, Selection, File, Frame, ScrollBar,
       and Toggle management

    +  revised code to allow translation for Btn 3 to execute popup

    +  revised XtGetValues to give correct XmNscaleMultiple values

    +  corrected focus problems when a non-TabGroup control is activated

    +  eliminated segment faults and X errors while in multi-edit mode in
       text widgets

    +  modified Rowcolumn widget so RadioBoxes with XmNpacking tight and
       XmNnumColumns work correctly

    +  improved widgets to copy Mnemonic CharSet(and others) for user when
       GetValue is called

    +  improved text widget to keep value of the vertical scroll bar when
       changed from singlelineedit to multiline

    +  modified BorderWidth so it can now be set correctly using XtSetValues

    +  corrected text widget to give proper callbacks when executing a sec-
       ondary select

    +  revised text widget to display text with singlelineedit and set size

    +  corrected XmNlistVisibleItemCount to work in a command widget

    +  modified MenuBar to provide correct number of callbacks upon mouse
       activation

    +  changed XmCvtXmStringToCT declaration to return correct type

    +  corrected prototyping for several XmCreate functions

    +  corrected Bulletinboard code so ``default button'' indicator does not
       move dynamically

    +  modified code so ToggleButton Gadget from a pulldown from a cascade in
       a menubar produces proper callbacks

    +  corrected default value of XmNmessageString in a MessageBox

    +  revised MenuBar to handle arming of cascades properly

    +  corrected default value of highlightThickness for Drawn Button

    +  corrected XmProcessTraversal to work when setting a MenuBar

    +  modified PushButton to retain correct highlightThickness value

    +  prevented access to TraversalOn resource in a separator or gadget

    +  revised text widget to use XmInternAtom instead of XInternAtom

    +  changed resources that cannot have a value of 0 to unsigned ints

    +  corrected Text widget so tabs work properly

    +  revised List code to prevent core dumps when deleting items

    +  improved RowColumn so Option Menu execution results in correct
       arming/disarming callbacks

    +  revised RowColumn Option Menu code to use shadowThickness when decid-
       ing size of option button

    +  revised MRM to register XmTextField and XmCreateWorkArea classes

    +  modified XmProcessTraversal to work correctly when a widget with focus
       is destroyed

    +  corrected DialogShell X and Y values after ErrorDialog creation

    +  modified SetValues to work with shadowThickness resources for Buttons

    +  revised code so ScrolledW, Frame, and RowColumn managers work
       correctly with Dialog Shell children

    +  changed representation type of XmRDimension to XmRHorizontalDimension
       for DrawnB, Sash, and ScrolledW

    +  modified code to enable KActivate translation in all lists to work
       consistently

    +  revised SetValues to handle XmNorientation in a Scale Widget

    +  corrected RowColumn widget's numColumns resource from an OptionMenu to
       show correct value

    +  corrected Scale's ability so it is insensitive to input using XtSet-
       Value after creation

    +  changed behavior of KActivate to result in arm, activate, and disarm
       callbacks

    +  adjusted RowColumn code to adjust radioBehavior and packing properly

    +  modified CascadeButton widget in Menubar to arm proper callbacks with
       submenus

    +  corrected RowColumn OptionMenu shadowThickness resource to be 0 at
       Initialize

    +  revised CascadeButton in Option Menu to use its own shadowThickness
       instead of shadowThickness of RowColumn

    +  removed memory leak in GetValuesHook of Text widget

    +  corrected Scale Widget so XmNShadowThickness may be initialized to
       zero

    +  revised PopupMenu to use correct X and Y borderWidth values

    +  allowed OptionMenu's CascadeButtonGadget to use own shadowThickness
       resource to draw its shadow; previously, shadowThickness of parent was
       used

    +  eliminated XmWarnings when creating CascadeBG with/without submenu
       under pulldown in OptionMenu

    +  revised code to ensure proper setting of scaleMultiple value in Scale
       widget

    +  enabled Text widget to refresh when backspacing in SINGLE_LINE_EDIT
       mode

    +  eliminated unpredictable behavior when adding scrollbars to a scrolled
       window

    +  disallowed having Toggle Buttons as children of a Pulldown in an
       Option Menu

    +  improved DrawingArea to issue proper inputCallbacks on keyboard and
       mouse input

    +  corrected ScrolledText to work properly when ScrollVertical is set to
       false and resizeHeight is set to True

    +  revised Scale to accept changes to XmNscaleMultiple after change to
       XmNminimum by SetValues

    +  modified PushBG to eliminate memory leak

    +  revised form to handle topOffsets correctly on a Form child whose
       topOffset has not been explicitly set

    +  revised Separator Gadget to use proper highlightThickness

    +  changed definition of arrow keys for vertical Menubars

    +  enabled XtSetValues to work properly with a non-realized ToggleButton

    +  revised RowColumn to call proper callbacks when posting an OptionMenu
       and traversing to a Pushbutton followed by activating the keyboard

    +  modified XmList to handle callbacks properly from its scrollbars after
       a destroy

    +  corrected File Selection Dialogs to work correctly when XmNnavigation-
       Type is changed to EXCLUSIVE_TAB_GROUP via SetValues()

    +  eliminated 'sliderSize < 1' warnings and protocol errors when Scrol-
       ledList and ScrolledText are resized such that the scrollbar width
       equals zero

    +  modified code to allow the XmNisHomogeneous resource to be used accu-
       rately when creating an OptionMenu

    +  corrected PushButtons to convert to unit Type when doing GetValues on
       highlightThickness

    +  corrected OptionButton size in option menu which resides in a shell
       that uses a defaultFontList

    +  modified OptionMenu to relieve clipped OptionButtons

    +  corrected redisplay of MessageBox when it unmanages parts of its
       widget

    +  corrected wordwrap in XmCreateScrolledText

    +  eliminated loss of client after call to XSetIconName for a top level
       window that is not minimized when useIconBox is not true

    +  modified code to allow creation of a button with XmStringCreateSimple
       after creation of an OptionMenu whose labelString calls XmStringCreate
       using XmSTRING_DEFAULT_CHARSET

    +  revised code to allow application using XmAddTabGroup() to set their
       tab groups correctly

    +  installed warnings if attempts are made to place Toggle Buttons in
       OptionMenus

    +  modified code so XtDestroy() inside Activate callback of buttons suc-
       cessfully works with keyboard activation

    +  modified code to handle Btn3 activation correctly when traversing in a
       popped-up menu

    +  corrected behavior when calling XmRemoveTabGroup on current tab group

    +  corrected highlighting of Popup menus


 OSF/Motif 1.1.3

    The following are descriptions of changes we have provided for the Motif
    1.1.3 release:

    +  Corrected List to check for its parent's being a subclass of a Scrol-
       ledWindow instead of a ScrolledWindow.

    +  Revised MessageBox to align messageString with pushbuttons.

    +  Modified code to base size of togglebutton on largest dimensions of
       all pixmaps. XmToggleButton will now work correctly if XmNlabelPixmap
       and XmNselectPixmap are different sizes.

    +  Revised UrmCreateWidgetInstance to pass proper callback struct to
       creation callbacks.

    +  Removed use of XmNshadow resource in DrawingArea.

    +  Modified XM functions with no parameters to be declared as voids
       according to ANSI C.

    +  Revised ScrollBar's SetValues routine to properly handle XmNpro-
       cessingDirection and XmNorientation combinations.

    +  Modified FileSB to disallow selection of an empty file area of a
       Selection Dialog.

    +  Corrected ScrolledW to initialize the InInit field in the swindow
       structure properly, which will avoid unpredictable behavior when add-
       ing scrollbars to the scrolled window.

    +  Modified TextStrSrc Replace routine to avoid possible core dump when
       copying tvcb.text->ptr to block->ptr. Routine now checks their lengths
       and acts accordingly.

    +  Prevented NULL dereference in Traversal's _XmEnterGadget and
       _XmLeaveGadget.

    +  Revised Dialog Shells created by XmCreate[...]Dialog to acknowledge
       SetValue of mappedWhenManaged: false.

    +  Corrected Paned Window code to check for managed flag before resizing
       children in ChangeManaged.

    +  Revised ``No ext to pop'' error message to a message more meaningful.
    +  Modified Form to allow geometry requests from children if the allowed
       form size is not the desired one but a larger one.

    +  In some cases the form widget will not correctly size and position
       widgets. Closed because the problem was caused by operator error.

    +  Modified List to correctly calculate visibleItemCount using the widget
       height.

    +  Initialized block.format in XmText to prevent bogus call_data values
       from modifyVerifyCallback caused by setting the block.format to a bad
       XmTextFormat value.

    +  Eliminated core dumps from ResConvert caused by using incorrect system
       calls which copy strings into strings 1 byte too small.

    +  Revised OptionMenu to show correct value when setting subMenuId at
       SetValues rather than Initialize.

    +  Modified Toggle Button height to match Pushbutton height of the same
       font in a menu.

    +  Reinitialized cursor position and horizontal offset resources in
       XmTextFieldSetString when the new string is placed into the text
       field.  Previously these resources were not reinitialized resulting in
       improper echoing of the last inserted character.

    +  Eliminated RowColumn failures caused when doing several SetValues on
       the subMenuId of an option menu.

    +  Defined XmIsDrawingArea in DrawingA.h.

    +  Improved memory allocation by XChangeProp during a clipboard cut.

    +  Prevented segmentation fault in VertClosest() in NavigMap by changing
       navigation to use dynamic storage instead of a static array (256).

    +  Modified Scrolled Text to prevent scrolling one line on each exposure
       event.

    +  Improved fill mode procedure for Toggle Buttons on monochrome screens.

    +  Revised UIL to allow popup menus as controls of primitive widgets.

    +  Eliminated memory leak in XmNavigate.

    +  Modified XtRemoveGrab to eliminate warning messages when a modal form
       dialog is deleted.

    +  Improved Sash to use XUniqueContext to manage sash cursors on multiple
       displays in function Realize.

    +  Eliminated possible core dump in List caused by a call to DrawList()
       with a negative top_position value, resulting in a negative index into
       an array.

    +  Revised code to eliminate core dump when changing background on a Text
       Field with focus.

    +  Eliminated a memory leak in TextField, enabling ModifyVerify to work
       properly.

    +  Allowed Manager to accept an unspecified pixmap.

    +  Modified code enabling WM_SAVE_YOURSELF property in WM_PROTOCOLS atom
       to be used properly. The user's protocol callback was never entered.

    +  Modified Text code to cut and paste proper length. Text was cutting
       one character too much.

    +  Corrected code to reset visibleItemCount if there are no items in the
       list. List will now display all items when size is forced larger than
       visibleItemCount.

    +  Revised RowColumn code to properly initialize boolean data.

    +  Modified NavigFieldGet macro to replace NULL with zero.

    +  Enabled Text widgets to resize back to a single row when necessary.

    +  Eliminated possible core dump by a Gadget child of DrawingArea in
       override shell due to XmGetFocusData returning NULL.

    +  Revised DrawingArea to correctly handle XmRESIZE_GROW.

    +  Prevented MRM problems resulting from a hash function returning a
       negative value to use as an index into a hash table.

    +  Modified List to ensure that XmNselectedItemCount specifies correct
       number of selected items.

    +  Corrected RowColumn/OptionMenu/Desktop destroy code. Xt will now prop-
       erly handle synchronous destroys.

    +  Corrected 3D appearance of PushButton disarmed by call to XtCallAc-
       tionProc.

    +  Added check for nonNULL w_return to MrmFetchWidgetOveride, allowing
       MRM to return MrmFAILURE when fetching a widget already fetched.

    +  Modifed Text to enable XtSetValues of XmNwordWrap to properly update
       widget state.

    +  Corrected code to enable XtPopdown to withdraw a window iconified with
       MWM.

    +  Eliminated potential Modal Dialog core dump after creating and delet-
       ing top level shell.

    +  Revised convenience functions for dialogs and menus to pass user argu-
       ments to shells properly.

    +  Corrected File Selection Box to handle selection of empty directories,
       whose names previously disappeared.

    +  Revised code to enable Toggle button to completely clear when disarmed
       but not activated.

    +  Corrected Visual allowing default foreground in non-root colormaps to
       always show proper color.

    +  Revised code to prevent a scrolledList from disappearing after a
       resize to zero.

    +  Modified _XmTextFieldImplementNewValue to enable TextF to redraw
       anchor cursor properly when new string is set.

    +  Revised computation of TextField geometry when XmNresizeWidth is set
       to True.

    +  Modified procedures in Text to prevent time consuming disk searches
       after setting new XmNforeground.

    +  Corrected code to prevent DrawingArea from ignoring the size the user
       has set.

    +  Corrected code to allow TextF to process input correctly when it has
       grown to the maximum size and resizeWidth is set to true.

    +  Modified Arrow Button to display correct topShadowColor and bottomSha-
       dowColor.

    +  Modified XmString to enable XmFontListAdd() to return proper fontList
       when a newly added fontList matches one in the cache.

    +  Modified code to allow user's XmNtranslation resource to work with
       ScrolledWindow's ClipWindow.

    +  Corrected problem of when a regular string contained multiple newline
       characters, the corresponding XmString contained one newline.

    +  Corrected scrolling in List when DefaultAction is NULL event.

    +  Revised File Selection Box dirSearchProc() code to update the direc-
       tory list properly.

    +  Modified ToggleButton to allow XmONE_OF_MANY resource with same
       topShadowColor, bottomShadowColor & selectColor to produce proper tog-
       gling effect.

    +  Revised RowColumn to enable setting subMenuId and menuHistory simul-
       taneously in an option menu.

    +  Revised Labels code to allow Toggle buttons which have different sized
       label and select pixmaps to appear clean. Moved definiton of
       XmCR_PROTOCOLS to Xm.h from Protocols.c.

    +  Corrected Vendor Shell to be able to process correctly when a client
       registers substructure notify events on a shell.

    +  Revised code to enable StringToShellUnitType converter to handle
       ``pixels.''

    +  Modified ListKdbDeSelectAll to call the appropriate selection callback
       when it is used in an XmEXTENDED_SELECT type list in Add Mode.

    +  Modified List to remove BrowseScroll() to prevent possible List core
       dump.

    +  Eliminated possible core dump when specifying a destroyCallback on a
       MessageDialog.

    +  WORK AROUND:

    Protocol callbacks pass back Protocol widget instead of Shell widget.

    Problem Description:  In XmAddProtocolCallback, XtAddcallback is called
    passing the protocol widget (i.e. the callback is part of the protocol
    widget).  ProtocolHandler calls XtCallCallbackList passing the shell
    widget, expecting that the shell widget will be passed to the callback.
    However, R4 Intrinsics pass the widget used to add the callback, not the
    widget passed to XtCallCallbackList.

    This is really a bug in the R4 Intrinsics.

    Workarounds:

    1.  Since the Shell widget is the parent of the protocol widget, to get
        the Shell widget, just do a XtParent() of the protocol widget that is
        passed back.

    2.  Pass the Shell widget as the 'closure' argument to XmAddProtocolCall-
        back().


 OSF/Motif 1.1.4

    The following are descriptions of changes we have provided for the Motif
    1.1.4 release:

    +  Revised code to enable _MOTIF_WM_INFO property field to return proper
       value when queried.

    +  Corrected code to shrink button size when acceleratorText resource is
       set to NULL.

    +  Modified code to allow MenuShells created via menu convenience func-
       tions to adopt the defaultFontList of the AppShell if one is set.

    +  Enabled labels to be drawn correctly after expose events.

    +  Allowed focus to transfer to proper windows after exiting from a win-
       dow or application in explicit focus mode.

    +  Corrected TextFields to handle forward-word actions properly.

    +  Dialog box windows now show proper decorations.

    +  Eliminated Xt errors when Popups are deleted.

    +  Horizontal scrollbars now accurately resize when ScrolledText is
       edited.

    +  Modified code according to ICCCM standards. Text widgets now return
       property type NULL after a successfully completed DELETE or
       INSERT_SELECTION request on a selection.

    +  Eliminated processing problems when a Cascade Button is the only child
       of a BullentinBoard.

    +  Corrected code to enable sash to display properly regardless of
       paneMax and paneMin values.

    +  Modified XmList code to prevent problems when deleting and replacing
       items.

    +  Modified UIL compiler to accept C-style comments.

    +  Corrected visual initialization when specifying XmNmenuHistory at
       OptionMenu initialization time.

    +  Revised code enabling ScrolledText widget within a MainWindow to
       scroll horizontally correctly.

    +  Modified code to allow Dialog shells to iconify properly when managed
       prior to being realized.

    +  Pixmaps now appear centered within toggle buttons.

    +  Modified code to enable ScrolledText scrollbars to properly track the
       cursor position.

    +  Revised TextF.c to include Xm/AtomMgr.h instead of X11/AtomMgr.h.

    +  Improved UIL to accept tokens longer than 128 characters and issue
       warnings if tokens are longer than 132 characters.

    +  Revised code to correct problems when destroying one of two cascade
       submenus of a pulldown menu.

    +  Corrected code to enable arrow keys in multi-line text widgets to
       select text correctly.

    +  Modified UIL tests to handle bitmap data properly.

    +  Eliminated bus errors caused by XtDestroyWidget() being called from a
       MainWindow.

    +  Prevented RowColumn widget core dumps when its children define illegal
       characters as their mnemonic characters.

    +  Revised RowColumn to properly use XmNmenuPost resource.

    +  Corrected code to allow several popup menus to be created under the
       same parent without affecting Button bindings.

    +  Modified code to eliminate retained underlining after a quick transfer
       when text source is shared.

    +  Prevented access violations when destroying a RowColumn which contains
       OptionMenu label gadgets made via XmStringCreateLtoR.

    +  Modified Text scrolling behavior to properly handle motionVerify call-
       back events.

    +  Installed a defaultFontList for gadgets in an override shell.

    +  Corrected RowColumn to correctly resize its children.

    +  Eliminated crashes from _XmGetFocusData by expanding low bounds.

    +  Corrected action of <Alt> KQuickPaste in Text Fields.

    +  Revised RowColumn to properly handle toggling of pulldowns by using an
       accelerator.

    +  Removed memory leak in XmTextReplace.

    +  Removed various memory leaks in XmText and XmTextField.

    +  Eliminated possible UIL compiler Error messages and terminations due
       to inability to perform calloc in UilSarVal.c.

    +  Modified code to eliminate possible server errors due to conversion of
       invalid fonts.

    +  Resolved various problems with Simple functions, particularly with
       resource converters.

    +  Modified PanedWindow to allow sash default traversal to be ON.

    +  Modified XmTextSetString to display correct data after replacing con-
       tents of a scrolled text.

    +  Corrected XmStringNConcat behavior to agree with documentation.

    +  Modified RowColumn to accept rapid clicks for posting optionmenu.

    +  Prevented users from interactively resizing windows if clientFunctions
       prohibit interactivePlacement.

    +  Modified code to prevent applications from hanging which use a full
       application modal dialog box.

    +  Revised code to allow Scale Widgets to appear in a RowColumn when the
       topShell is realized before the RowColumn.

    +  Prevented fatal Xt toolkit errors generated when creating a Label-
       Gadget as a child of a ScrolledWindow.

    +  Corrected cursor positioning when XmText generates a motionVerify
       callback on a delete-to-end-of-line action.

    +  Prevented crashes when UIL compiler processes uil programs which con-
       tain bugs.

    +  Modified positioning of pulldown menus created inside a dialog shell.

    +  Modified RowColumn to correctly position child when XmNentryBorder is
       set to a non-zero value.

    +  Corrected sizing problems when packing is changed from PACK_COLUMN to
       PACK_TIGHT in a RowColumn with several children and two columns.

    +  Eliminated X errors generated when setting XmNshowAsDefault resource
       in XmPushButton.

    +  Prevented RowColumn from using numColumns resource when XmNpacking is
       set to XmPACK_TIGHT.

    +  Revised XmTrackingLocate to function properly when button is pressed
       on a label.

    +  Corrected parsing by Uil function xbitmapfile.

    +  Revised ScrolledText and ScrolledList to properly handle NULL widget
       names.

    +  Corrected focus problems with children of a RowColumn.

    +  Prevented BBoard seg faults after XmGetDefaultFontList is called with
       fontListType set to NULL.

    +  Modified XmProcessTraversal to behave properly when called in an empty
       ScrolledWindow.

    +  Revised scrollList code to allow multiple slider changes.

    +  Modified geometry management in BulletinBoards to retain margins after
       realizing parent AppShell.


 OSF/Motif 1.2

    This section describes new functionality and enhancements that affect the
    Motif Toolkit as a whole.

    +  The following header files were in Release 1.1 of Motif, but are now
       obsolete in Release 1.2:
       +  ExtObject.h
       +  Traversal.h
       +  VaSimple.h
       +  VendorE.h
       +  VendorEP.h

    +  A new public header file, XmAll.h, has been added to Motif.  This file
       just includes all the documented header files.

    +  X11R5 uses the concept of an input method (IM), which provides a layer
       of mapping between the keys typed in by users and the corresponding
       characters passed to an application.  The Motif Toolkit has been
       enhanced to support transparent connection to an input method for
       those languages that require an input method.  The VendorShell widget
       has been modified to support the geometry management of an Off-the-
       Spot input method.

    +  Several changes have been made to the Text and the TextField widgets,
       including interfaces that support both fixed-width wide characters
       (wchar_t) and variable-width multibyte characters (char *).

    +  The Compound String routines have been modified to handle locale-
       encoded strings and to integrate the X11 R5 fontset capability.

    +  An XmDisplay object has been added to support per-display data and
       resources.  An XmScreen object has been added to support per-screen
       data and resources.

    +  The Motif Toolkit now supports the drag and drop metaphor for data
       interchange. Refer to the man pages for information on the drag and
       drop interface.

    +  Motif now supports TearOff Menus, the user can retain menus on the
       display for subsequent selections. Each tearable menupane has a tear-
       off button.  When the mouse drag button is pressed on the tearoff but-
       ton, the pane tears off and can be dragged and then placed by releas-
       ing the mouse drag button.  The window manager surrounds the tearoff
       menupane with a menu button and a title.

    +  In Revision 1.2, a title widget can be specified in a Frame widget.
       New constraint resources XmNchildType, XmNchildHorizontalAlignment,
       XmNchildHorizontalSpacing, and XmNchildVerticalAlignment have been
       added for specifying the position and alignment of the title in the
       Frame.

    +  A new resource, XmNaudibleWarning, has been added to the VendorShell
       widget to specify whether an audible cue should accompany a warning
       message.  Text widgets will determine the value for this resource from
       the value of XmNaudibleWarning.

    +  Users can specify default background color and thresholds for shadow
       calculation on a per screen basis with these 3 new resources on the
       XmScreen widget:
       +  XmNlightThreshold
       +  XmNdarkThreshold
       +  XmNforegroundThreshold

    +  A new function, XmChangeColor, changes the background and other colors
       for a specified widget.

    +  In Motif 1.2 it is possible to traverse via the keyboard to some widg-
       ets that did not support traversal in previous releases.  For example,
       inside a tab group, it is now possible to use the arrow keys to
       traverse to all control descendants that are not contained within a
       nested tab group and are eligible to receive focus, even if the con-
       trols are not direct children of the tab group.

    +  To support better interaction with keyboard traversal, Revision 1.2
       includes these new functions:
       +  XmGetFocusWidget
       +  XmGetTabGroup
       +  XmIsTraversable
       +  XmIsVisible
       +  XmGetVisibility

    +  The XmTrackingLocate function includes the following modifications:
       +  It fields all events, not just the button press.
       +  It returns on any keystroke or a button press.
       +  It can be called for non-sensitive widgets.

    +  A new function, XmTrackingEvent, has been added, which is just like
       XmTrackingLocate, except that it returns a pointer to the X event.

    +  Several new functions have been added for managing representation
       types, including:
       +  XmRepTypeRegister
       +  XmRepTypeAddReverse
       +  XmRepTypeValidValue
       +  XmRepTypeGetRegistered
       +  XmRepTypeGetId
       +  XmRepTypeGetNameList
       +  XmRepTypeGetRecord
       These functions would be useful for people who want to define new
       resource converters that use an enumerated set of values.

    +  Several corrections have been made to XmClipboard function parameters.
       These are binary compatible, but may cause warnings when recompiling a
       Motif application. Changes were (char) to XtPointer, int to long,
       (int) to (long). Functions affected are:
       +  XmClipboardCopy
       +  XmClipboardCopyByName
       +  XmClipboardInquireCount
       +  XmClipboardInquireFormat
       +  XmClipboardRegisterFormat
       +  XmClipboardRetrieve
       +  XmClipboardStartCopy
       +  XmClipboardWithdrawFormat

    +  XmCommandGetChild has now been corrected so that it accepts
       XmDIALOGWORKAREA as a value for the child argument.

    +  The XmNvisibleItemCount resource has been changed so that the default
       value is dynamic, based on the item count and the height.

    +  A new function, XmScrollVisible, scrolls an automatic scrolled window
       to make a partially or completely obscured widget visible.

    +  A new resource, XmNtraverseObscuredCallback, specifies a list of call-
       backs that are called when a traversal event is requested to a non-
       visible widget.  A new callback structure, XmTraverseObscuredCallback-
       Struct, has been added to support this callback.

    The following table lists functions new to Motif 1.2 and the manual page
    on which it discussed.

    ________________________________________________________________________________
    Function                             Manual Page
    ________________________________________________________________________________
    XmChangeColor                         XmChangeColor(Xm)
    XmCreateDragIcon                      XmCreateDragIcon(Xm)
    XmCreateTemplateDialog                XmCreateTemplateDialog(Xm)
    XmDragCancel                          XmDragCancel(Xm)
    XmDragStart                           XmDragStart(Xm)
    XmDropSiteConfigureStackingOrder      XmDropSiteConfigureStackingOrder(Xm)
    XmDropSiteEndUpdate                   XmDropSiteEndUpdate(Xm)
    XmDropSiteQueryStackingOrder          XmDropSiteQueryStackingOrder(Xm)
    XmDropSiteRegister                    XmDropSiteRegister(Xm)
    XmDropSiteRetrieve                    XmDropSiteRetrieve(Xm)
    XmDropSiteStartUpdate                 XmDropSiteStartUpdate(Xm)
    XmDropSiteUnregister                  XmDropSiteUnregister(Xm)
    XmDropSiteUpdate                      XmDropSiteUpdate(Xm)
    XmDropTransferAdd                     XmDropTransferAdd(Xm)
    XmDropTransferStart                   XmDropTransferStart(Xm)
    XmFontListAppendEntry                 XmFontListAppendEntry(Xm)
    XmFontListEntryCreate                 XmFontListEntryCreate(Xm)
    XmFontListEntryFree                   XmFontListEntryFree(Xm)
    XmFontListEntryGetFont                XmFontListEntryGetFont(Xm)


    XmFontListEntryGetTag                 XmFontListEntryGetTag(Xm)
    XmFontListEntryLoad                   XmFontListEntryLoad(Xm)
    XmFontListNextEntry                   XmFontListNextEntry(Xm)
    XmFontListRemoveEntry                 XmFontListRemoveEntry(Xm)
    XmGetDragContext                      XmGetDragContext(Xm)
    XmGetFocusWidget                      XmGetFocusWidget(Xm)
    XmGetPixmapByDepth                    XmGetPixmapByDepth(Xm)
    XmGetTabGroup                         XmGetTabGroup(Xm)
    XmGetTearOffControl                   XmGetTearOffControl(Xm)
    XmGetVisibility                       XmGetVisibility(Xm)
    XmGetXmDisplay                        XmGetXmDisplay(Xm)
    XmGetXmScreen                         XmGetXmScreen(Xm)
    XmIsTraversable                       XmIsTraversable(Xm)
    XmListAddItemsUnselected              XmListAddItemsUnselected(Xm)
    XmListDeletePositions                 XmListDeletePositions(Xm)
    XmListGetKbdItemPos                   XmListGetKbdItemPos(Xm)
    XmListPosSelected                     XmListPosSelected(Xm)
    XmListPosToBounds                     XmListPosToBounds(Xm)
    XmListReplaceItemsPosUnselected       XmListReplaceItemsPosUnselected(Xm)
    XmListReplaceItemsUnselected          XmListReplaceItemsUnselected(Xm)
    XmListReplacePositions                XmListReplacePositions(Xm)
    XmListSetKbdItemPos                   XmListSetKbdItemPos(Xm)
    XmListUpdateSelectedList              XmListUpdateSelectedList(Xm)
    XmListYToPos                          XmListYToPos(Xm)
    XmMapSegmentEncoding                  XmMapSegmentEncoding(Xm)
    XmRegisterSegmentEncoding             XmRegisterSegmentEncoding(Xm)


    XmRepTypeAddReverse                   XmRepTypeAddReverse(Xm)
    XmRepTypeGetId                        XmRepTypeGetId(Xm)
    XmRepTypeGetNameList                  XmRepTypeGetNameList(Xm)
    XmRepTypeGetRecord                    XmRepTypeGetRecord(Xm)
    XmRepTypeGetRegistered                XmRepTypeGetRegistered(Xm)
    XmRepTypeInstallTearOffModelConverter XmRepTypeInstallTearOffModelConverter(Xm)
    XmRepTypeRegister                     XmRepTypeRegister(Xm)
    XmRepTypeValidValue                   XmRepTypeValidValue(Xm)
    XmScrollVisible                       XmScrollVisible(Xm)
    XmStringCreateLocalized               XmStringCreateLocalized(Xm)
    XmTargetsAreCompatible                XmTargetsAreCompatible(Xm)
    XmTextDisableRedisplay                XmTextDisableRedisplay(Xm)
    XmTextEnableRedisplay                 XmTextEnableRedisplay(Xm)
    XmTextFieldGetSelectionWcs            XmTextFieldGetSelectionWcs(Xm)
    XmTextFieldGetStringWcs               XmTextFieldGetStringWcs(Xm)
    XmTextFieldGetSubstring               XmTextFieldGetSubstring(Xm)
    XmTextFieldGetSubstringWcs            XmTextFieldGetSubstringWcs(Xm)
    XmTextFieldInsertWcs                  XmTextFieldInsertWcs(Xm)
    XmTextFieldReplaceWcs                 XmTextFieldReplaceWcs(Xm)
    XmTextFieldSetStringWcs               XmTextFieldSetStringWcs(Xm)
    XmTextFindString                      XmTextFindString(Xm)
    XmTextFindStringWcs                   XmTextFindStringWcs(Xm)
    XmTextGetSelectionWcs                 XmTextGetSelectionWcs(Xm)
    XmTextGetStringWcs                    XmTextGetStringWcs(Xm)
    XmTextGetSubstring                    XmTextGetSubstring(Xm)
    XmTextGetSubstringWcs                 XmTextGetSubstringWcs(Xm)
    XmTextInsertWcs                       XmTextInsertWcs(Xm)
    XmTextReplaceWcs                      XmTextReplaceWcs(Xm)
    XmTextSetStringWcs                    XmTextSetStringWcs(Xm)
    XmTrackingEvent                       XmTrackingEvent(Xm)
    XmTranslateKey                        XmTranslateKey(Xm)
    XmWidgetGetBaselines                  XmWidgetGetBaselines(Xm)
    XmWidgetGetDisplayRect                XmWidgetGetDisplayRect(Xm)


 See also

    Xlib - C Language X Interface


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