File:  README

   This software distribution contains the source code for the book
OBJECT-ORIENTED PROGRAMMING WITH THE X WINDOW SYSTEM TOOLKITS.  This
source code uses four-column tabbing, as in the book.
   All of the code provided here has been tested with both X11R3
and X11R4 servers and window managers on both monochrome and color
workstations.  Specifically, this code has been tested on both color and
monochrome Sun SPARCstations and on a monochrome Sun 386i.  On the
SPARCstations we used the standard MIT distribution tape X server,
both Release 3 and Release 4.  On the 386i, we tested the code with both
the Release 3 and Release 4 public servers and with a popular commercial
X11R3 server.  All of this code has been tested for run-time bugs using
Saber C, under both Release 3 and Release 4, on a SPARCstation.
   Note that the only known run-time "error" occurs in `xwaste', BUT ONLY
UNDER RELEASE 4.  Specifically, the Athena form widget contains design
errors that result in slightly garbled and truncated output when
Athena dialog widget-based dialog boxes are popped up repeatedly (in a
loop, as in the functions that implement the "Delete" button operation
of `xwaste').  Again, this problem only occurs with X11R4.  (Since the
alert widgets are derived from the Athena form widget, this problem
can occur with alert widgets as well.)  Hopefully, MIT will correct
this error in the next release.

   Besides the source code from the book's appendixes, there are two
additional variations of `xwaste'.  The first variation is an Xt/Athena
version of `xwaste' that uses alert widgets, as suggested as a reader's
exercise in the book.  We also used this version of `xwaste' to illu-
strate a more efficient approach to implementing the wastebasket browser
(single-plane pixmap), and to illustrate color support for the browser,
which is built from a core widget.  See the directory `./Xt/xwaste2'.
   The second variation of `xwaste' is a Motif implementation.  The
Motif implementation has been tested under Motif 1.0 only, but should
operate equally well with the newer versions of Motif.  See the
directory `./Xm/xwaste'.
   Both of the directories contain README files with more information
on the alternate implementations of `xwaste'.

OpenWindows Users
-----------------
This source code has been tested under OpenWindows 2.0, Sun's X11/NeWS
server.  For Xlib programs that use KeyPress events you should either
(1) set the FocusLenience resource to `True', or (2) specifically notify
the window manager that you want to receive KeyPress/KeyRelease events
(but only in programs that need these events).

(1)  Set FocusLenience -- Put the following line in your OpenWindows
`.Xdefaults' file and then restart OpenWindows:

OpenWindow*FocusLenience:  True


(2)  Set the window manager focus hint:

void main(argc, argv)
int argc;
char *argv[];
{
	XWMHints wm_hints;
	...

	wm_hints.flags = InputHint;
	wm_hints.input = True;
	XSetWMHints(display, win, &wm_hints);
	...

}	/* main */


Jerry Smith
Iris Computing Laboratories
jsmith@spectro.com
