The Purpose of This Release

        This release contains full sources and documentation
        for OSF/MotifTM, revision 1.2.  This release builds and
        runs on the two OSF/Motif reference machines, the HP
        9000/700 running HP-UX 8.05 and the DECstation 3100
        running OSF/1 1.0.3.  This release includes new
        features and documentation as well as code corrections
        and bug fixes that we have made since MotifTM 1.1.

        OSF encourages the reporting of all bugs found in
        OSF/Motif regardless of the platform or hardware
        configuration in which the bug is found.  However, OSF
        will commit to accept (and repair according to
        priority) only those bugs that can be replicated on the
        current reference configurations.  A list of known bugs
        can be found in the OPENBUGS file and a list of bugs
        fixed in this release can be found in the FIXEDBUGS
        file, both on the release tape.

        Since this is a general availability product release,
        it has undergone the full quality assurance cycle at
        OSF.

Installing This Release

        Note:  Information in this section may have
               changed after the final tape was
               produced.  If you depend on the accuracy
               of information in this section-for
               example, if you are using this
               information to reinstall the release-
               please use the hardcopy installation
               instructions shipped with the release
               media.

   Installing the Tape

        Motif 1.2 is provided on magnetic tape in tar format.
        This tape is one of two types, depending on your order:

           * 6250 bpi 9-track tape

           * QIC-150 cartridge tape

        Note:  For those customers that can only read
               QIC-24 format, special arrangements can
               be made to provide Motif on two QIC-24
               format cartridge tapes.

        The tapes contain test suites that are very large when
        compiled.  Likewise, many of the documentation files on
        the tapes are quite large.  If you have limited space,
        you might not want to install the tests or
        documentation.  The "Disk Space Requirements" section
        below lists the sizes of the top-level directories on
        the tapes.

        To install the entire contents of the tape, create the
        directory that you want to be the root for the sources,
        make that the current directory, load the tape into the
        tape drive, and issue this command:

        tar xvf device_name

        To install everything except the documentation (other
        than the Release Notes), load the tape and issue this
        command:

        tar xvf device_name ./BUGREPORT ./Imakefile ./Makefile ./Makefile.ini \
                ./OPENBUGS ./FIXEDBUGS ./README ./X11R5 ./bindings ./bitmaps \
                ./clients ./config ./demos ./doc/ReleaseNotes ./lib ./tests ./tools

        To install only the documentation, create the directory
        that you want to be the root for the sources and make
        that the current directory.  The documentation files
        will not write over the source files, so the root for
        documentation files and source files can be the same.
        Issue this command:

        tar xvf device_name ./doc

   Disk Space Requirements

        The following table lists the size, in 1024-byte
        blocks, for the top-level directories on the Motif 1.2
        tape.  For a complete listing of the files on the tape,
        issue the following command:

        tar tvf device_name

                    Motif 1.2 Disk Space Summary

             Directory Name       Size in 1024-byte Blocks
             _____________________________________________
             ./                               202
             ./X11R5                          842
             ./bindings                        25
             ./bitmaps                         15
             ./clients                       2271
             ./config                         244
             ./demos                         2424
             ./doc                             23
             ./doc/DTE                       3509
             ./doc/aes                      11171
             ./doc/man                      14301
             ./doc/programGuide             16502
             ./doc/releaseNotes               723
             ./doc/styleGuide               25025
             ./doc/usersGuide               12484
             ./lib                           7398
             ./tests                         6447
             ./tools                          358
             _____________________________________________
             Total                         103964

   Assistance

        If you have any problems when installing the tape, call
        the OSF/Motif support desk at (617) 621-8990.

Summary of Changes in this Release

        This section summarizes new functionality and
        enhancements made for OSF/Motif Revision 1.2.  Refer to
        the Design Specification or reference pages for more
        detailed information.

   General Toolkit Changes

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

     Include File Changes

        In the Motif 1.1 release, links to the AtomMgr.h,
        Protocols.h, ProtocolsP.h,  and MwmUtil.h header files
        in Xm were placed in X11 in both the make includes and
        make install procedures. This was for backwards
        compatibility with the 1.0 release. The make includes
        and make install procedures no longer create these
        links. The files should be included as <Xm/...> instead
        of <X11/...>.

        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.

     ANSI C Compliance

        All references to caddr_t have been changed to
        XtPointer.  This will affect all callback routines and
        other routines that make reference to caddr_t.  This
        change was done to meet the requirement that Motif 1.2
        be ANSI C specification compliant.

     Internationalization

        Many of the changes to Motif for Revision 1.2 were made
        to enable the development of internationalized
        applications and are based on X11 Release 5
        specifications.  In particular OSF/Motif
        internationalization capabilities rely on the fact that
        the X and C libraries support the "locale" concept from
        ANSI-C or POSIX standards.  To run Motif 1.2 you must
        have X11R5 installed including all the
        internationalization features.

        The X11 Release 5 specifications contain some vendor
        dependencies in the internationalization area and the
        sample implementation from MIT does not include as a
        standard part a complete X library. The MIT sample
        implementation may not automatically work properly
        without any modification. For example, you may have to
        port or build Input Methods to work in the locales
        supported by your OS, and the Xlib interpretation of
        wchar_t has to match exactly the wchar_t implementation
        of your C library. The MIT sample implementation
        contains two contributed implementations (Ximp and Xsi)
        as examples that work in the Japanese locale for some
        operating systems. There is also contributed software
        for dealing with wchar_t.

        For Motif 1.2 to work correctly, it must be run with a
        complete implementation of the ANSI C and Xt/Xlib
        specifications in the locale that the application
        specifies.  Unless otherwise specified, an OSF/Motif
        1.2 program runs in the C locale.  If Xt/Xlib functions
        do not work properly (including in the C locale) the
        Motif toolkit may raise warnings or errors.

        Note:  In particular, if you are running in the
               C locale with the sample implementation
               from MIT, you may get the message "Cannot
               Open Input Method: Using XLookupString."
               This message has been disabled by default
               in the Motif toolkit.  If you wish to
               enable it (because you are running in a
               locale that requires an Input Method) you
               need to define the symbol XOPENIM_WARNING
               while building XmIm.c.

        Because a Motif 1.1 application relinked with Motif 1.2
        may call these functions, it is possible that a Motif
        1.1 application relinked with Motif 1.2 will signal a
        new warning or error if XmIm.c was build with
        XOPENIM_WARNING defined.

        Motif 1.2 uses the new R5 Xlib calls described in
        chapter 13 of the Xlib Release 5 specifications. Motif
        particularly uses the following functions:

           * XSupportsLocale

           * XCreateFontSet

           * XOpenIM

           * XCreateIC

           * XmbDrawString

           * XwcDrawString

           * XmbDrawText

           * XwcDrawText

           * XSetICValues

           * XGetICValues

           * XmbLookupString

           * XwcLookupString

           * XmbTextPropertyToTextList

           * XwcTextPropertyToTextList

           * XmbTextListToTextProperty

           * XwcTextListToTextProperty

        If your application does not use wide characters, the
        Xwc* functions will not be called but the Xmb*
        functions may be called.

        All of the Xlib internationalization function calls
        must work properly in the C locale in order to pass the
        Motif Validation Suite.  Other locales are not
        required.

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

        Most dramatic have been the changes 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.

        Note:  For Motif 1.2 to run on all systems, you
               must ensure that the appropriate
               environment variables (e.g. XNLSPATH with
               Xsi) are defined to point to the
               appropriate directory for system locale
               files.  In addition, you may have to
               define LANG to some valid locale, for
               example, "C".  On systems running Ultrix
               4.2 and prior, MB_CUR_MAX in stdlib.h
               must be set to 1 instead of 4.

     Display and Screen Specific Data

        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.

     Drag and Drop

        In compliance with the OSF/Motif Style Guide, Revision
        1.2 supports the drag and drop metaphor for data
        interchange. The Drag and Drop specification has been
        fully implemented.  Refer to the OSF/Motif Programmer's
        Guide and the man pages for information on the drag and
        drop interface.

        Note:  If you desire to have PopupMenus pop up
               using Btn2, Drag and Drop will not
               function properly.  You will need to
               disable Drag and Drop.

     Tear-off Menus

        With TearOff Menus, the user can retain menus on the
        display for subsequent selections. Each tearable
        menupane has a tearoff button.  When the mouse drag
        button is pressed on the tearoff button, the pane tears
        off and can be dragged and then placed by releasing the
        mouse drag button.  The window manager surrounds the
        tearoff menupane with a menu button and a title.
        Shifting focus to a torn-off menu's windowpane follows
        standard window manager policy.

        Tear-off behavior is enabled by setting the
        XmNtearOffModel resource to XmTEAR_OFF_ENABLED (the
        default is XmTEAR_OFF_DISABLED).

        Note:  There is no resource converter pre-
               registered for XmNtearOffModel. To allow
               tear-off functionality to be enabled
               through the resource database, an
               application must register its own
               resource converter for the
               XmNtearOffModel resource using the
               XmRepTypeInstallTearOffModelConverter
               function.

               The reason the converter is not
               automatically installed is that many
               applications use map or cascading
               callbacks to dynamically set the
               sensitivity of items within their menus.
               However, if a TearOff Menu is mapped, the
               sensitivity of its menu itmes must be
               changed immediately to reflect changes in
               other application state.  Existing
               applications are unlikely to change menu
               item sensitivity in this manner, so
               allowing their menus to be torn off could
               allow operations to be enabled at
               unexpected times.  If a user activated
               one of these menu items, it could crash
               the application or cause corruption of
               persistent data.

     Insensitive Visuals

        Visual indications are provided to indicate whether a
        component can respond to input from users.  Labels and
        buttons have had this behavior in previous releases.
        In Release 1.2, the behavior is extended to the XmList,
        XmText, XmTextField, XmScrollBar, and XmArrowButton
        widgets.

     Other Visual Changes

        Several pixels have changed in the 3-D beveled look.

        Revision 1.2 color generation routines include minor
        changes.  In particular, the new XmScreen object
        contains resources that allow for tailoring the
        generation of default colors and some of the default
        values for thresholds have been adjusted to produce
        more contrast on color monitors.

        A location cursor surrounding all items in a List is
        added whenever a List widget has the focus and the
        current keyboard item is not visible.

        There are minor layout differences due to bug fixes in
        geometry management.

     Titles for Frames

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

     Audible Warning

        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.

     Color Enhancements

        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.

     Baseline Alignment

        A new function, XmWidgetGetBaselines, determines the
        position of the widget's text baseline.  Another
        function, XmWidgetGetDisplayRect, determines the size
        and position of the bounding box for the widget's
        character string.

     Expanded Traversal Set

        In Motif 1.2 it is possible to traverse via the
        keyboard to some widgets 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 controls are not direct children of the tab
        group.

     2-D Menu Traversal

        The left, right, up, and down traversal arrows navigate
        within a menupane.  The up and down arrows wrap between
        columns, and the right and left arrows post the
        previous or next menupane, when in the rightmost and
        leftmost column of the menupane, respectively.

     Input Focus

        A new resource, XmNinitialFocus, has been added to the
        Manager class to specify the first widget to receive
        input focus.  This resource specifies a widget and is
        ignored for all popup menus, menubars, option menus,
        and pulldown menus.

     Traversal Access Functions

        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:

           * The function fields all events, not just the
             button press.

           * The function returns on any keystroke or a button
             press.

           * The function 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.

     Virtual Keys

        A new function, XmTranslateKey, is provided to allow
        applications overriding the default XtKeyProc to handle
        Motif virtual keys.

        Two new virtual keysyms are defined: osfPageLeft and
        osfPageRight.  Ensure that you have the X11R5 XKeysymDB
        installed in /usr/lib/X11, or you will get warnings
        about these keysyms on application startup.  XKeysymDB
        should specify:

        osfPageLeft                     :1004FF40
        osfPageUp                       :1004FF41
        osfPageDown                     :1004FF42
        osfPageRight                    :1004FF43

        To comply with the Style Guide, the default binding for
        osfMenu has changed from <Key>F4 to Shift<Key>F10.

        In X11R5 the HP keysyms in the XKeysymDB file have the
        prefix 'hp'.  This is not reflected in the hp bindings
        file in the /bindings directory. If you are using an R5
        XKeysymDB, you may see warnings on application startup.
        To remove these warnings, make the following changes to
        bindings/hp:

        from:

        osfDelete       :               <Key>DeleteChar
        osfInsert       :               <Key>InsertChar
        osfPrimaryPaste :               <Key>InsertLine
        osfQuickPaste   :               <Key>DeleteLine

        to:

        osfDelete       :               <Key>hpDeleteChar
        osfInsert       :               <Key>hpInsertChar
        osfPrimaryPaste :               <Key>hpInsertLine
        osfQuickPaste   :               <Key>hpDeleteLine

        There is a new client, xmbind. It sets up the virtual
        bindings for use by Motif applications.  This is
        already done at Mwm startup, so xmbind is only required
        if Mwm is not used, or to change the virtual bindings
        without restarting Mwm.

        The virtual bindings can now be specified per-vendor.
        If no .motifbind file is present in the home directory,
        the file xmbind.alias is used to provide a mapping from
        server vendor name to bindings file. It is possible to
        set up user vendor bindings, and system-wide vendor
        bindings.

     Resource Management

        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.

     Changes for CUA and Windows Compliance

        In Motif 1.2, typing <Return> or osfActivate (usually
        bound to the keypad <Enter> key) no longer activates a
        button that is outside a menu.  For example,it no
        longer pops up an OptionMenu or activates a
        ToggleButton in a dialog box.

        If there is a default button associated with an
        XmBulletinBoard, typing <Return> (except in a multi-
        line XmText), <Ctrl> + <Return> or osfActivate while
        focus is in the XmBulletinBoard activates the default
        button.

   Specific Widget Changes and Enhancements

        This section lists changes made to particular widgets.

     XmClipboard

        Several corrections have been made to XmClipboard
        function parameters.  These are binary compatible, but
        may cause warnings when recompiling a Motif
        applications. Changes were (char *) to XtPointer, int
        to long, (int *) to (long *). Functions affected are:

           * XmClipboardCopy

           * XmClipboardCopyByName

           * XmClipboardInquireCount

           * XmClipboardInquireFormat

           * XmClipboardRegisterFormat

           * XmClipboardRetrieve

           * XmClipboardStartCopy

           * XmClipboardWithdrawFormat

     XmCommand

        XmCommandGetChild is corrected to accept
        XmDIALOG_WORK_AREA as a value for the child argument.

     XmList

        For managing list items, XmList includes the following
        new functions:

           * XmListAddItemsUnselected

           * XmListDeletePositions

           * XmListGetKbdItemPos

           * XmListIsPosSelected

           * XmListPosToBounds

           * XmListReplaceItemsUnselected

           * XmListReplaceItemsPosUnselected

           * XmListReplacePositions

           * XmListSetKbdItemPos

           * XmListUpdateSelectedList

           * XmListYToPos

        XmList includes a new translation:

           * <Copy> - Copies selection to clipboard.

        XmList also includes a new action:

           * ListScrollCursorVertically() - scrolls the cursor
             vertically based on an input percentage or a y
             position.

        Note:  It is a known bug that this action is
               named ListScrollCursorVisible in 1.2.
               This will be corrected in 1.2.1.

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

        In Revision 1.2, if the selectedItems and
        selectedItemCount resources for a List are set in a
        resource file, the location cursor appears over the
        last item in the selectedItems list, not the first
        selected item.

     XmMessageBox

        MessageBox now supports the addition of one MenuBar,
        one work area, and multiple PushButton children.

        A new dialog type, XmDIALOG_TEMPLATE, creates a
        MessageBox containing only a Separator. Additional
        children are provided by the application.

        XmCreateTemplateDialog creates a XmDIALOG_TEMPLATE
        XmMessageBox inside a DialogShell.

     XmRowColumn and Menus

        A new resource, XmNentryVerticalAlignment, specifies
        the vertical alignment style.

        A new resource, XmNunpostBehavior, has been added to
        the XmScreen object.  This resource can be set to
        enable external button events to be replayed after a
        menu is unposted.

     XmScrollBar

        XmScrollBar includes a new translation:

           * <Cancel> - Cancels the current slider drag.

     XmScrolledWindow

        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 callbacks that are called when a traversal
        event is requested to a non-visible widget.  A new
        callback structure, XmTraverseObscuredCallbackStruct,
        has been added to support this callback.

     XmSelectionBox, XmFileSelectionBox

        In addition to a work area child, these widgets now
        support the addition of MenuBar and PushButton
        children.

        A new resource, XmNchildPlacement, controls the
        location of the work area child.

        The value XmDIALOG_TEMPLATE has been added to the
        resource XmNdialogType.

        By default, XmSelectionBoxDialog and subclasses use
        XmTextField instead of XmText.  You can revert to the
        former behavior by defining USE_TEXT_IN_DIALOGS when
        building XmSelectionBox or any of its subclasses.

     XmText

        Two functions have been added to XmText for updating
        changes to the widget: XmTextDisableRedisplay and
        XmTextEnableRedisplay.

        The functions XmTextFindString and XmTextGetSubstring
        have been added to facilitate string manipulation.

        The destination cursor now follows the insert cursor
        and is no longer independently drawn.

        XmText includes these new translation:

           * <Backspace> - Deletes any non-null primary
             selection.

           * <Delete> - Deletes any non-null primary selection.

           * <LeaveWindow> - Continues a selection action by
             scrolling after a time delay.

        XmText includes these new actions:

           * scroll-cursor-vertically() - Scrolls the cursor
             vertically based on a y position.

           * toggle-overstrike() - Switches between insert and
             overstrike modes.

        Note:  There is a potential problem in both
               XmText and XmTextField with the rendering
               of strings in fonts or fontsets that
               contain characters where ascenders can
               rise above font ascent.  If the text
               containing these characters is
               highlighted, the overlapping descenders
               of previous lines may be overwritten by
               succeeding lines.

     XmTextField

        A new resource, XmNfocusCallback, specifies the
        callbacks that are called when the widget accepts input
        focus.

        A new function, XmTextFieldGetSubstring, gets a
        substring by length from a widget.

        The destination cursor now follows the insert cursor
        and is no longer independently drawn.

        XmTextField includes these new translations:

           * <Backspace> - Deletes any non-null primary
             selection.

           * <Delete> - Deletes any non-null primary selection.

     XmToggleButton, XmToggleButtonGadget

        Setting XmNfillOnSelect true, when XmNindicatorOn is
        false will now cause the background of a set
        XmToggleButton to be filled with XmNselectColor.

        The default value for XmNfillOnSelect is dynamic so
        that it matches the state of XmNindicatorOn.

   MWM Enhancements

        The following changes have been incorporated into the
        Motif Window Manager (mwm):

           * An internationalized .mwmrc file

           * Internationalized dialog messages

           * Built in default root menu

           * Support for the <Return> continuation character
             ('\') in the .mwmrc file

           * Search XBMLANGPATH for bitmap files

           * Support for pop-down and replay event behavior in
             mwm menus

           * Widget names used by mwm exposed in documentation

           * Support scrolled window traversal to scrolled-off
             children in icon box

           * <Alt> and <Meta> key modifiers treated as
             different modifiers

           * Support for the SHAPE non-rectangular window
             extension

        The window manager includes these new or enhanced
        resources:

           * feedbackGeometry - Sets the position of the
             move/resize feedback window.  The default is the
             center of the screen.

           * frameBorderWidth - Now defaults based on the size
             and resolution of the screen.

           * iconPlacement - Now takes the additional value
             tight for automatic icon placement with no gaps
             between icons.

           * maximumClientSize - Now takes vertical or
             horizontal as values.

           * moveOpaque - Controls whether an image of the
             window, or just an outline, is moved.

           * resizeBorderWidth - Now defaults depending on the
             size and resolution of the screen.

           * usePPosition - Takes values of on, off or nonzero
             to control whether program specified positions are
             used.

        The window manager includes these new and enhanced
        functions:

        f.lower   Includes a within argument to move the window
                  within the application stacking order, but
                  retains the parent window below the children
                  rule.  Also, includes a freeFamily argument
                  to move the window absolutely without regard
                  to its local family stack.  Both modifiers
                  move the window within the local family
                  stack, but do not move the family stack.

        f.minimize This function is now allowed from an icon in
                  an iconbox.

        f.raise   Includes a within argument to move the window
                  within the application stacking order, but
                  retains the parent window below the children
                  rule.  Also, includes a freeFamily argument
                  to move the window absolutely without regard
                  to its local family stack.  Both modifiers
                  move the window within the local family
                  stack, but do not move the family stack.

        f.raise_lower Includes a within argument to move the
                  window within the application stacking order,
                  but retains the parent window below the
                  children rule.  Also, includes a freeFamily
                  argument to move the window absolutely
                  without regard to its local family stack.
                  Both modifiers move the window within the
                  local family stack, but do not move the
                  family stack.

        f.restore Restores a window to its previous state.
                  Double clicking on a root icon is bound to
                  this function rather than to f.normalize.

        f.restore_and_raise
                  Restores a window to its previous state and
                  raises it to the top of the window stack.
                  Double clicking on an icon in an iconbox is
                  bount to this functions rather than to
                  f.normalize.

        f.screen  Traverses to the screen specified by arg.
                  Legal values are next, prev, last or a
                  specific screen number.

        There is one new mwm action:

           * <Alt> <Esc>
             Behaves simliar to the f.next_key, except that the
             window is always raised regardless of the value of
             focusAutoRaise.

   UIL Changes

        The following changes have been made to UIL:

           * A new command flag, -s, has been added to enable
             the use of setlocale and the creation of localized
             Compound Strings.

             Note:  A serious bug in parsing double
                    quoted strings with the -s flag was
                    discovered late in the release
                    cycle; the fix was not completed
                    until after the source code was
                    frozen.  This will be fixed in
                    1.2.1, and if you need to enable
                    this functionality, a patch is
                    availabe upon request from OSF.

           * New UIL syntax to support font sets and font
             tables.

           * New UIL syntax to support wide character strings.

           * Support for widget references as callback tags.

           * New UIL syntax to specify resources of
             automatically created children.

           * Syntax changes to WML to allow for the definition
             of automatically created children of composite
             widgets.

           * UIL can read binary databases (WMD files)
             containing WML information with the -wmd file
             option.

           * Mrm includes two new functions.
             MrmOpenHierarchyPerDisplay, is the same as
             MrmOpenHierarchy, except that display is passed as
             an explicit argument.  This function replaces
             MrmOpenHierarchy.  MrmFetchBitmapLiteral fetches a
             bitmap literal with a depth of 1.

Overview of the Motif Directory Structure

        This section describes the Motif directory structure.

        The file ./README summarizes the contents of the top
        level directories in the directory structure, briefly
        describes the build process, and describes bug
        reporting procedures.

        The file ./BUGREPORT is a bug report template.

        The file ./OPENBUGS contains all open bugs.

        The file ./FIXEDBUGS contains all bugs fixed in this
        release.

        The directory ./X11R5 contains official MIT patches for
        Version 11 of the X Window System.  The patches to the
        Xlib and the X Toolkit Intrinsics are required for
        building and running Motif 1.2.  The file
        ./X11R5/README describes the patches and how to apply
        them to your X sources.  For more information, refer to
        the section "Building Motif On Your System."

        Note:  MIT, not OSF, is responsible for support
               of any patches in the ./X11R5 directory.
               We provide them unsupported for the
               convenience of users who might not yet
               have received the latest sources.

        The directory ./doc contains the full Motif
        documentation set.  For more information, refer to the
        section "The OSF/Motif Documentation."

        The directory ./lib contains the toolkit library and
        resource manager library:

           * ./lib/Xm contains the Motif widget library.

           * ./lib/Mrm contains the Motif resource manager
             library used with the uil compiler.

        The directory ./bindings contains vendor-specific
        bindings for virtual keysyms.  For more information on
        virtual bindings, see the file ./bindings/README or the
        VirtualBindings(3X) manual page in the OSF/Motif
        Programmer's Reference.

        The directory /.bitmaps contains Motif-specific
        bitmaps.

        The directory ./clients contains the Motif window
        manager, the User Interface Language (uil) compiler,
        and the xmbind client:

           * ./clients/uil contains the uil compiler and the
             callable uil interface library (libUil.a).  The
             file ./clients/uil/UilParser.c is obsolete and no
             longer included.

           * ./clients/mwm contains the Motif window manager.

           * The directory ./clients/mwm/examples is an
             unsupported directory that contains sample
             .Xdefaults and .mwmrc files.

           * ./clients/xmbind allows users to set up or change
             virtual bindings when not running mwm, or without
             having to restart mwm.

        The directory ./demos is an unsupported directory.  The
        organization and content of the demos have changed
        significantly since the last release.  This directory
        contains several demo subdirectories (consult the
        README file in each directory for more information):

           * ./demos/DragAndDrop contains an example of Drag
             and Drop functionality.

           * ./demos/clipboard contains an example of Motif
             clipboard actions.

           * ./demos/dogs contains an example of how to
             subclass a primitive widget.

           * ./demos/hellomotif contains a demo that
             demonstrates a PushButton.

           * ./demos/helloint contains an internationalized
             version of hellomotif.

           * ./demos/motifanim contains a UIL demo that
             demonstrates animation of pixmaps.

           * ./demos/motifburger contains an example of a
             UIL/Xm program.

           * ./demos/motifgif contains a GIF viewer with Motif
             interface.

           * ./demos/motifshell contains a simple shell
             environment created using Motif.

           * ./demos/periodic contains a display of all Motif
             widgets.

           * ./demos/textedit contains an example text editor.

           * ./demos/uilsymdump contains an example using the
             UilDumpSymbolTable function.

           * ./demos/view contains an internationalized text
             viewer.

           * ./demos/xmpiano contains a music application using
             Motif.

           * ./demos/xmsamplers contains a directory of Motif
             examples.

           * ./demos/xmtravel contains a simulated travel agent
             database front-end.

        The directory ./tests contains the test suites.  Refer
        to the section "The OSF/Motif Test Suite" for more
        information.  The tests directories are as follows:

           * ./tests/Auto contains libraries compiled for
             automated testing.

           * ./tests/General contains supporting libraries and
             binaries.

           * ./tests/Manual contains libraries compiled for
             manual testing.

           * ./tests/Performance contains tests of Motif
             performance.

           * ./tests/DragAndDrop contains tests for Drag and
             Drop functionality.

           * ./tests/util contains tools useful for testing.

           * ./tests/Mrm contains tests of the Motif resource
             manager library.

           * ./tests/Toolkit contains tests of the Motif
             widgets.

           * ./tests/XmString contains tests of compound
             strings.  This directory has been added since
             Motif 1.0.

           * ./tests/mwm contains tests of the Motif window
             manager.

           * ./tests/uil contains tests of the uil compiler.

           * ./tests/doc contains manual pages for test
             automation.

        The directory ./tools contains a single tools
        subdirectory, wml, with the Widget Meta-Language (WML)
        facility.

        The directory ./config contains files primarily from
        the X11R5 tape.  The only files that have changed are
        ultrix.cf, hp.cf, sun.cf, sgi.cf, Imakefile, Imake.tmpl
        (only to include the Motif files), and imakemdep.h.
        Three new files created by OSF are osf1.cf, Motif.tmpl
        and Motif.rules.  This directory contains the rules,
        templates, and machine-specific configuration files for
        imake, as well as the source code for the imake
        utility.

Where to Get Help

        To report problems with this release, please complete
        the OSF Problem Report in the file ./BUGREPORT and mail
        to:

        motif-defect@osf.org or uunet!osf.org!motif-defect

        motif-defect is an alias to a person at OSF who is in
        charge of receiving and dispatching bugs reported
        againtst the lates released version of OSF/Motif.

        Discussions concerning the technology in this release
        can be directed to the mailing list:

        motif-talk@osf.org or uunet!osf.org!motif-talk

        If you want to be added to the motif-talk mailing list,
        please send your email address to:

        motif-talk-request@osf.org or uunet!osf.org!motif-talk-request

        Please include your company name and Motif license
        agreement number.

        Please do not report snapshot bugs to the motif-defect
        or uec-defect alias.  The 1.2 snapshot program has
        ended.

        Licensees with full support contracts can also call OSF
        for help.  The service number is 1-617-621-8990, and
        support is available between 8:30 AM and 5:00 PM United
        States Eastern time, Monday through Friday.  You can
        obtain an OSF/Motif software support contract for
        support of released versions of OSF/Motif by contacting
        OSF Direct Channels at 1-617-621-7300.

Building Motif for Your System

        Motif 1.2 uses X11R5 Xlib and X Toolkit Intrinsics
        libraries.  The versions of these libraries used to
        build Motif must have the MIT fixes 1-9 fix supplied in
        the ./X11R5 directory applied to them in order for
        Motif to build and run properly.  In addition, either
        the versions of ./lib/Xt/Shell.c and ./lib/Xt/Geometry.c
        supplied in the ./X11R5 directory must be used or fix
        10 (available from the MIT X Consortium) must be
        applied to the libraries.

        Be sure to read the section "Tailoring the Build
        Process" for information on how to configure your
        system before building Motif.  This section includes
        instructions for patching your X11R5 sources.  The
        section "Motif Makefiles" describes the steps you
        should follow to build the source, including building
        the Makefiles, after you have tailored your build
        configuration.  The section "The Motif Build Tree"
        indicates how the build proceeds once it has begun.

   Tailoring the Build Process

     Patching the X11R5 Libraries

        You must apply the patches supplied in the ./X11R5
        directory to the X11R5 sources.  If you do not have the
        X11R5 sources, you can obtain them by writing to this
        address:

        MIT X Consortium
        Laboratory for Computer Science
        545 Technology Square
        Cambridge, MA 02139

        To apply the patches, you may want to use the patch
        program that appears in the ./mit/util/patch directory
        from the MIT X11R5 distribution.  To use the patch
        program, you must first build it by moving to the
        directory ./mit/util/patch and following the
        instructions in the README file in that directory.
        Once you have built the patch program for your system,
        you are ready to apply the patches to your X11R5
        sources.  These patches are contained in the files
        ./X11R5/fix*.

        Run the patch program, applying the MIT patches in
        ascending numerical order.  Follow the directions in
        the beginning of each of the ./X11R5/fix* files.

        After applying all patches to the X11 and Xt library
        sources, you should rebuild and re-install those
        libraries, if necessary.

     Integrating X11 Release 5 and Motif


        Motif 1.2 release is based on X11 Release 5.  We assume
        that you do not have the R5 libraries and include files
        installed on your system, but residing in a source tree
        on your system.  The supplied Makefiles assume this
        configuration.  If you have X11R5 installed somewhere
        on your system, you should follow the guidelines in the
        section below on "Using X11R5 Installed Libraries and
        Header Files."  If your X11R5 is not installed, but is
        in a source tree on your system, you should follow the
        guidelines in the following section, "Using X11R5
        Libraries and Header Files from a Source Tree."

        Using X11R5 Libraries and Header Files From a
        Source Tree

        The imake configuration for the 1.2 release allows you
        to set the location of your X11 tree by setting the
        variable XTop in your  ./config/site.def file in your
        Motif source tree.  This variable is set by default to
        $(TOP) in the ./config/Motif.tmpl file.  Another
        variable, MTop, is similarly used to define the
        location of the top of the Motif source tree.  This is
        also set to $(TOP) by default in ./config/Motif.tmpl.
        In other words, the default configuration has both
        trees rooted at the same point, or the Motif tree is
        within the X tree.

        You will most likely want to leave the top of your
        Motif tree (MTop) as $(TOP), unless you are using the
        Motif setup when integrating other applications and
        need to point to the Motif source tree outside of that
        tree.

        You will most likely want to change the top of your
        X11R5 tree (XTop) to be the pathname where your X11R5
        source tree (libraries, includes and utilities) is on
        your system.  For example, you can add this definition
        to site.def:

        #define XTop /local/x11R5/mit

        It should be added within the block selected by #ifdef
        AfterVendorCF.  If you change either of these
        definitions in the ./config/site.def file, you must
        remake your Makefiles.  To make your first Makefile
        (which also builds imake), use the following command
        from the top of your Motif tree:

        make Makefile "BOOTSTRAPCFLAGS=-IXTop/X11"

        where XTop is the value used in site.def.  Follow this
        with make Makefiles  as described in the section "Motif
        Makefiles."

        Using X11R5 Installed Libraries and Header Files

        If you wish to use the version of your X11R5 libraries
        and header files from an installed area and not the X
        source tree, you should remake your Makefiles using the
        -DUseInstalled switch.  Use the following command from
        the top of your Motif tree:

        make Makefile "BOOTSTRAPCFLAGS=-I/installed/x11R5/usr/include/X11"\
        IMAKE_DEFINES=-DUseInstalled

        where /installed/x11R5/usr/include/X11 is the location
        of your installed X11 header files (or your IncRoot/X11
        or ProjectRoot/include/X11).  This replaces the make
        Makefile step described in the section "Motif
        Makefiles".  Follow this by the following sequence of
        commands:

        cd config
        ./imake -DUseInstalled -I.
        su
        make install
        exit
        cd ..
        make Makefiles

        This installs the proper configuration files from the
        Motif source tree, builds imake in the Motif tree using
        the include files found in your installed area, and
        constructs Makefiles that use all X installed libraries
        and utilities, including the imake utility.

        After building the Makefiles, you must not use make
        World to build Motif, as this reverses the
        modifications you have just made to imake by installing
        Motif configuration files.  You can use make
        Everything.  See the "Motif Makefiles" section for more
        information.

     Linking With X11 and Extra Libraries

        We have removed the variable SYSLIBS from the Motif 1.1
        HP and Ultrix imake configuration files ./config/hp.cf
        and ./config/ultrix.cf.

        All Motif targets need to link with the Xlib library
        libX11.a and the Xt library libXt.a.  These have been
        added to the appropriate ClientLibs definitions in
        Motif.tmpl. See the section "Patching the X11R5
        Libraries" for details on how to access the appropriate
        X files.

        If your development platform requires that the Motif
        libraries be linked with the additional libraries, you
        can add them to the platform-specific imake config file
        using the XmExtraLibraries definition. For example, on
        the HP reference platform, we have added

        #define XmExtraLibraries -lPW

        to the hp.cf file, because the Xm library needs to link
        with the Programmer's Workbench library on that
        platform.

        You can also use the ExtraLibraries definition to add a
        library to be linked with any X11 application, not only
        Motif applications.  For example, on some SystemV-type
        systems, you must link X11 applications with a socket
        library with the following specification in your config
        file:

        #define ExtraLibraries -linet

     Compiler Flags

        The imake variables MotifDefines, StandardDefines and
        DefaultCCOptions contain the flags that are used in
        every C compile.  They are incorporated into the CFLAGS
        that are used with every call to CC.  Any option that
        you need to set for every compile should be included in
        one of these variables.  The default imake
        configuration file, ./config/generic.cf, does not have
        any MotifDefines, StandardDefines or DefaultCCOptions.
        StandardDefines can contain flags that are operating
        system or machine dependent.  -DSYSV is an example of
        an operating system dependent flag.  -DSTRINGS_ALIGNED
        is an example of a machine dependent flag.
        StandardDefines is the appropriate place to put the
        following types of flags:

        #define StandardDefines -DSYSV

        and DefaultCCOptions should be used for compiler
        directives such as:

        #define DefaultCCOptions -Wc,-Np3000

        MotifDefines should be used for -D flags that are used
        only in Motif compilations.  StandardDefines may retain
        the value used when compiling X11R5.  If you are using
        imake, you can change the MotifDefines line in your
        system configuration files; otherwise you will have to
        edit the STD_DEFINES value in every bottom level
        Makefile in the directory structure if you need to
        change these flags.

        The make variable DEFINES can be set in a particular
        Imakefile if you need to add a flag to a single
        directory compile.  There is an example of the use of
        DEFINES in ./clients/mwm/Imakefile:

        DEFINES = MwmDefines

        See the next section for a description of MwmDefines.

        If you need to add a compile flag to a single
        directory, add or change the DEFINES variable in the
        Imakefile or Makefile for that directory.  DEFINES are
        never given a value in an imake configuration file.

        The make variable CDEBUGFLAGS has the default value -O,
        which tells the compiler to optimize.  If you wish to
        debug, change the value of the CDEBUGFLAGS to the debug
        flag for your compiler.  To change the value of the
        variable CDEBUGFLAGS in the entire build, add the
        following line to your imake configuration file,
        assuming that the debug flag is -g:

        #define DefaultCDebugFlags -g

        To change the value of the variable CDEBUGFLAGS in a
        single Makefile, replace the present CDEBUGFLAGS
        definition within this line:

        CDEBUGFLAGS = -g

        If you are not using imake, you need to edit any
        Makefile your build uses.  The default build passes the
        variable CDEBUGFLAGS through the tree, so you may need
        to edit higher level Makefiles that you use.
        CDEBUGFLAGS are dependent on the compiler you use, so
        if you change compilers, you may need to change your
        CDEBUGFLAGS accordingly.

        If you do not set the value of DefaultCDebugFlags, you
        can control the level of optimization using the imake
        variable OptimizedCDebugFlags.  For example, some
        systems will use this definition:

        #define OptimizedCDebugFlags -O2

        Because we separate Motif-specific definitions and
        libraries into unique imake variables, we hope you will
        be able to use the same platform-specific configuration
        files to build both X11R5 and Motif.  There is one
        important exception; if your platform has a special
        value for LibraryDefines, it must have the Motif-
        specific definitions appended to it.

     X11 Extensions in mwm

        In this release, the Motif window manager (mwm) is
        built to support the X11 move opaque feature and
        nonrectangular window shape extension by default.  If
        the current X11 installation does not support the shape
        extensions, mwm must be compiled with the -DNO_SHAPE
        option.  If it is desired to turn off support for
        multibyte and localized text, mwm must be compiled with
        the -DNO_MULTIBYTE option.  These options can be added
        to the MwmDefines imake variable.  MwmDefines should be
        used for -D flags that are used only in compiling mwm.
        It is currently only used in ./clients/mwm/Imakefile.

     YACCFLAGS

        The widget meta-language facility uses the commands
        yacc and lex to convert widget description tables into
        C source files.  Some versions of yacc need special
        flags to process the large parse tables that are
        generated.  The make variable YACCFLAGS is used to hold
        the flags required by yacc.  Here are examples of
        YACCFLAGS that may be needed:

        For an HP 9000/370:

        YACCFLAGS = -Nm20000

        For the XENIXTM operating system:

        YACCFLAGS = -SR500 -Ss1000 -Sa10000 -Sm50000

        If you have compilation errors that cause yacc to die
        with a complaint such as "out of space", you may need
        to add the YaccFlags definition to your imake
        configuration file.  For example, we have added

        #define YaccFlags -Nm20000

        to the hp.cf file.  The default imake configuration
        file, ./config/generic.cf, does not have any YaccFlags
        defined.  The only Makefile in the Motif source tree
        that uses yacc is in the directory ./tools/wml.  If you
        are not using imake, you may need to define YACCFLAGS
        in the Makefile in this directory.

        Some old versions of yacc cannot increase the size of
        their internal tables with flags and therefore will not
        work with our wml sources.  In this case you need to
        upgrade your yacc from new sources.  You can get a new
        yacc by:

           * Asking your operating system vendor for an
             upgrade.

           * If you are an OSF/1 licensee, using the yacc
             sources from OSF/1.  It will build on most
             machines without significant changes.

           * Using the yacc from the System V.4 distribution.
             We have not tested the use of this version of
             yacc.

     Machine Dependencies

        The code to support the use of compound strings, found
        in the file ./lib/Xm/XmString.c, has a machine
        dependency.  The compound string contains an unaligned
        integer.  When this code is compiled without any
        additional flags, the integer is accessed directly.  If
        your machine cannot access an unaligned integer, you
        can compile with the flag -DSTRINGS_ALIGNED, and the
        integer is accessed as two separate bytes.  You can add
        the flag -DSTRINGS_ALIGNED to the MotifDefines line in
        your imake configuration file or the Makefile in
        ./lib/Xm.  The default imake configuration file,
        ./config/generic.cf, does not have the
        -DSTRINGS_ALIGNED flag defined.

        Whether to use the -DSTRINGS_ALIGNED flag will depend
        on your machine, not on your operating system.  For
        instance, a Vax running Ultrix does not require aligned
        integers, however a DECstation 3100, which is a Risc-
        based machine, does require the flag to be defined even
        when it is also running Ultrix.  (We have added the
        flag to MotifDefines in ./config/ultrix.cf,
        ./config/osf1.cf, ./config/sgi.cf and ./config/sun.cf.)
        Some machines do not require integers to be aligned,
        but will respond more slowly when you try to access one
        that is not aligned.  It may be prudent to try
        compiling both with and without the flag, and seeing
        which toolkit provides better performance on your
        machine.

     Operating System Dependencies

        Presently, we provide several workarounds for
        portability problems in Motif source.  These
        workarounds have been suggested by Motif licensees and
        are not thoroughly tested.  You may wish to examine
        them closely to determine if they will work properly on
        your system.  None of the flags mentioned in this
        section are used by default.

        A workaround for machines that do not have vfork() can
        be used by adding the flag -DPORT_NOVFORK to MwmDefines
        or to the DEFINES line in the Imakefile or Makefile in
        the directory ./clients/mwm.

        By default, the name of a directory is found in the
        structure dirent, which is defined in the include file
        dirent.h.  Some systems keep their directory
        information in a structure called direct rather than
        dirent.  The structure direct can usually be found in
        either sys/dir.h or ndir.h.  If the structure dirent is
        found in the include file dirent.h on your system, you
        won't have to add any compile flag.  If dirent.h does
        not exist on your machine, check to see which one of
        sys/dir.h or ndir.h does exist on your machine.  Look
        in the include file to see which structure, direct or
        dirent, is defined.  If your system uses the structure
        direct defined in the include file sys/dir.h, you can
        add the flag -DSYS_DIR to the MotifDefines in your
        imake configuration file or to the DEFINES in the
        Imakefile or Makefile in ./lib/Xm to pick up the
        correct structure.  If your system uses the structure
        direct found in the include file ndir.h, you can add
        the flag -DNDIR to the MotifDefines in your imake
        configuration file or Makefile to pick up the correct
        structure.  If your system uses the opposite pairings
        of include files and structure or some other structure
        to provide directory information, you will need to edit
        the file ./lib/Xm/Xmos.c to be sure that the correct
        file is included and the correct structure is used.

        The default regular expression handling functions used
        by Motif are regex() and regcmp().  On some systems,
        such as our reference machine the HP 9000/370, regex
        and regcmp are found in libPW rather than libc.  If you
        can not link Motif applications because regex and
        regcmp are undefined, look to see if they are in libPW.
        If they are in libPW you can add the flag -lPW to your
        XmExtraLibraries definition in your imake configuration
        file or Makefiles.  Look at the imake configuration
        file for the HP, ./config/hp.cf, to see an example of
        how to add this flag.

        We have added a workaround so that if you do not have
        regex() or regcmp() on your system, you can use
        re_comp() and re_exec() by adding the flag -DNO_REGEX
        to the MotifDefines line in your imake configuration
        file or the DEFINES line in the Imakefile or Makefile
        in the ./lib/Xm directory in order to pick up the
        appropriate functions.

        We have also added a workaround for systems that have
        getwd() rather than getcwd().  This workaround is
        located in Xmos.c and can be used by adding the flag
        -DUSE_GETWD to the MotifDefines line in your imake
        configuration file or the DEFINES line in the Imakefile
        or Makefile in the ./lib/Xm directory in order to pick
        up the appropriate function.

        If you do not have the putenv() library call, you can
        use setenv() by adding the flag -DNO_PUTENV to the
        MotifDefines line in line in your imake configuration
        file or the DEFINES line in the Imakefile or Makefile
        in the ./lib/Xm directory in order to pick up the
        appropriate function.

     Compiler Dependencies

        The -D_NO_PROTO flag is no longer set in the imake
        configuration. This value is now determined in the file
        ./lib/Xm/Xm.h.  If set, it turns off the ANSI C
        function prototyping feature.

        For compilers that do not support the const variable
        type, a NO_CONST flag is used to handle this problem in
        lib/Xm/XmP.h, lib/Mrm/Mrm.h, and clients/uil/UilDefI.h.
        This has been added to MotifDefines in ultrix.cf and
        sun.cf.

     Optimization Problem

        We have noticed that when compiling with optimization
        (-O) on some platforms, compiles take a long time and
        can even seem to hang.  If you are compiling with
        optimization turned on and this symptom occurs, you
        should turn optimization off.  You can do this by
        building with CDEBUGFLAGS equal to no value or to a
        debug value (-g), or by setting the value for
        OptimizedCDebugFlags in your site.def file to some
        value other than -O .

     Using imake on OSF/1

        On the OSF/1 1.0 platform, it is necessary to use the
        -traditional flag with cpp when using imake to make
        Makefiles. If you are not using the -traditional flag,
        you might get an error such as

        ./config/Imake.tmpl:6: # operator should be followed by a macro argument name

        when building a Makefile.  You may also get an error
        such as the following for any Imakefile that has a
        single quote mark in a comment (line 30 in the
        example):

        ./Imakefile:30: unterminated string or character constant

        A change has been made to the file ./config/imakemdep.h
        that  will cause imake, when built using GNU C (gcc),
        to use the -traditional flag. As an alternative to
        changing imakemdep.h you may use the environment
        variable IMAKECPP to point to a cpp program that uses
        the -traditional flag by default.

     Building XConnDis.o on OSF/1

        In order to build the R5 X11 library on an OSF/1 1.0
        platform, you may have to add the inclusion of
        <sys/param.h> to the file XConnDis.c before the
        inclusion of <netinet/tcp.h>.  This is a bug in the
        OSF/1 1.0 include files.

   Motif Makefiles

        Before building Motif, determine whether or not your
        system requires tailoring.  For more information, see
        the previous sections on "Tailoring the Build Process."

        This Motif release contains a minimal top-level
        Makefile and a copy of this makefile called
        Makefile.ini.  Makefile.ini can be used to bootstrap
        your build process, especially if you have accidentally
        damaged all Makefiles or are starting afresh on a new
        architecture with shared sources.

        Makefile.ini provides the Makefile and World targets.
        For example, you can rebuild by issuing the command:

        make Makefile "BOOTSTRAPCFLAGS=-IXTop/X11"

        and then continuing with the rest of the build process
        as outlined below.  For information on the proper value
        for Xtop, see the section "Integrating X11 Release 5
        and Motif".

        The test suites contained in the ./tests directory are
        enormous when compiled.  (On our HP reference machine
        the tests grow to over 600MB when compiled.)  The tests
        are not built by default.  To add the tests to the
        build, add the word tests to the end of the list of
        SUBDIRS in the Imakefile or Makefile at the top of the
        Motif source tree.  The default process builds only the
        Makefile in the ./tests directory itself.

        We have provided the necessary files so that you can
        use the X11 utility imake to create system specific
        Makefiles.  The directory ./config contains the source
        for the imake program as well as rules for creating
        make targets (Imake.rules, supplied by MIT, and
        Motif.rules for Motif-specific rules), two Makefile
        templates (Imake.tmpl and Motif.tmpl) and some system
        dependent configuration files including a default
        configuration file (generic.cf).

        Note:  OSF does not support the imake utility.
               It is provided as a convenience to our
               licensees.

        To create machine-specific Makefiles for your system,
        change directories to the root of the Motif source tree
        and give the following set of commands:

             make Makefile  (creates the toplevel Makefile )

             make Makefiles (walks the source tree creating
                            Makefiles)

             make testsMakefile (creates Makefile in the
                            ./tests directory)

             make includes  (creates the ./X11 directory with
                            header file links)

             make depend    (adds dependency lists to the
                            Makefiles)

        This sequence produces Makefiles that are ready for
        building the remainder of Motif.  The command make -k
        then builds the Motif components.

        At OSF we have found the following sequence of commands
        to be most convenient:

        make Makefile
        make Makefiles
        make testsMakefile
        make includes
        make depend
        make -k

        You can perform the entire make process by issuing one
        of the following commands from the top of the Motif
        source tree:

        make World "BOOTSTRAPCFLAGS=-IXTop/X11"

        or

        make Everything "BOOTSTRAPCFLAGS=-IXTop/X11"

        The difference between these commands is that the World
        target removes all object files from the tree.  You may
        prefer to use make Everything after changing some
        settings in the configuration files.

        Unless you have added the word tests to the list of
        SUBDIRS in the Imakefile or Makefile at the top of the
        Motif source tree, this scheme does not create the
        proper Makefiles in the ./tests directory that would
        allow you to compile each test as needed.  To do this,
        issue the following sequence of commands inside the
        ./tests directory:

        make Makefile
        make Makefiles
        make includes
        make depend

        To install Motif libraries, clients, and header files,
        use the command make install from the top of the Motif
        tree.  If you have built Motif with installed X11R5
        files, as described in the section "Using X11R5
        Installed Libraries and Header Files", the make install
        command might stop at the ./config directory.  The most
        likely cause for this failure is that make depend has
        failed in the ./config directory.  If this happens, use
        the following commands:

        cd config
        make depend "BOOTSTRAPCFLAGS=-I/installed/x11R5/usr/include/X11"

        where /installed/x11R5/usr/include/X11 is the location
        of your installed X11 header files (or your IncRoot/X11
        or ProjectRoot/include/X11).  Then use the command
        make install again from the top of the Motif tree.

        There are several flags in the Makefiles that you may
        need to modify to build Motif correctly on your
        machine.  If you do not use imake, you may have to edit
        all of the Makefiles in the Motif source tree.  Using
        imake, global changes to the entire set of Makefiles
        can be made in the imake configuration file.  If you
        are not using one of the configuration files provided,
        you can write your own system-specific configuration
        file or edit the default configuration file,
        ./config/generic.cf.  Changes to individual Makefiles
        can be made in the Imakefile in the same directory.

        Motif has not been tested with shared libraries.  We
        have added rules modeled after the Xaw library, but
        have not tested them.

   The Motif Build Tree

        The default source build compiles the Motif sources in
        the following order:

             config/            (imake)
             lib/
                  Xm       (the Motif widget library)
                  Mrm      (the resource manager library)
             tools/
                  wml      (the widget meta-language facility)
             clients/
                  mwm      (the Motif window manager)
                  uil      (the uil compiler and callable library)
                  xmbind   (to setup virtual bindings)
             demos/
                  DragAndDrop   (a DragAndDrop demo)
                  clipboard     (an XmClipboard demo)
                  dogs          (a widget demo)
                  helloint      (an internationalized uil demo)
                  hellomotif    (a uil demo)
                  motifanim     (a uil demo)
                  motifburger   (a uil demo)
                  motifgif      (a toolkit demo)
                  motifshell    (a toolkit demo)
                  periodic      (a uil demo)
                  textedit      (an XmText demo)
                  uilsymdump    (a uil demo)
                  view          (an internationalization demo)
                  xmpiano       (a toolkit demo)
                  xmsamplers/
                       xmapdef       (application defined scrolled window)
                       xmdialogs     (dialog sampler)
                       xmeditor      (simple text editor)
                       xmfonts       (font browser)
                       xmforc        (form attachment + rowcolumn)
                       xmform        (form attachment)
                       xmgetres      (resource fetching example)
                       xmlist        (list example)
                       xmmap         (drawingarea + scrolled window)
                       xmprotocol    (window manager protocols)
                       xmter         (shape and animation example)
                  xmtravel      (a comprehensive Motif demo)

        In addition, if you are building all the test suites,
        they are compiled and built by default in the following
        order:

             tests/
                  General       (supporting libraries and binaries)
                  Manual        (holds libraries compiled for manual testing)
                  Toolkit            (tests of Motif widgets)
                  Performance        (tests of Motif performance)
                  Mrm           (tests of the Motif resource manager)
                  uil           (tests of the user interface language)
                  mwm           (tests of the Motif window manager)
                  DragandDrop        (tests for Drag and Drop functionality)
                  XmString      (tests of compound strings)
                  util               (tools for testing)
                  memory        (tests for memory problems)

        You can build the source tree out of order if you wish.
        However, be sure the libraries have finished compiling
        before attempting to link with them.  The libraries
        usually can be built concurrently.  Once the libraries
        are built, the clients and tests can be built
        concurrently.  You must build ./tools/wml before
        building ./clients/uil.  You must build ./clients/uil
        before building any of the UIL demos.

   Lint

        The use of lint is untested in this release.

The OSF/Motif Documentation

        The complete Motif documentation set is made up of the
        following documents:

           * AES User Environment Volume

           * OSF/Motif Programmer's Reference

           * OSF/Motif Programmer's Guide

           * OSF/Motif Release Notes

           * OSF/Motif Style Guide

           * OSF/Motif User's Guide

        These documents are contained in one of the major
        subdirectories ( ./doc ) of the OSF/Motif 1.2 tree.

        Note:  You can print out copies of these
               documents in either PostScript or ASCII
               format. Within each manual directory are
               the subdirectories Output/draft/ps and
               Output/draft/ascii.  These directories
               contain files that you can use
               immediately, without having to build the
               document from scratch.

               The files in the Output/draft/ascii
               subdirectories are intended primarily for
               screen display.  Some of these files
               contain long lines that may be truncated
               when you send them to a printer.

        Also included in this release is OSF's documentation
        tool package, the Documentation Tools Environment
        (DTE), which you can use to rebuild the documentation.
        The DTE is separate from the OSF/Motif offering and is
        not included in any OSF/Motif support, although we
        would appreciate any comments you have about it.  For
        most people, the formatted documents we have provided
        are sufficient, but we supply our working build
        environment for the few of you who may want to rebuild
        some or all of the documents.  In order to rebuild the
        documentation you must first build the DTE.  Building
        the DTE is described in the section "Building the DTE"
        below.  If you intend to work extensively with the
        documentation and the DTE, familiarize yourself with
        the complete documentation contained in the directory
        ./doc/DTE/tools/dtedoc/dte_user.gd.

   Structure of the Documentation Directory Tree

        The ./doc directory contains the following files and
        directories:

        COPYRIGHT       This file contains a general copyright
                        notice for the OSF/Motif documentation
                        set.

        DTE             This directory contains the sources and
                        documentation for the DTE.

        Makefile        This makefile uses the DTE to build the
                        OSF/Motif documentation set.  This
                        makefile expects the DTE to be built
                        and in your path.  It has the following
                        make targets:

                        all         builds all books in
                                    PostScript and ascii with
                                    book-format.

                        ps          builds all books in
                                    PostScript.

                        ascii       builds all books in ascii.

                        clean       removes the Sync
                                    directories from each of
                                    the manual directories.
                                    These directories hold page
                                    number synchronization
                                    information and should be
                                    removed when a documents
                                    file structure changes.
                                    They are automatically
                                    regenerated by the book-
                                    format command of the DTE.

                        clobber     removes the Sync and Output
                                    directories from each of
                                    the manual directories.
                                    The Output directories
                                    contain output ready for
                                    printing.  They are
                                    automatically regenerated
                                    by the book-format command
                                    of the DTE.

        README          This file contains a description of the
                        contents of the ./doc directory.

        aes             This directory contains the source and
                        output files for the AES User
                        Environment Volume.

        man             This directory contains the source and
                        output files for the OSF/Motif
                        Programmer's Reference.

        programGuide    This directory contains the source and
                        output files for the OSF/Motif
                        Programmer's Guide.

        releaseNotes    This directory contains the source and
                        output files for the OSF/Motif Release
                        Notes.

        styleGuide      This directory contains the source and
                        output files for the OSF/Motif Style
                        Guide.

        usersGuide      This directory contains the source and
                        output files for the OSF/Motif User's
                        Guide.

        Some source directories contain a subdirectory called
        graphics.  This directory contains figures for the
        document in PostScript format.  These figures have been
        included in the PostScript output for the manuals in
        this release.  In order to print any of the PostScript
        figure files individually, you need to run a script to
        convert the format.  See the section "Printing
        PostScript Figures" below for more information.

   The man/pointer Directory

        The man directory, which contains the files for the
        OSF/Motif Programmer's Reference, contains a
        subdirectory called pointer.  This directory contains
        pointer files needed on machines without longname
        support.  The pointer files exist to help users resolve
        name conflicts when two manpage names truncate to the
        same name.

        You should install these pointer files into your
        manpage directory so that when you enter man with an
        ambiguous file name you get information from the
        pointer file directing you to an unambiguous name.  The
        pointer files are not needed on machines with longname
        support.

   Building the DTE

        To build and use the DTE you need the following:

           * Approximately 3.5 megabytes of free local storage.

           * A Documenter's Workbench package, including the
             following UNIX system commands:

                - Text processing tools:

                     - nroff

                     - troff

                     - pic

                     - tbl

                     - eqn

                     - neqn

                     - eps (or another PostScript
                       postprocessor.)

                     - tmac directory files (or other directory
                       files); these include the mm and man
                       packages.

             In most cases the following commands are all that
             is needed to build the tools:

             cd /root_path/doc/DTE/tools/src
             make TOP=/root_path/doc/DTE/tools/src MACHINE=`machine` install

             To use the documentation tools, include the
             directory:

             ./doc/DTE/tools/bin/`machine`

             in your path, and set the environment variable
             DTE_LIBDIR to

             ./doc/DTE/tools/libdata

             Note:  The character ` in the commands
                    above is a grave accent or "back
                    quote."

             The makefiles use the makefile variable InstallCmd
             to specify an installation program.  The value of
             InstallCmd is passed down by any makefile to lower
             level makefiles that it invokes.  For example, if
             InstallCmd is set to install, it will use install
             for any programs installed at that level, or at
             lower levels invoked during that execution of
             make.  InstallCmd can be set by editing the
             topmost DTE makefile, or specifying a value for
             InstallCmd on the command line.  The default value
             for InstallCmd is cp.

             We also provide a variable that specifies the make
             command to be used when a makefile needs to invoke
             a lower level makefile.  The variable is MAKE and
             its default value is make.

             The makefile variable TOP specifies the top of the
             tree where the installed DTE will reside.  This
             includes the bin, man, and libdata directories.
             This should always be specified on the command
             line, or the topmost DTE makefile should be
             edited.  The default value for TOP is /tmp/DTE,
             which will at least allow the DTE to be built
             (although it will probably not be installed where
             you want it).

             A more detailed description of the build process
             for the DTE is provided in the DTE subdirectory
             ./doc/DTE/tools/dtedoc in the files dte_build.ps,
             dte_build.sml, and dte_build.txt.

     Long File Names

        The names of some files in the DTE subdirectories are
        more than 14 characters long.  Some of these names are
        not unique to 14 characters.  If your system does not
        support file names longer than 14 characters, you may
        need to rename and reinstall these files, and you may
        need to change references to these files in the DTE
        Makefiles and Description files.  Following are the
        files with names longer than 14 characters:

        ./doc/DTE/tools/src/dte/ifdef-filter/filter_driver.c
        ./doc/DTE/tools/src/dte/ifdef-filter/site_specific.c
        ./doc/DTE/tools/src/dte/ifdef-filter/site_specific.h
        ./doc/DTE/tools/src/dte/ifdef-filter/tests/ifexpressiontest
        ./doc/DTE/tools/dtedoc/style.gd/ch02.10int_ex2.sml
        ./doc/DTE/tools/dtedoc/style.gd/ch02.11ds_ex.sml
        ./doc/DTE/tools/dtedoc/style.gd/ch02.2refintro.sml
        ./doc/DTE/tools/dtedoc/style.gd/ch02.3tempintro.sml
        ./doc/DTE/tools/dtedoc/style.gd/ch02.4comm_temp.sml
        ./doc/DTE/tools/dtedoc/style.gd/ch02.5int_temp.sml
        ./doc/DTE/tools/dtedoc/style.gd/ch02.7comm_ex.sml
        ./doc/DTE/tools/dtedoc/style.gd/ch02.8comm_ex2.sml
        ./doc/DTE/tools/dtedoc/style.gd/ch02.9int_ex.sml

   Rebuilding the Documentation

        For detailed information on using the DTE and Semantic
        Markup Language (SML) macros, with which all OSF
        documents are formatted, please read the Documentation
        Tools Environment User's Guide and Reference, located
        in the directory:

        ./doc/DTE/tools/dtedoc/dte_user.gd

        This section contains only a very brief overview.  In
        most cases all that is needed to build the OSF/Motif
        books is:

        cd /root_path/doc
        make LIBDIR=/root_path/doc/DTE/tools/libdata all

        To rebuild an individual document, familiarize yourself
        with the book-format command by reading the appropriate
        sections of the Documentation Tools Environment User's
        Guide and Reference.  In general, you must change to
        the appropriate directory and specify book-format with
        or without options, with the parts of the document you
        want to build specified as arguments.  These parts are
        listed in the document's Description file.  For
        example, to build a PostScript version of Chapters 2
        and 4 of the OSF/Motif Programmer's Guide, enter:

        cd ./doc/programGuide
        book-format ch02 ch04

   Installing the Reference Pages

        The DTE includes a program, install-ref, that installs
        the reference pages delivered with this release.  Not
        only does this program properly install the SML based
        man pages on your system, but it also allows you to do
        the following:

           - Expand filenames for systems with longname support
             using the -expand option.

           - Reorganize the wide widget resource tables to fit
             better on an 80 column display using the -
             hacktables option.

           - Reorganize the wide widget resource tables to fit
             better on an 80 column display, but only when
             processed with nroff, using the -duptables option.
             This option allows systems that use the same
             reference pages source files for both troff and
             nroff based processing to work properly with both.

        These options and other options to this program are
        fully described in the README file in the directory
        ./doc/DTE/tools/src/installref.  To install the
        OSF/Motif reference pages with reorganized widget
        resource tables on a system that supports longnames,
        enter the following commands:

        cd /root_path/doc/DTE/tools/src/installref
        install-ref -hacktables -expand -offering motif -insert -smart \
        -doc /root_path/doc \
        -man /man_destination \
        -sml /root_path/doc/DTE/tools/libdata/macros

        where man_destination is the directory where you want
        to install reference pages.

        Note:  The install-ref command installs files in
               the destination directory with the same
               file types that they have in the source
               directory.  The names of Motif reference
               page files typically end with the
               character X, and this results in file
               types such as .1X, .3X, and .5X.  Some
               versions of the man command do not
               recognize files whose types differ from
               the traditional man section numbers.  If
               your man command has this limitation, you
               must rename the Motif reference page
               files, removing the final X.  You can
               either rename the Motif source files
               before installing the reference pages or
               rename the installed files after
               installing the reference pages.

   Including PostScript Figures

        Three of the documents provided with OSF/Motif 1.2 (the
        Programmer's Guide, Style Guide, and User's Guide)
        include figures in PostScript format.  These PostScript
        files reside in a graphics subdirectory beneath the
        source text files for each book.

        These files are included directly into the PostScript
        output for each manual using the .P! or .pI troff
        macros.  These macros are interpreted by the eroff
        processor to include PostScript files into the troff
        source.  If you are using Transcript style troff you
        may be able to include the PostScript figures directly
        into the troff source by defining the .P! macro in a
        way similar to the following:

        .de P!
        \\&
        .fl
        \\!%PB
        \\!/showpage{}def
        .fl
        .sy cat \\$1
        \\!PE
        \\!.
        .sp \\$2
        ..

   Printing PostScript Figures

        In their current form, the PostScript figure files are
        only suitable for inclusion within the text files.
        That is, you can print any of the chapters and
        appendixes that include figures and the figures will
        print in the correct positions within the text.
        However, you cannot print any of the figures
        individually in their current form.

        In order to print an individual figure, you need to
        convert it to the printable format using the conversion
        script, print-eps provided in the DTE.  print-eps takes
        a PostScript figure suitable for inclusion in a manual
        and converts it to a format suitable for printing
        separately.  The output of print-eps is sent to the
        standard output and can be piped to a printer command.

        For example, if you want to print the PostScript figure
        list1.ps from from the directory
        ./doc/programGuide/source/graphics, you should enter
        the following command.

        print-eps ./doc/programGuide/source/graphics/list1.ps | lp

        print-eps also takes arguments of -xoff and -yoff to
        specify and offset from the lower left corner in
        inches.

        Be aware that the figure conversion script can be run
        on a single PostScript file or on multiple files.
        Thus, both of the following command lines are
        acceptable:

        print-eps  -xoff  2  -yoff  4  list1.ps  list2.ps | lp

        print-eps  * | lp

The OSF/Motif Test Suite

        The test suite has been substantially restructured
        since 1.1.  Many routines which were repeated in 1.1
        tests have been moved to a library,
        ./tests/Manual/lib/Common/libCommon.a.  These functions
        always begin with the prefix "Common" (for example,
        CommonTestInit). This library must be built in order to
        use the test suite.

        Test automation code, which was provided with
        snapshots, is now provided with the Quality Assurance
        Test Suite shipped with the VTS tape.  The suite
        provided here suports only manual testing.

        In 1.1, the test instructions were included in the .h
        files and were compiled into the tests. In 1.2, the
        instructions are read in at runtime from .Dat files.
        The files exist as .dat files, which become "made" into
        .Dat files by running them through the preprocessor to
        remove unwanted test cases. By default, the make
        command will provide .Dat files tailored for 1.2
        testing. If you are using this package to test 1.1, you
        should make the .Dat files with the command:

                % make DEFINES=-DMOTIF1_1 filename.Dat

        There are sometimes multiple .Dat instruction files for
        each test. In order to get full coverage, you should
        use the RUN scripts in each test directory, which will
        run the tests with all .Dat files and with the needed
        command line arguments.

        A malloc package is available in
        ./tests/lib/Malloc/libMalloc.a. It is a "dirty" malloc,
        which writes a pattern into allocated and freed memory
        so that bugs where memory is used before initialization
        or after freeing, are more likely to cause aborts
        during testing and therefore be found and fixed.  To
        use the malloc package, compile the test suite
        Makefiles with the command:

                % make IMAKE_DEFINES="-DDebugLib" Makefile

        You can modify the amount of information provided by
        the malloc package (and, inversely, the speed at which
        it runs) by setting various environment variables. See
        the README in ./tests/General/lib/Malloc for more
        information.

        The following tests have been added or changed to test
        1.2 functionality:

             tests/Toolkit/Converters/RepType1, RepType2
             tests/Toolkit/List/List2, List9, List10
             tests/Toolkit/Menus/SharedTear1, Menu1, Menu6, OptionMenu1
             tests/Toolkit/Message/MessageBox9
             tests/Toolkit/Select/FileSelect3, SelectBox2
             tests/Toolkit/Text/TextWcs1, TextWcs2, TextFWcs1, TextFWcs2,
                                TextField5, Text12
             tests/Toolkit/Traversal/Navigation5, Navigation6, Navigation9,
                                     Navigation12, Navigation13
             tests/DragAndDrop/* (all tests)
             tests/uil/widgets/templateDia
             tests/Toolkit/Manager/Baseline1, Baseline2

        Tests are evolving to become more interactive in
        nature. To facilitate this, many tests rely on command
        line arguments. To get fullest coverage, use the RUN
        scripts in each test directory, which will run the
        tests with either the full set of command line
        arguments or the set and combination of command line
        arguments which have been found to show the most bugs.
        The only documentation provided is in the RUN scripts
        and the test code itself.

        The Toolkit directory has been reorganized so that each
        subdirectory is owned by a particular OSF QA staff
        member.

        The READMEs in each test directory now describe which
        bugs can be observed in which tests. This should
        facilitate the job of testers by identifying bugs
        already known by OSF.

Quality Initiatives in this Release

   Clean Builds

        Motif 1.2 libraries, clients and demos build cleanly
        with no errors and no warnings on the following
        machines. The Motif tests compile with no errors but
        may produce warnings.  Examples of the compile line
        used are provided.

     DECstation 3100 running OSF/1 1.0.3

        gcc -c -O2 -ansi -I. -I/project/motif/build/X11r5/osf1/X11
        -I../.././X11  -I/project/motif/build/X11r5/osf1 -I../../.
        -DSTRINGS_ALIGNED -DNO_REGEX -DNO_REGCOMP
        -DFUNCPROTO   WmIconBox.c

        Note:  The -ansi flag makes this an ANSI/C
               build. With the flags  -Wall, -pedantic
               and -ansi, some small number of warnings
               remain. We have investigated most of
               these and determined that they require no
               action. However, if valid warnings remain
               they will be fixed in a future patch
               release.

     HP 9000/700 running HP-UX 8.05

        cc -c   -I. -I/project/motif/build/X11r5/hp700/X11 -I../.././X11
        -I/project/motif/build/X11r5/hp700 -I../../.
        -DSYSV -DMALLOC_0_RETURNS_NULL -D_HPUX_SOURCE -DANSI_CPP -Aa
        -DLIBDIR="/usr/lib/X11" -DINCDIR="/usr/include/X11" Xmos.c

        Note:  The -Aa flag makes this an ANSI/C build.
               Consult the man page for the use of the
               -DHPUX_SOURCE flag; it is required under
               this revision of the OS.

     Silicon Graphics Personal Iris running IRIX 4.0.1

        rm -f Mrmcontext.o Mrmcontext.os
        && cc -c  -O -ansi -float  -Wf,-XNh2000 -Wf,-XNd8000 -Wf,-XNp8000
        -woff182 -I. -I/usr/work/X11r5/sgi/X11 -I../.././X11 -I../.././lib
        -I/usr/work/X11r5/sgi -I../../.  -DSYSV -DSYS_DIR -DPORT_NOVFORK
        -DSTRINGS_ALIGNED  -DFUNCPROTO=7 -DNARROWPROTO  Mrmcontext.c
        && ld -r Mrmcontext.o -o Mrmcontext.os
        && mv Mrmcontext.os Mrmcontext.o

        Note:  The warning suppressed by -woff182 is a
               legitimate problem which is not fixed in
               this release. However, we believe there
               is no real risk associated with these
               warnings. The -ansi flag makes this an
               ANSI build. We found this compiler to be
               quite particular.

     SPARCstation 2 running SunOS 4.4.1

        cc -c -O  -I. -I/project/motif/build/X11r5/sun/X11 -I../.././X11
        -I../.././lib -I/project/motif/build/X11r5/sun -I../../.
        -DSTRINGS_ALIGNED -DNO_REGEX -DNO_ISDIR -DUSE_RE_COMP -DUSE_GETWD
        -DNO_MEMMOVE -DNO_ALLOCA -DBOGUS_MB_MAX -DNO_CONST     UilSarVal.c

   Other compile tests

     Build defining -DXTFUNCPROTO

        Using the following compile line on a DECstation 3100
        running OSF/1 1.0.3:

        rm -f UilDB.o
        gcc -c -O2 -ansi -I. -I/project/motif/build/X11r5/osf1/X11
        -I../.././X11 -I../.././lib  -I/project/motif/build/X11r5/osf1
        -I../../.  -DXTFUNCPROTO -DSTRINGS_ALIGNED -DNO_REGEX
        -DNO_REGCOMP -DFUNCPROTO  -DLIBDIR="/usr/lib/X11"
        -DINCDIR="/usr/include/X11" UilDB.c

        Motif clients and libraries compile without errors and,
        at the time of this writing, with a small number of
        warnings in clients/uil/UilParser.c.

     CodeCenter

        All files in clients and libs were loaded into
        CodeCenter without errors. Some small number of
        warnings remain, but all of these have been
        investigated and determined to require no action.

     C++

        The C++ test tool parses the Motif documentation set
        and creates a C++ source file which calls each Motif
        public API function. This test ensures that C++
        applications using the documented Motif API can compile
        and link cleanly.

   Performance Improvements

        The performance goal for Motif 1.2 was to improve
        performance where possible, and at a minimum, not to
        allow it degrade below the performance of 1.1.  We
        restricted our performance testing to three areas:
        aspects of performance obvious to the end-user, for
        example, how long it takes for a popup menu to post;
        data space usage; and memory leaks.

        The user-perceptible performance events, such as
        posting and unposting dialogs, popup menus, etc., are
        comparable or better than they were in 1.1.4. One
        significant improvement in this class is the scrolling
        inside a Scrolled Text containing a large amount of
        text.

        Data space usage has improved throughout the Toolkit,
        particularly for the Text widget. In some cases data
        space usage has reduced by as much as 40 percent. In
        addition, the memory used by the text in a Text widget
        is now correctly reduced when that text is replaced by
        a smaller amount of text.

        Memory leakage has been reduced to a minimum for
        multiple creates and destroys of all Toolkit widgets.
        While the tests continue to show a small amount of
        memory "leaked", we believe that in fact this memory is
        required start-up overhead and not a true leak.

        Late Modification:  Three widgets
                            (File Selection
                            Box, Command,
                            and Drawn
                            Button) have
                            been discovered
                            to leak
                            approximately
                            500 bytes per
                            instance. This
                            problem was
                            discovered too
                            late to be
                            fixed and
                            tested for
                            release 1.2. It
                            will be fixed
                            in a future
                            patch release.

        Both the data space and memory leak tests were
        conducted using the instrumented malloc package
        supplied in the test directory.

   Backward Compatibility

     Binary Compatibility

        Binary compatibility was tested at intervals throughout
        the project by compiling the VTS or certain automated
        test directories into object code using the 1.1.4
        header files, then linking these objects with the Motif
        1.2 libraries, and running the executables. Other tests
        included relinking certain demo and X-client programs
        and running them. All of these tests were satisfactory.
        There were no tests conducted to ensure that
        applications using 1.1 shared libraries can run without
        modification with 1.2 shared libraries.

        Custom widgets subclassed off any Motif widget except
        the Text widget should be binary-compatible with Motif
        1.2.

     Visual and Behavioral Compatibility

        Automated tests were run with comparisons against
        visuals recorded using the Motif 1.1.4 libraries. Once
        all differences between the 1.2 and 1.1.4 versions were
        accounted for, the visuals were rerecorded using 1.2
        visuals and these were used in all subsequent tests.

        We believe that Motif 1.2 is visually and behaviorally
        compatible with Motif 1.1. However, extensive
        improvements were made to the Traversal and Geometry
        Management algorithms, resulting in some differences
        between the versions. We believe that all of these
        differences are because of deliberate bug fixes.

        An example of such a modification is the new policy in
        which an initial size set for a manager widget in an
        application is now honored by the Toolkit.  A 1.1
        application which set, but effectively did not use, an
        initial size for a manager widget will now find the
        initial size honored and the initial layout changed.

   Readiness for Certification

        At the time of this writing, the Motif Validation Test
        Suite (VTS 1.1) was run and passed on the following
        configurations:

           * DECstation 3100 running OSF/1 1.0.3, MIT R4 or R5
             server

           * DECstation 3100 running Ultrix 4.1, MIT R5 server

           * HP 9000/700 running HP-UX 8.05, R4 server

           * SPARCstation 2 running SunOS 4.4.1, R4 server

           * Silicon Graphics Personal Iris running IRIX 4.0.1,
             R4 server

           * HP 9000/700 (HPUX 8.05) hosting monochrome Visual
             X Terminal, R4 server.

   Bug Lists

        On the tape appear two files, OPENBUGS and FIXEDBUGS,
        which contain, respectively, the list of all bugs from
        any version of Motif not yet closed, and all bugs from
        any version of Motif fixed in the 1.2 release. In
        addition, the README file in each terminal test
        directory (ie a directory with no subdirectories of
        tests) now contains a list of open bugs demonstrated by
        the tests in that directory. This enhancement was made
        at membership request and should help testers determine
        which bugs are known and which are new in their ports
        of Motif.

   Test Suite

        The test suite shipped with Motif 1.2 is similar to the
        test suite shipped with Motif 1.1, although it has been
        reorganized and extended for 1.2. Customers who
        purchase the Motif Validation Test Suite will receive
        with that shipment this test suite plus a test suite
        automation package. For more information on the test
        suite automation technology, contact Direct Channels at
        direct@osf.org or by calling (617) 621-7300.
