Identifies the feature changes from Motif 1.0 through 1.2
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
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:
widget, containing a separate listing of directories.
Improved keyboard navigation and selection in many
widgets, in compliance 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
A routine for creating a compound string in the current
A routine for calculating default shadow and select colors.
to provide a modal interface for selection 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):
The following previously existing services have been added
to the AES/UE in Revision B:
service has been removed from the AES/UE in
Motif 1.1 contains a number of enhancements that are not
included in the AES/UE. These enhancements
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
and XmVaCreateSimplePopupMenu ).
A new widget,
and associated convenience
routines, for single-line text.
A new routine,
to set keyboard focus.
New routines for getting and setting a routine to calculate
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 runtime to user- or vendor-specific
Enhancements to the User Interface Language (UIL),
including the following:
allowance of forward references for all UIL-named elements
a provision for names for all objects
SINGLE_FLOAT and RGB data types
support for enumeration values for resources (UIL and
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:
Changes to #Include files
#include files have been moved from the
directory to the
directory. Pointer files to the
directory remain in the
directory for backward
compatibility through Motif 1.1. The installation procedure
removes these old files from the
and replaces them with links to these new files in the
directory for backward compatibility with Motif 1.0.
The Motif-specific information has been removed from the
#include files in the
directory; it has been moved to the files
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
instead of XtInitialize, XtCreateApplicationShell,
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
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 application should use
to set keyboard focus.
XtRemoveAllCallbacks, called from an
application, removes all callbacks from a widget,
including those added internally by Motif code. An
application should use
to remove particular callbacks.
Applications should use appropriate Xt routines for managing,
realizing, 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
for this purpose.
Compound string modifications
The internal implementation of the
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 providing backward compatibility for the next
internationalization release. In particular:
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,
creates a compound
string, deriving the character set from the language
environment of a widget passed as an argument. Applications
should use this routine instead of
to create a compound string using the
``default'' character 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.
Changes have been made to the internal Gadget caching code and
the clipboard code. These internal changes do not affect
the application programming interface.
ANSI C compliance
Motif 1.1 is compliant with ANSI C. All external functions
Resource name modifications
The names of three resources have been changed because of
conflicts with resource names in other widgets.
has been renamed to
has been renamed to
has been renamed to
icon box resource has been renamed to
Default font list modifications
The value of the
resource now obtains its
default dynamically. The default value is obtained by looking
up the parent hierarchy of the widget for an ancestor
that is a subclass of the
If such an ancestor is found, the
font list is initialized to the appropriate default font
list of the ancestor widget (
font list resources obtain their defaults in the same way.
Potential XmBulletinBoard modification
in Motif 1.1 but may be removed in a future release.
no longer overrides the
translation for multi-line text.
Help translation additions
Every widget has a translation for
The Help action calls the
callbacks if they exist. If they
do not exist, the Help action looks up the parent hierarchy
until it finds an
and then calls it.
Applications no longer need provide translation table entries for <F1>.
Traversal for many controls is enabled by default in this
resource defaults to
for these widgets. The default value of
for the following widgets and gadgets:
The default is
for all other widgets (except that it is forced to
in an empty List). This is a change to the
following widgets and gadgets:
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:
The type of the
has been changed to KeySym.
The size of this type is different from that of the Motif 1.0
type, char, for these resources.
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
Removal of 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.
If apps were not using Application Contexts, they should be.
The form widget geometry manager has changed, it
is much less forgiving of circular references, and
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 ToggleButtonGadgets, not
The following list describes some of the major changes
and bug fixes in Motif 1.1.2:
corrected code to allow specification of a bitmap filename for
resource of the
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
modified widgets to check validity of resources passed to them
revised code to display margins properly when
are set after widget creation
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
revised code so double clicking correctly sets the
resource in a list
modified shadowing of rectangular border of
and added appropriate resource
eliminated warning when setting
via resource file
revised code to allow
to properly set/reset highlight flag
corrected Drawing Area to draw
revised code so menus can always be traversed from a menuBar
widget to work properly with
to modify its children's border instead of
to its children's widget's window
modified code so toggle button widgets call proper callback
when a click is executed in its border
geometry management to allow for a margin width setting of 1
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
improved help callbacks in Message, Selection, File, Frame,
ScrollBar, and Toggle management
revised code to allow translation for Btn 3 to execute popup
to give correct
corrected focus problems when a non-TabGroup control is activated
eliminated segment faults and X errors while in multi-edit mode in
improved widgets to copy Mnemonic CharSet(and others) for user when
improved text widget to keep value of the vertical scroll bar
when changed from single_line_edit to multi_line
so it can now be set correctly using
corrected text widget to give proper callbacks when executing
a secondary select
revised text widget to display text with single_line_edit and
to work in a command widget
modified MenuBar to provide correct number of callbacks upon
declaration to return correct type
corrected prototyping for several
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
in a MessageBox
revised MenuBar to handle arming of cascades properly
corrected default value of
for Drawn Button
to work when setting a
to retain correct
prevented access to
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
so Option Menu execution results in correct
Option Menu code to use
when deciding size of option button
revised MRM to register
to work correctly when a widget with focus is destroyed
corrected DialogShell X and Y values after
to work with
resources for Buttons
revised code so
managers work correctly with Dialog Shell children
changed representation type of
modified code to enable
translation in all lists to work consistently
in a Scale Widget
widget's numColumns resource from an
to show correct value
corrected Scale's ability so it is insensitive to input using
changed behavior of
to result in arm, activate, and disarm callbacks
code to adjust radioBehavior and packing properly
widget in Menubar to arm proper callbacks with submenus
resource to be 0 at Initialize
in Option Menu to use its own shadowThickness
removed memory leak in
of Text widget
corrected Scale Widget so
may be initialized to zero
to use correct X and Y
to use own
resource to draw its shadow; previously,
of parent was used
when creating CascadeBG with/without submenu
under pulldown in OptionMenu
revised code to ensure proper setting of scaleMultiple value in
enabled Text widget to refresh when backspacing in
eliminated unpredictable behavior when adding scrollbars to a
disallowed having Toggle Buttons as children of a Pulldown in an
improved DrawingArea to issue proper inputCallbacks on keyboard
and mouse input
to work properly when ScrollVertical is
set to false and resizeHeight is set to True
revised Scale to accept changes to
after change to
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
changed definition of arrow keys for vertical Menubars
to work properly with a non-realized ToggleButton
to call proper callbacks when posting an
OptionMenu and traversing to a Pushbutton followed by activating
to handle callbacks properly from its scrollbars
after a destroy
corrected File Selection Dialogs to work correctly when
is changed to EXCLUSIVE_TAB_GROUP
eliminated 'sliderSize < 1' warnings and protocol errors when
ScrolledList and ScrolledText are resized such that the scrollbar
width equals zero
modified code to allow the
resource to be
used accurately when creating an OptionMenu
corrected PushButtons to convert to unit Type when doing
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
corrected wordwrap in
eliminated loss of client after call to
for a top
level window that is not minimized when useIconBox is not true
modified code to allow creation of a button with
after creation of an OptionMenu whose labelString calls
revised code to allow application using
to set their tab groups correctly
installed warnings if attempts are made to place
Toggle Buttons in OptionMenus
modified code so
inside Activate callback of buttons
successfully works with keyboard activation
modified code to handle Btn3 activation correctly when traversing
in a popped-up menu
corrected behavior when calling
on current tab group
corrected highlighting of Popup menus
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
ScrolledWindow 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
XmNprocessingDirection and XmNorientation combinations.
Modified FileSB to disallow selection of an empty file area of a
Corrected ScrolledW to initialize the InInit field in the swindow
structure properly, which will avoid unpredictable behavior when
adding 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
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
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
Modified Scrolled Text to prevent scrolling one line on each
Improved fill mode procedure for Toggle Buttons on monochrome
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
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
properly handle synchronous destroys.
Corrected 3D appearance of PushButton disarmed by call to
Added check for nonNULL w_return to MrmFetchWidgetOveride, allowing
MRM to return MrmFAILURE when fetching a widget already
Modifed Text to enable XtSetValues of XmNwordWrap to properly
update widget state.
Corrected code to enable XtPopdown to withdraw a window iconified
Eliminated potential Modal Dialog core dump after creating and
deleting top level shell.
Revised convenience functions for dialogs and menus to pass
user arguments 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
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
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
directory list properly.
Modified ToggleButton to allow XmONE_OF_MANY resource with same
topShadowColor, bottomShadowColor & selectColor to produce proper
Revised RowColumn to enable setting subMenuId and menuHistory
simultaneously in an option menu.
Revised Labels code to allow Toggle buttons which have different
sized label and select pixmaps to appear clean.
Moved definition 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
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
Protocol callbacks pass back Protocol widget instead of Shell widget.
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.
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.
Pass the Shell widget as the 'closure' argument to
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 functions
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 window
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
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
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
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 callback
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
contents 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
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 LabelGadget 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 contain
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
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
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
Revised scrollList code to allow multiple slider changes.
Modified geometry management in BulletinBoards to retain margins after
realizing parent AppShell.
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:
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
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 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.
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
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 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.
To support better interaction with keyboard traversal, Revision 1.2
includes these new functions:
The XmTrackingLocate function includes the following
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
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:
XmCommandGetChild has now been corrected so that it accepts XmDIALOG_WORK_AREA 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
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
The following table lists functions new to Motif 1.2
and the manual page on which it discussed.