Intro(Xm) 6 January 1993 Intro(Xm) Name Intro - Identifies the feature changes from Motif 1.0 through 1.2 Description This manual page describes the changes between Motif 1.0, 1.1, and 1.2. Also covered are the additional changes implemented through Motif 1.1.2, 1.1.3 and 1.1.4 and 1.2. This manual page uses this two-stage approach to provide the ability to have a historical record of the modifications to Motif on a release-by-release basis. New features and changes for Motif 1.1 This section summarizes the new features and changes included in the 1.1 release of Motif. AES/UE and style guide compliance Motif 1.1 is compliant with the Revision B of the User Environment Volume of the Application Environment Specification (AES/UE) and with the OSF/Motif Style Guide. This release includes a great many changes; these changes have been incorporated in the AES/UE to achieve compliance. Enhancements included in the AES Motif 1.1 implements many enhancements included in Revision B of the AES/UE These enhancements include: + Improved XmFileSelectionBox widget, containing a separate listing of directories. + Improved keyboard navigation and selection in many widgets, in compli- ance with the OSF/Motif Style Guide. + In Text, primary paste, quick paste using secondary selection, and clipboard cut and paste. + New convenience routines for the List and Text widgets. + Routines for converting between compound strings and compound text. + A routine for creating a compound string in the current language environment. + A routine for calculating default shadow and select colors. + A routine, XmTrackingLocate, to provide a modal interface for selec- tion of a component. + A new Motif Resource Manager (MRM) function for registering names whose scope is restricted to a single hierarchy. The following services are new in Revision B of the AES/UE (not including previously existing services added in Revision B): MrmRegisterNamesInHierarchy XMStringSimpleCreate XmCascadeButtonGadgetHighlight XmStringTable XmCreateWorkArea XmTextCopy XmCvtCTToXmString XmTextCut XmCvtXmStringToCT XmTextGetBaseline XmFontList XmTextGetInsertionPosition XmGetColors XmTextGetLastPosition XmGetPostedFromWidget XmTextGetSelectionPosition XmListAddItems XmTextGetSource XmListDeleteAllItems XmTextGetTopCharacter XmListDeleteItems XmTextInsert XmListDeleteItemsPos XmTextPaste XmListGetMatchPos XmTextPosToXY XmListGetSelectedPos XmTextPosition XmListItemPos XmTextRemove XmListReplaceItems XmTextScroll XmListReplaceItemsPos XmTextSetAddMode XmListSetAddMode XmTextSetHighlight XmMainWindowSep3 XmTextSetInsertionPosition XmProcessTraversal XmTextSetSource XmString XmTextSetTopCharacter XmStringCreateSimple XmTextShowPosition XmStringDirection XmTextXYToPos XmStringHasSubstring XmTrackingLocate The following previously existing services have been added to the AES/UE in Revision B: MrmCloseHierarchy XmRemoveProtocols MrmFetchColorLiteral XmRemoveWMProtocolCallback MrmFetchIconLiteral XmRemoveWMProtocols MrmFetchLiteral XmSetProtocolHooks MrmFetchSetValues XmSetWMProtocolHooks MrmFetchWidget XmStringBaseline MrmFetchWidgetOverride XmStringByteCompare MrmInitialize XmStringCompare MrmOpenHierarchy XmStringConcat MrmRegisterClass XmStringCopy MrmRegisterNames XmStringCreate Uil XmStringDraw XmActivateProtocol XmStringDrawImage XmActivateWMProtocol XmStringDrawUnderline XmAddProtocolCallback XmStringEmpty XmAddProtocols XmStringExtent XmAddWMProtocolCallback XmStringFree XmAddWMProtocols XmStringHeight XmConvertUnits XmStringLength XmDeactivateProtocol XmStringLineCount XmDeactivateWMProtocol XmStringNConcat XmFontListAdd XmStringNCopy XmFontListCreate XmStringSeparatorCreate XmFontListFree XmStringWidth XmRemoveProtocolCallback The WindowObj service has been removed from the AES/UE in Revision B. Other enhancements Motif 1.1 contains a number of enhancements that are not included in the AES/UE. These enhancements include: + New routines for creating simple menus. Each type of menu supported by these routines has two simple creation functions, one with a fixed argument list and one with a variable-length argument list. See the manual pages for routines whose names begin with XmCreateSimple and XmVaCreateSimple (for example, XmCreateSimplePopupMenu and XmVaCre- ateSimplePopupMenu ). + A new widget, XmTextField, and associated convenience routines, for single-line text. + A new routine, XmProcessTraversal, to set keyboard focus. + New routines for getting and setting a routine to calculate default colors. + A new routine for finding the widget that has the destination cursor. + New routines for traversing a font list. + Virtual keysyms in many translation tables that can be bound at run- time to user- or vendor-specific keysyms. + Enhancements to the User Interface Language (UIL), including the fol- lowing: - allowance of forward references for all UIL-named elements - a provision for names for all objects - SINGLE_FLOAT and RGB data types - KEYSYM function - support for enumeration values for resources (UIL and WML) - use of $LANG to determine base character set - support of toolkit object names for gadgets The following new manual pages exist in Motif 1.1 for features not included in the AES/UE: XmCreateSimpleCheckBox XmTextFieldGetMaxLength XmCreateSimpleMenuBar XmTextFieldGetSelection XmCreateSimpleOptionMenu XmTextFieldGetSelectionPosition XmCreateSimplePopupMenu XmTextFieldGetString XmCreateSimplePulldownMenu XmTextFieldInsert XmCreateSimpleRadioBox XmTextFieldPaste XmCreateTextField XmTextFieldPosToXY XmFontListCopy XmTextFieldRemove XmFontListFreeFontContext XmTextFieldReplace XmFontListGetNextFont XmTextFieldSetAddMode XmFontListInitFontContext XmTextFieldSetEditable XmGetColorCalculation XmTextFieldSetHighlight XmGetDestination XmTextFieldSetInsertionPosition XmResolveAllPartOffsets XmTextFieldSetMaxLength XmSetColorCalculation XmTextFieldSetSelection XmSetFontUnits XmTextFieldSetString XmTextField XmTextFieldShowPosition XmTextFieldClearSelection XmTextFieldXYToPos XmTextFieldCopy XmVaCreateSimpleCheckBox XmTextFieldCut XmVaCreateSimpleMenuBar XmTextFieldGetBaseline XmVaCreateSimpleOptionMenu XmTextFieldGetEditable XmVaCreateSimplePopupMenu XmTextFieldGetInsertionPosition XmTextFieldGetLastPosition XmVaCreateSimpleRadioBox Changes to #Include files The AtomMgr.h, Protocols.h, ProtocolsP.h, and MwmUtil.h #include files have been moved from the /usr/include/X11 directory to the /usr/include/Xm directory. Pointer files to the /Xm directory remain in the /X11 directory for backward compatibility through Motif 1.1. The in- stallation procedure removes these old files from the /usr/include/X11 directory and replaces them with links to these new files in the /usr/include/Xm directory for backward compatibility with Motif 1.0. The Motif-specific information has been removed from the Vendor.h and VendorP.h #include files in the /lib/Xt directory; it has been moved to the files Vendor.c and VendorE.h in the /lib/Xm directory. OSF/Motif and the Xt intrinsics Motif 1.1 uses Version 11, Release 4 of the X Window System, including the X11R4 X Toolkit Intrinsics. This section lists some implications of this change for application programs. + Values of type Position and Dimension are now 16-bit quantities. + Applications should use the X11R4 Xt programming interface, as described in Appendix C, ``Conversion Notes,'' in the X Toolkit Intrinsics - C Language Interface guide. In particular, applications should use XtAppInitialize, XtAppCreateShell, and XtAppMainLoop instead of XtInitialize, XtCreateApplicationShell, and XtMainLoop. + Whenever a widget grabs the keyboard, it should use the Xt grabbing functions instead of the Xlib functions, because Xt maintains internal state indicating whether or not the keyboard is grabbed. Applications that do not use the Xt grabbing functions are not guaranteed to work in future versions of OSF/Motif. + Use of some intrinsics functions by applications may conflict with internal use of those functions by Motif 1.1. In such cases Motif provides equivalent functions. In particular, applications should avoid using the following functions: - XtSetKeyboardFocus might break Motif keyboard traversal. An appli- cation should use XmProcessTraversal to set keyboard focus. - XtRemoveAllCallbacks, called from an application, removes all call- backs from a widget, including those added internally by Motif code. An application should use XtRemoveCallback or XtRemoveCall- backs to remove particular callbacks. + Applications should use appropriate Xt routines for managing, realiz- ing, and mapping children. Managing a widget implies that geometry is totally recomputed. Unmanaging and managing a widget simply to make it appear or disappear without geometry changes is inappropriate. An application should use XtMap and XtUnmap for this purpose. Compound string modifications The internal implementation of the XmString data type has changed. Applications that used the internals of the opaque data structure are likely to break. Motif 1.1 has introduced a number of extensions with the intent of pro- viding backward compatibility for the next internationalization release. In particular: + XmStringCreate is included in Revision B of the AES/UE as a temporary-use element and might be changed or removed from the AES/UE in future revisions. + A new routine, XmStringCreateSimple, creates a compound string, deriv- ing the character set from the language environment of a widget passed as an argument. Applications should use this routine instead of XmStringCreate to create a compound string using the ``default'' char- acter set. + Some applications have been using the character set identifier in a compound string as a specific tag meaningful only to the application, not as a real character set identifier. Such applications are likely to be broken in future releases. Internal modifications Changes have been made to the internal Gadget caching code and the clip- board code. These internal changes do not affect the application pro- gramming interface. ANSI C compliance Motif 1.1 is compliant with ANSI C. All external functions are proto- typed. Resource name modifications The names of three resources have been changed because of conflicts with resource names in other widgets. In XmPanedWindow, XmNminimum has been renamed to XmNpaneMinimum, and XmNmaximum has been renamed to XmNpaneMax- imum. In XmText, XmNtopPosition has been renamed to XmNtopCharacter. The mwm selectColor icon box resource has been renamed to troughColor. Default font list modifications The value of the XmNfontList resource now obtains its default dynami- cally. The default value is obtained by looking up the parent hierarchy of the widget for an ancestor that is a subclass of the XmBulletinBoard, VendorShell, or XmMenuShell widget class. If such an ancestor is found, the font list is initialized to the appropriate default font list of the ancestor widget ( XmNdefaultFontList for VendorShell and XmMenuShell; XmNbuttonFontList, XmNlabelFontList, or XmNtextFontList for XmBulletin- Board). The three XmBulletinBoard font list resources obtain their defaults in the same way. Potential XmBulletinBoard modification The XmNtextTranslations resource in XmBulletinBoard exists in Motif 1.1 but may be removed in a future release. BulletinBoard no longer overrides the KReturn translation for multi-line text. Help translation additions Every widget has a translation for KHelp. The Help action calls the XmNhelpCallback callbacks if they exist. If they do not exist, the Help action looks up the parent hierarchy until it finds an XmNhelpCallback and then calls it. Applications no longer need provide translation table entries for <F1>. Traversal modifications Traversal for many controls is enabled by default in this release; the XmNtraversalOn resource defaults to True for these widgets. The default value of XmNtraversalOn is False for the following widgets and gadgets: XmLabel XmSeparator XmLabelGadget XmSeparatorGadget XmScrollBar The default is True for all other widgets (except that it is forced to False in an empty List). This is a change to the following widgets and gadgets: XmArrowButton XmPushButtonGadget XmArrowButtonGadget XmToggleButton XmCascadeButton XmToggleButtonGadget XmCascadeButtonGadget XmList XmDrawnButton XmText XmPushButton This change can affect the layout of applications, as many controls are larger to accommodate the traversal highlight. In most cases the Motif 1.0 appearance can be restored by setting the following resources: *traversalOn: false *highlightOnEnter: false *highlightThickness: 0 Changes to XmNmnemonic resources The type of the XmNmnemonic resources in XmLabel, XmLabelGadget, and XmRowColumn has been changed to KeySym. The size of this type is dif- ferent from that of the Motif 1.0 type, char, for these resources. Mnemonic underlining To be underlined when a mnemonic is used, a character in a label string must match the mnemonic exactly. However, to activate the mnemonic, the user can press either the shifted or the unshifted key that corresponds to the mnemonic. Removal of MrmFetchInterfaceModule The MrmFetchInterfaceModule routine has been removed in Motif 1.1. The widget Meta-Language facility A new widget meta-language (WML) facility generates components of the user interface language (UIL) compiler. The file /usr/lib/X11/tools/wml/motif.wml is a specification based on lex and yacc and is used to describe toolkit classes and resources. The file is a hierarchical description of toolkit widgets, including their inheritance relations. This information is used in generating the UIL compiler and is included for reference only. Miscellaneous tips + If apps were not using Application Contexts, they should be. + The form widget geometry manager has changed, it is much less forgiv- ing of circular references, and constraints. + Resource name change for scale widget processing directions. + The focus policy is totally different, if apps use XmGrabFocus they are not going to port clean, use XmProcessTraversal. + Rules for what may be put into a RadioBox have changed, use ToggleBut- tonGadgets, not ToggleButtons. OSF/Motif 1.1.2 The following list descibes some of the major changes and bug fixes in Motif 1.1.2: + corrected code to allow specification of a bitmap filename for the XtNiconPixmap resource of the WmShellWidgetClass + split iconPlacementMargin resource into two separate (horizontal and vertical margins) resources + implemented window resizing relative to the current mouse position + added ability to lock focus on a window in pointer mode + implemented horizontal capability to Paned windows + added function to return owner of the last item placed on a clipboard + modified widgets to check validity of resources passed to them + revised code to display margins properly when XmNscrolledWindowMar- ginWidth and XmNscrolledWindowMarginHeight are set after widget crea- tion + corrected memory leak created when dialog shells are destroyed + reformatted UIL error and warning messages + implemented ability to place a non-integer value above slider on a scale + revised code so double clicking correctly sets the selectedItemCount resource in a list + modified shadowing of rectangular border of XmArrowButton and added appropriate resource + eliminated warning when setting ResInd via resource file + revised code to allow XmUnhighlightBorder and XmHighlightBorder to properly set/reset highlight flag + corrected Drawing Area to draw shadowThickness properly + revised code so menus can always be traversed from a menuBar + revised RowColumn widget to work properly with ArrowButtons + corrected RowColumn to modify its children's border instead of adding entryBorder to its children's widget's window + modified code so toggle button widgets call proper callback when a click is executed in its border + corrected RowColumn geometry management to allow for a margin width setting of 1 + revised XmNentryCallback to re-vector activate callback for Arrow, Drawn, Toggle and Push buttons + revised Arrow to return event in callback structure when activated by keyboard + modified Widgets to pass a widget pointer as first parameter of XtCallCallbackList + improved help callbacks in Message, Selection, File, Frame, ScrollBar, and Toggle management + revised code to allow translation for Btn 3 to execute popup + revised XtGetValues to give correct XmNscaleMultiple values + corrected focus problems when a non-TabGroup control is activated + eliminated segment faults and X errors while in multi-edit mode in text widgets + modified Rowcolumn widget so RadioBoxes with XmNpacking tight and XmNnumColumns work correctly + improved widgets to copy Mnemonic CharSet(and others) for user when GetValue is called + improved text widget to keep value of the vertical scroll bar when changed from singlelineedit to multiline + modified BorderWidth so it can now be set correctly using XtSetValues + corrected text widget to give proper callbacks when executing a sec- ondary select + revised text widget to display text with singlelineedit and set size + corrected XmNlistVisibleItemCount to work in a command widget + modified MenuBar to provide correct number of callbacks upon mouse activation + changed XmCvtXmStringToCT declaration to return correct type + corrected prototyping for several XmCreate functions + corrected Bulletinboard code so ``default button'' indicator does not move dynamically + modified code so ToggleButton Gadget from a pulldown from a cascade in a menubar produces proper callbacks + corrected default value of XmNmessageString in a MessageBox + revised MenuBar to handle arming of cascades properly + corrected default value of highlightThickness for Drawn Button + corrected XmProcessTraversal to work when setting a MenuBar + modified PushButton to retain correct highlightThickness value + prevented access to TraversalOn resource in a separator or gadget + revised text widget to use XmInternAtom instead of XInternAtom + changed resources that cannot have a value of 0 to unsigned ints + corrected Text widget so tabs work properly + revised List code to prevent core dumps when deleting items + improved RowColumn so Option Menu execution results in correct arming/disarming callbacks + revised RowColumn Option Menu code to use shadowThickness when decid- ing size of option button + revised MRM to register XmTextField and XmCreateWorkArea classes + modified XmProcessTraversal to work correctly when a widget with focus is destroyed + corrected DialogShell X and Y values after ErrorDialog creation + modified SetValues to work with shadowThickness resources for Buttons + revised code so ScrolledW, Frame, and RowColumn managers work correctly with Dialog Shell children + changed representation type of XmRDimension to XmRHorizontalDimension for DrawnB, Sash, and ScrolledW + modified code to enable KActivate translation in all lists to work consistently + revised SetValues to handle XmNorientation in a Scale Widget + corrected RowColumn widget's numColumns resource from an OptionMenu to show correct value + corrected Scale's ability so it is insensitive to input using XtSet- Value after creation + changed behavior of KActivate to result in arm, activate, and disarm callbacks + adjusted RowColumn code to adjust radioBehavior and packing properly + modified CascadeButton widget in Menubar to arm proper callbacks with submenus + corrected RowColumn OptionMenu shadowThickness resource to be 0 at Initialize + revised CascadeButton in Option Menu to use its own shadowThickness instead of shadowThickness of RowColumn + removed memory leak in GetValuesHook of Text widget + corrected Scale Widget so XmNShadowThickness may be initialized to zero + revised PopupMenu to use correct X and Y borderWidth values + allowed OptionMenu's CascadeButtonGadget to use own shadowThickness resource to draw its shadow; previously, shadowThickness of parent was used + eliminated XmWarnings when creating CascadeBG with/without submenu under pulldown in OptionMenu + revised code to ensure proper setting of scaleMultiple value in Scale widget + enabled Text widget to refresh when backspacing in SINGLE_LINE_EDIT mode + eliminated unpredictable behavior when adding scrollbars to a scrolled window + disallowed having Toggle Buttons as children of a Pulldown in an Option Menu + improved DrawingArea to issue proper inputCallbacks on keyboard and mouse input + corrected ScrolledText to work properly when ScrollVertical is set to false and resizeHeight is set to True + revised Scale to accept changes to XmNscaleMultiple after change to XmNminimum by SetValues + modified PushBG to eliminate memory leak + revised form to handle topOffsets correctly on a Form child whose topOffset has not been explicitly set + revised Separator Gadget to use proper highlightThickness + changed definition of arrow keys for vertical Menubars + enabled XtSetValues to work properly with a non-realized ToggleButton + revised RowColumn to call proper callbacks when posting an OptionMenu and traversing to a Pushbutton followed by activating the keyboard + modified XmList to handle callbacks properly from its scrollbars after a destroy + corrected File Selection Dialogs to work correctly when XmNnavigation- Type is changed to EXCLUSIVE_TAB_GROUP via SetValues() + eliminated 'sliderSize < 1' warnings and protocol errors when Scrol- ledList and ScrolledText are resized such that the scrollbar width equals zero + modified code to allow the XmNisHomogeneous resource to be used accu- rately when creating an OptionMenu + corrected PushButtons to convert to unit Type when doing GetValues on highlightThickness + corrected OptionButton size in option menu which resides in a shell that uses a defaultFontList + modified OptionMenu to relieve clipped OptionButtons + corrected redisplay of MessageBox when it unmanages parts of its widget + corrected wordwrap in XmCreateScrolledText + eliminated loss of client after call to XSetIconName for a top level window that is not minimized when useIconBox is not true + modified code to allow creation of a button with XmStringCreateSimple after creation of an OptionMenu whose labelString calls XmStringCreate using XmSTRING_DEFAULT_CHARSET + revised code to allow application using XmAddTabGroup() to set their tab groups correctly + installed warnings if attempts are made to place Toggle Buttons in OptionMenus + modified code so XtDestroy() inside Activate callback of buttons suc- cessfully works with keyboard activation + modified code to handle Btn3 activation correctly when traversing in a popped-up menu + corrected behavior when calling XmRemoveTabGroup on current tab group + corrected highlighting of Popup menus OSF/Motif 1.1.3 The following are descriptions of changes we have provided for the Motif 1.1.3 release: + Corrected List to check for its parent's being a subclass of a Scrol- ledWindow instead of a ScrolledWindow. + Revised MessageBox to align messageString with pushbuttons. + Modified code to base size of togglebutton on largest dimensions of all pixmaps. XmToggleButton will now work correctly if XmNlabelPixmap and XmNselectPixmap are different sizes. + Revised UrmCreateWidgetInstance to pass proper callback struct to creation callbacks. + Removed use of XmNshadow resource in DrawingArea. + Modified XM functions with no parameters to be declared as voids according to ANSI C. + Revised ScrollBar's SetValues routine to properly handle XmNpro- cessingDirection and XmNorientation combinations. + Modified FileSB to disallow selection of an empty file area of a Selection Dialog. + Corrected ScrolledW to initialize the InInit field in the swindow structure properly, which will avoid unpredictable behavior when add- ing scrollbars to the scrolled window. + Modified TextStrSrc Replace routine to avoid possible core dump when copying tvcb.text->ptr to block->ptr. Routine now checks their lengths and acts accordingly. + Prevented NULL dereference in Traversal's _XmEnterGadget and _XmLeaveGadget. + Revised Dialog Shells created by XmCreate[...]Dialog to acknowledge SetValue of mappedWhenManaged: false. + Corrected Paned Window code to check for managed flag before resizing children in ChangeManaged. + Revised ``No ext to pop'' error message to a message more meaningful. + Modified Form to allow geometry requests from children if the allowed form size is not the desired one but a larger one. + In some cases the form widget will not correctly size and position widgets. Closed because the problem was caused by operator error. + Modified List to correctly calculate visibleItemCount using the widget height. + Initialized block.format in XmText to prevent bogus call_data values from modifyVerifyCallback caused by setting the block.format to a bad XmTextFormat value. + Eliminated core dumps from ResConvert caused by using incorrect system calls which copy strings into strings 1 byte too small. + Revised OptionMenu to show correct value when setting subMenuId at SetValues rather than Initialize. + Modified Toggle Button height to match Pushbutton height of the same font in a menu. + Reinitialized cursor position and horizontal offset resources in XmTextFieldSetString when the new string is placed into the text field. Previously these resources were not reinitialized resulting in improper echoing of the last inserted character. + Eliminated RowColumn failures caused when doing several SetValues on the subMenuId of an option menu. + Defined XmIsDrawingArea in DrawingA.h. + Improved memory allocation by XChangeProp during a clipboard cut. + Prevented segmentation fault in VertClosest() in NavigMap by changing navigation to use dynamic storage instead of a static array (256). + Modified Scrolled Text to prevent scrolling one line on each exposure event. + Improved fill mode procedure for Toggle Buttons on monochrome screens. + Revised UIL to allow popup menus as controls of primitive widgets. + Eliminated memory leak in XmNavigate. + Modified XtRemoveGrab to eliminate warning messages when a modal form dialog is deleted. + Improved Sash to use XUniqueContext to manage sash cursors on multiple displays in function Realize. + Eliminated possible core dump in List caused by a call to DrawList() with a negative top_position value, resulting in a negative index into an array. + Revised code to eliminate core dump when changing background on a Text Field with focus. + Eliminated a memory leak in TextField, enabling ModifyVerify to work properly. + Allowed Manager to accept an unspecified pixmap. + Modified code enabling WM_SAVE_YOURSELF property in WM_PROTOCOLS atom to be used properly. The user's protocol callback was never entered. + Modified Text code to cut and paste proper length. Text was cutting one character too much. + Corrected code to reset visibleItemCount if there are no items in the list. List will now display all items when size is forced larger than visibleItemCount. + Revised RowColumn code to properly initialize boolean data. + Modified NavigFieldGet macro to replace NULL with zero. + Enabled Text widgets to resize back to a single row when necessary. + Eliminated possible core dump by a Gadget child of DrawingArea in override shell due to XmGetFocusData returning NULL. + Revised DrawingArea to correctly handle XmRESIZE_GROW. + Prevented MRM problems resulting from a hash function returning a negative value to use as an index into a hash table. + Modified List to ensure that XmNselectedItemCount specifies correct number of selected items. + Corrected RowColumn/OptionMenu/Desktop destroy code. Xt will now prop- erly handle synchronous destroys. + Corrected 3D appearance of PushButton disarmed by call to XtCallAc- tionProc. + Added check for nonNULL w_return to MrmFetchWidgetOveride, allowing MRM to return MrmFAILURE when fetching a widget already fetched. + Modifed Text to enable XtSetValues of XmNwordWrap to properly update widget state. + Corrected code to enable XtPopdown to withdraw a window iconified with MWM. + Eliminated potential Modal Dialog core dump after creating and delet- ing top level shell. + Revised convenience functions for dialogs and menus to pass user argu- ments to shells properly. + Corrected File Selection Box to handle selection of empty directories, whose names previously disappeared. + Revised code to enable Toggle button to completely clear when disarmed but not activated. + Corrected Visual allowing default foreground in non-root colormaps to always show proper color. + Revised code to prevent a scrolledList from disappearing after a resize to zero. + Modified _XmTextFieldImplementNewValue to enable TextF to redraw anchor cursor properly when new string is set. + Revised computation of TextField geometry when XmNresizeWidth is set to True. + Modified procedures in Text to prevent time consuming disk searches after setting new XmNforeground. + Corrected code to prevent DrawingArea from ignoring the size the user has set. + Corrected code to allow TextF to process input correctly when it has grown to the maximum size and resizeWidth is set to true. + Modified Arrow Button to display correct topShadowColor and bottomSha- dowColor. + Modified XmString to enable XmFontListAdd() to return proper fontList when a newly added fontList matches one in the cache. + Modified code to allow user's XmNtranslation resource to work with ScrolledWindow's ClipWindow. + Corrected problem of when a regular string contained multiple newline characters, the corresponding XmString contained one newline. + Corrected scrolling in List when DefaultAction is NULL event. + Revised File Selection Box dirSearchProc() code to update the direc- tory list properly. + Modified ToggleButton to allow XmONE_OF_MANY resource with same topShadowColor, bottomShadowColor & selectColor to produce proper tog- gling effect. + Revised RowColumn to enable setting subMenuId and menuHistory simul- taneously in an option menu. + Revised Labels code to allow Toggle buttons which have different sized label and select pixmaps to appear clean. Moved definiton of XmCR_PROTOCOLS to Xm.h from Protocols.c. + Corrected Vendor Shell to be able to process correctly when a client registers substructure notify events on a shell. + Revised code to enable StringToShellUnitType converter to handle ``pixels.'' + Modified ListKdbDeSelectAll to call the appropriate selection callback when it is used in an XmEXTENDED_SELECT type list in Add Mode. + Modified List to remove BrowseScroll() to prevent possible List core dump. + Eliminated possible core dump when specifying a destroyCallback on a MessageDialog. + WORK AROUND: Protocol callbacks pass back Protocol widget instead of Shell widget. Problem Description: In XmAddProtocolCallback, XtAddcallback is called passing the protocol widget (i.e. the callback is part of the protocol widget). ProtocolHandler calls XtCallCallbackList passing the shell widget, expecting that the shell widget will be passed to the callback. However, R4 Intrinsics pass the widget used to add the callback, not the widget passed to XtCallCallbackList. This is really a bug in the R4 Intrinsics. Workarounds: 1. Since the Shell widget is the parent of the protocol widget, to get the Shell widget, just do a XtParent() of the protocol widget that is passed back. 2. Pass the Shell widget as the 'closure' argument to XmAddProtocolCall- back(). OSF/Motif 1.1.4 The following are descriptions of changes we have provided for the Motif 1.1.4 release: + Revised code to enable _MOTIF_WM_INFO property field to return proper value when queried. + Corrected code to shrink button size when acceleratorText resource is set to NULL. + Modified code to allow MenuShells created via menu convenience func- tions to adopt the defaultFontList of the AppShell if one is set. + Enabled labels to be drawn correctly after expose events. + Allowed focus to transfer to proper windows after exiting from a win- dow or application in explicit focus mode. + Corrected TextFields to handle forward-word actions properly. + Dialog box windows now show proper decorations. + Eliminated Xt errors when Popups are deleted. + Horizontal scrollbars now accurately resize when ScrolledText is edited. + Modified code according to ICCCM standards. Text widgets now return property type NULL after a successfully completed DELETE or INSERT_SELECTION request on a selection. + Eliminated processing problems when a Cascade Button is the only child of a BullentinBoard. + Corrected code to enable sash to display properly regardless of paneMax and paneMin values. + Modified XmList code to prevent problems when deleting and replacing items. + Modified UIL compiler to accept C-style comments. + Corrected visual initialization when specifying XmNmenuHistory at OptionMenu initialization time. + Revised code enabling ScrolledText widget within a MainWindow to scroll horizontally correctly. + Modified code to allow Dialog shells to iconify properly when managed prior to being realized. + Pixmaps now appear centered within toggle buttons. + Modified code to enable ScrolledText scrollbars to properly track the cursor position. + Revised TextF.c to include Xm/AtomMgr.h instead of X11/AtomMgr.h. + Improved UIL to accept tokens longer than 128 characters and issue warnings if tokens are longer than 132 characters. + Revised code to correct problems when destroying one of two cascade submenus of a pulldown menu. + Corrected code to enable arrow keys in multi-line text widgets to select text correctly. + Modified UIL tests to handle bitmap data properly. + Eliminated bus errors caused by XtDestroyWidget() being called from a MainWindow. + Prevented RowColumn widget core dumps when its children define illegal characters as their mnemonic characters. + Revised RowColumn to properly use XmNmenuPost resource. + Corrected code to allow several popup menus to be created under the same parent without affecting Button bindings. + Modified code to eliminate retained underlining after a quick transfer when text source is shared. + Prevented access violations when destroying a RowColumn which contains OptionMenu label gadgets made via XmStringCreateLtoR. + Modified Text scrolling behavior to properly handle motionVerify call- back events. + Installed a defaultFontList for gadgets in an override shell. + Corrected RowColumn to correctly resize its children. + Eliminated crashes from _XmGetFocusData by expanding low bounds. + Corrected action of <Alt> KQuickPaste in Text Fields. + Revised RowColumn to properly handle toggling of pulldowns by using an accelerator. + Removed memory leak in XmTextReplace. + Removed various memory leaks in XmText and XmTextField. + Eliminated possible UIL compiler Error messages and terminations due to inability to perform calloc in UilSarVal.c. + Modified code to eliminate possible server errors due to conversion of invalid fonts. + Resolved various problems with Simple functions, particularly with resource converters. + Modified PanedWindow to allow sash default traversal to be ON. + Modified XmTextSetString to display correct data after replacing con- tents of a scrolled text. + Corrected XmStringNConcat behavior to agree with documentation. + Modified RowColumn to accept rapid clicks for posting optionmenu. + Prevented users from interactively resizing windows if clientFunctions prohibit interactivePlacement. + Modified code to prevent applications from hanging which use a full application modal dialog box. + Revised code to allow Scale Widgets to appear in a RowColumn when the topShell is realized before the RowColumn. + Prevented fatal Xt toolkit errors generated when creating a Label- Gadget as a child of a ScrolledWindow. + Corrected cursor positioning when XmText generates a motionVerify callback on a delete-to-end-of-line action. + Prevented crashes when UIL compiler processes uil programs which con- tain bugs. + Modified positioning of pulldown menus created inside a dialog shell. + Modified RowColumn to correctly position child when XmNentryBorder is set to a non-zero value. + Corrected sizing problems when packing is changed from PACK_COLUMN to PACK_TIGHT in a RowColumn with several children and two columns. + Eliminated X errors generated when setting XmNshowAsDefault resource in XmPushButton. + Prevented RowColumn from using numColumns resource when XmNpacking is set to XmPACK_TIGHT. + Revised XmTrackingLocate to function properly when button is pressed on a label. + Corrected parsing by Uil function xbitmapfile. + Revised ScrolledText and ScrolledList to properly handle NULL widget names. + Corrected focus problems with children of a RowColumn. + Prevented BBoard seg faults after XmGetDefaultFontList is called with fontListType set to NULL. + Modified XmProcessTraversal to behave properly when called in an empty ScrolledWindow. + Revised scrollList code to allow multiple slider changes. + Modified geometry management in BulletinBoards to retain margins after realizing parent AppShell. OSF/Motif 1.2 This section describes new functionality and enhancements that affect the Motif Toolkit as a whole. + The following header files were in Release 1.1 of Motif, but are now obsolete in Release 1.2: + ExtObject.h + Traversal.h + VaSimple.h + VendorE.h + VendorEP.h + A new public header file, XmAll.h, has been added to Motif. This file just includes all the documented header files. + X11R5 uses the concept of an input method (IM), which provides a layer of mapping between the keys typed in by users and the corresponding characters passed to an application. The Motif Toolkit has been enhanced to support transparent connection to an input method for those languages that require an input method. The VendorShell widget has been modified to support the geometry management of an Off-the- Spot input method. + Several changes have been made to the Text and the TextField widgets, including interfaces that support both fixed-width wide characters (wchar_t) and variable-width multibyte characters (char *). + The Compound String routines have been modified to handle locale- encoded strings and to integrate the X11 R5 fontset capability. + An XmDisplay object has been added to support per-display data and resources. An XmScreen object has been added to support per-screen data and resources. + The Motif Toolkit now supports the drag and drop metaphor for data interchange. Refer to the man pages for information on the drag and drop interface. + Motif now supports TearOff Menus, the user can retain menus on the display for subsequent selections. Each tearable menupane has a tear- off button. When the mouse drag button is pressed on the tearoff but- ton, the pane tears off and can be dragged and then placed by releas- ing the mouse drag button. The window manager surrounds the tearoff menupane with a menu button and a title. + In Revision 1.2, a title widget can be specified in a Frame widget. New constraint resources XmNchildType, XmNchildHorizontalAlignment, XmNchildHorizontalSpacing, and XmNchildVerticalAlignment have been added for specifying the position and alignment of the title in the Frame. + A new resource, XmNaudibleWarning, has been added to the VendorShell widget to specify whether an audible cue should accompany a warning message. Text widgets will determine the value for this resource from the value of XmNaudibleWarning. + Users can specify default background color and thresholds for shadow calculation on a per screen basis with these 3 new resources on the XmScreen widget: + XmNlightThreshold + XmNdarkThreshold + XmNforegroundThreshold + A new function, XmChangeColor, changes the background and other colors for a specified widget. + In Motif 1.2 it is possible to traverse via the keyboard to some widg- ets that did not support traversal in previous releases. For example, inside a tab group, it is now possible to use the arrow keys to traverse to all control descendants that are not contained within a nested tab group and are eligible to receive focus, even if the con- trols are not direct children of the tab group. + To support better interaction with keyboard traversal, Revision 1.2 includes these new functions: + XmGetFocusWidget + XmGetTabGroup + XmIsTraversable + XmIsVisible + XmGetVisibility + The XmTrackingLocate function includes the following modifications: + It fields all events, not just the button press. + It returns on any keystroke or a button press. + It can be called for non-sensitive widgets. + A new function, XmTrackingEvent, has been added, which is just like XmTrackingLocate, except that it returns a pointer to the X event. + Several new functions have been added for managing representation types, including: + XmRepTypeRegister + XmRepTypeAddReverse + XmRepTypeValidValue + XmRepTypeGetRegistered + XmRepTypeGetId + XmRepTypeGetNameList + XmRepTypeGetRecord These functions would be useful for people who want to define new resource converters that use an enumerated set of values. + Several corrections have been made to XmClipboard function parameters. These are binary compatible, but may cause warnings when recompiling a Motif application. Changes were (char) to XtPointer, int to long, (int) to (long). Functions affected are: + XmClipboardCopy + XmClipboardCopyByName + XmClipboardInquireCount + XmClipboardInquireFormat + XmClipboardRegisterFormat + XmClipboardRetrieve + XmClipboardStartCopy + XmClipboardWithdrawFormat + XmCommandGetChild has now been corrected so that it accepts XmDIALOGWORKAREA as a value for the child argument. + The XmNvisibleItemCount resource has been changed so that the default value is dynamic, based on the item count and the height. + A new function, XmScrollVisible, scrolls an automatic scrolled window to make a partially or completely obscured widget visible. + A new resource, XmNtraverseObscuredCallback, specifies a list of call- backs that are called when a traversal event is requested to a non- visible widget. A new callback structure, XmTraverseObscuredCallback- Struct, has been added to support this callback. The following table lists functions new to Motif 1.2 and the manual page on which it discussed. ________________________________________________________________________________ Function Manual Page ________________________________________________________________________________ XmChangeColor XmChangeColor(Xm) XmCreateDragIcon XmCreateDragIcon(Xm) XmCreateTemplateDialog XmCreateTemplateDialog(Xm) XmDragCancel XmDragCancel(Xm) XmDragStart XmDragStart(Xm) XmDropSiteConfigureStackingOrder XmDropSiteConfigureStackingOrder(Xm) XmDropSiteEndUpdate XmDropSiteEndUpdate(Xm) XmDropSiteQueryStackingOrder XmDropSiteQueryStackingOrder(Xm) XmDropSiteRegister XmDropSiteRegister(Xm) XmDropSiteRetrieve XmDropSiteRetrieve(Xm) XmDropSiteStartUpdate XmDropSiteStartUpdate(Xm) XmDropSiteUnregister XmDropSiteUnregister(Xm) XmDropSiteUpdate XmDropSiteUpdate(Xm) XmDropTransferAdd XmDropTransferAdd(Xm) XmDropTransferStart XmDropTransferStart(Xm) XmFontListAppendEntry XmFontListAppendEntry(Xm) XmFontListEntryCreate XmFontListEntryCreate(Xm) XmFontListEntryFree XmFontListEntryFree(Xm) XmFontListEntryGetFont XmFontListEntryGetFont(Xm) XmFontListEntryGetTag XmFontListEntryGetTag(Xm) XmFontListEntryLoad XmFontListEntryLoad(Xm) XmFontListNextEntry XmFontListNextEntry(Xm) XmFontListRemoveEntry XmFontListRemoveEntry(Xm) XmGetDragContext XmGetDragContext(Xm) XmGetFocusWidget XmGetFocusWidget(Xm) XmGetPixmapByDepth XmGetPixmapByDepth(Xm) XmGetTabGroup XmGetTabGroup(Xm) XmGetTearOffControl XmGetTearOffControl(Xm) XmGetVisibility XmGetVisibility(Xm) XmGetXmDisplay XmGetXmDisplay(Xm) XmGetXmScreen XmGetXmScreen(Xm) XmIsTraversable XmIsTraversable(Xm) XmListAddItemsUnselected XmListAddItemsUnselected(Xm) XmListDeletePositions XmListDeletePositions(Xm) XmListGetKbdItemPos XmListGetKbdItemPos(Xm) XmListPosSelected XmListPosSelected(Xm) XmListPosToBounds XmListPosToBounds(Xm) XmListReplaceItemsPosUnselected XmListReplaceItemsPosUnselected(Xm) XmListReplaceItemsUnselected XmListReplaceItemsUnselected(Xm) XmListReplacePositions XmListReplacePositions(Xm) XmListSetKbdItemPos XmListSetKbdItemPos(Xm) XmListUpdateSelectedList XmListUpdateSelectedList(Xm) XmListYToPos XmListYToPos(Xm) XmMapSegmentEncoding XmMapSegmentEncoding(Xm) XmRegisterSegmentEncoding XmRegisterSegmentEncoding(Xm) XmRepTypeAddReverse XmRepTypeAddReverse(Xm) XmRepTypeGetId XmRepTypeGetId(Xm) XmRepTypeGetNameList XmRepTypeGetNameList(Xm) XmRepTypeGetRecord XmRepTypeGetRecord(Xm) XmRepTypeGetRegistered XmRepTypeGetRegistered(Xm) XmRepTypeInstallTearOffModelConverter XmRepTypeInstallTearOffModelConverter(Xm) XmRepTypeRegister XmRepTypeRegister(Xm) XmRepTypeValidValue XmRepTypeValidValue(Xm) XmScrollVisible XmScrollVisible(Xm) XmStringCreateLocalized XmStringCreateLocalized(Xm) XmTargetsAreCompatible XmTargetsAreCompatible(Xm) XmTextDisableRedisplay XmTextDisableRedisplay(Xm) XmTextEnableRedisplay XmTextEnableRedisplay(Xm) XmTextFieldGetSelectionWcs XmTextFieldGetSelectionWcs(Xm) XmTextFieldGetStringWcs XmTextFieldGetStringWcs(Xm) XmTextFieldGetSubstring XmTextFieldGetSubstring(Xm) XmTextFieldGetSubstringWcs XmTextFieldGetSubstringWcs(Xm) XmTextFieldInsertWcs XmTextFieldInsertWcs(Xm) XmTextFieldReplaceWcs XmTextFieldReplaceWcs(Xm) XmTextFieldSetStringWcs XmTextFieldSetStringWcs(Xm) XmTextFindString XmTextFindString(Xm) XmTextFindStringWcs XmTextFindStringWcs(Xm) XmTextGetSelectionWcs XmTextGetSelectionWcs(Xm) XmTextGetStringWcs XmTextGetStringWcs(Xm) XmTextGetSubstring XmTextGetSubstring(Xm) XmTextGetSubstringWcs XmTextGetSubstringWcs(Xm) XmTextInsertWcs XmTextInsertWcs(Xm) XmTextReplaceWcs XmTextReplaceWcs(Xm) XmTextSetStringWcs XmTextSetStringWcs(Xm) XmTrackingEvent XmTrackingEvent(Xm) XmTranslateKey XmTranslateKey(Xm) XmWidgetGetBaselines XmWidgetGetBaselines(Xm) XmWidgetGetDisplayRect XmWidgetGetDisplayRect(Xm) See also Xlib - C Language X Interface