From: ksall@cen.com (Ken Sall)
Newsgroups: comp.windows.x.motif,comp.answers,news.answers
Subject: Motif FAQ (Part 2 of 9)
Date: 7 May 1995 12:28:42 GMT
Organization: none
Approved: news-answers-request@MIT.EDU
Expires: 20 Jun 1995 12:27:35 GMT
Message-ID: <motif-faq/part2_799849655@rtfm.mit.edu>
Reply-To: ksall@cen.com (Ken Sall)
Keywords: FAQ question answer

Archive-name: motif-faq/part2
Last-modified: MAY 05, 1995
Posting-Frequency: monthly
Organization: Century Computing, Inc. <URL:http://www.cen.com/>
Version: 4.4




-----------------------------------------------------------------------------
Subject: 27)  Where can I get public domain Motif source?

Answer: You cannot.  Motif source is not publically available.  However, see
"Has anyone done a public domain Motif lookalike?"


-----------------------------------------------------------------------------
Subject: 28)* Are Motif code examples publically available?

[Last modified: May 95]

Answer: OSF has produced a list of which of the example programs can be
distributed. Call OSF Direct for a copy of it.  Most of the example programs
have been freed from distribution limitations so should be available.

Source code posted to comp.sources.x often uses Motif.

In addition, many Motif programs are available via anonymous ftp from
ftp.x.org. The following are listed alphabetically by author.  (See the
"BOOKS" topic.)

If you don't understand the URL notation below, see 'What is an URL?' subject.

Thomas Berlages's book:
    ftp://ftp.x.org/R5contrib/berlage.motif.tar.Z

Dan Heller's book:
    ftp://ftp.x.org/R5contrib/OReilly/motif/examples.tar.Z

Donald L. McMinds's book:
    ftp://ftp.x.org/R5contrib/mastering.motif.tar.Z and
    ftp://ftp.x.org/R5contrib/master.1.2.tar.Z

Jan Newmarch's book:
    ftp://ftp.x.org/R5contrib/newmarch.tar.Z

Jerry Smith's book:
    ftp://ftp.x.org/R5contrib/smith.ooxt.tar.Z

Doug Young's source code for the current editions of his several books:
    ftp://ftp.x.org/contrib/book_examples/young.cxx.tar.Z
    ftp://ftp.x.org/contrib/book_examples/young2.motif.tar.Z
    ftp://ftp.x.org/contrib/book_examples/young.debug.tar.Z

Doug Young's examples for OLDER editions of his books:
    ftp://ftp.x.org/R5contrib/young.cxx.tar.Z
    ftp://ftp.x.org/R5contrib/young.motif.tar.Z
    ftp://ftp.x.org/R5contrib/young.motif2.tar.Z
    ftp://ftp.x.org/R5contrib/young.tar.Z

Examples appearing in "The X Resource" (by O'Reilly and Associates) appear
organized by issue in the directory:
    ftp://ora.com/pub/examples/xresource or:
    ftp://ftp.uu.net/published/oreilly/xresource

Examples from O'Reilly and Associates books can be found in subdirectories of:
    ftp://ora.com/pub/examples/xbook or:
    ftp://ftp.uu.net/published/oreilly/xbook


Also from a list maintained by: qizeng@acsu.buffalo.edu (Qi Y. Zeng) FTP sites
for X/MOTIF source code examples:

    ftp://ftp.uu.net/published/books/brain.motif.tar.Z
    ftp://ftp.uu.net/published/books/pwm-examples.tar.Z

Marshall Brain's Motif tutorials can be found at:

    http://www.iftech.com/

Thanks to Steve Swanson <swany@math.lsa.umich.edu>, the following code
examples correspond to Programming with Motif, Keith D. Gregory, Springer-
Verlag, 1992, which apparently is more suited for Motif/X beginners.
    ftp://ftp.x.org/R5contrib/pwm-xmpl.tar.Z

-----------------------------------------------------------------------------
Subject: 29)  Has anyone done a public domain Motif lookalike?

[Last modified: Oct 94]

Answer: The specification is available (AES), and the validation suite can be
bought, but no-one has taken up the challenge.  There are some commercial
lookalikes (Looking Glass and Neuron Data), but no workalikes.

Applications that follow the Style Guide might be certified Motif-compliant
through the checklist process, even though they're not using OSF/Motif
binaries.

Tcl/Tk is available for ftp from allspice.berkeley.edu, and although
implemented without Xt, has a "strict Motif" mode.

Strom Sytems (18666 Redmond Way o-2118, Redmond, WA 98052-6725) have a Simple
Toolkit for X-Windows (sic) that appears to follow the Style Guide even though
it doesn't quite look like Motif.

MOOLIT is a USL product that can be runtime switched between the Sun Open Look
and Motif appearance.  It is based on  OLIT 4i.

Interviews is a C++ based product with appearance similar to Motif.  A ftp-
able version is on interviews.stanford.edu.  A commercial version is available
as InterViews Plus.

Simon J. Lyall (simon@darkmere.midland.co.nz) reported about a package called:
Xu-lib & Widget Set- a library & widget set to "emulate" the look&feel and the
programming interface of OSF/Motif. Contact the author Udo Baumgart
(U.BAUMGART@ldb.han.de) for details.

-----------------------------------------------------------------------------
Subject: 30)  Does anyone from OSF pay attention to our questions/suggestions?

Answer: Yes, and they quite often post answers too. But they may not respond
to *your* problem because they have other things to do as well.  This
newsgroup is not run by OSF, and has no formal connection with OSF.  OSF is a
member-driven company.  The membership (and anyone can be a member) provides
the primary input for future development of Motif.

-----------------------------------------------------------------------------
Subject: 31)  Does OSF have an application compliance validation service?

Answer: They have a checklist and a certification process which you can
request from them.  Ask for the Level One Certification Checklist.  The
process is one of self-certification.  It tests only the appearance and
behavior of the application against Motif style.  The product will also be put
in the OSF reference listing.  There's a one-time fee of $250.  According to
the master license agreement, you can't use any OSF identifying mark unless
you have done a certification.

-----------------------------------------------------------------------------
Subject: 32)  What is the motif-talk mailing list?

Answer: The motif-talk mailing list is only for those who have purchased a
Motif source code license. You can be placed on this list by emailing to
motif-talk-request@osf.org, citing your Company name and source license
number.

-----------------------------------------------------------------------------
Subject: 33)  What MIT patches do I use, and when do I use fix-osf?

Answer: The Motif 1.1.0 tape contains MIT patches 1-14. Apply these and any
others you can get.  If your MIT patch level only goes up to fix-16, you also
need to apply fix-osf.  Fix-osf was an emergency patch for a problem that
existed when the Motif 1.1 tape was cut, The MIT fix-17 completely superseded
osf-fix, so if you have applied fix-17 do not apply fix-osf.  The 1.1.1 tape
contains MIT fixes 15-18, as well as an OSF-developed fix that deals with a
subtle bug in the Selection mechanism of the Intrinsics.  Most people will
have fix-15 to 18 by now; if you don't have them:

        Back out fix-osf if you have applied it
        Apply fix-15 to 18
        Apply fix-osf-1.1.1

The Selection fix was submitted to MIT, who came up with a different fix.  It
will not be made into an R4 fix but should be in R5. The MIT fix was posted to
motif-talk.

-----------------------------------------------------------------------------
Subject: 34)  How does Motif work with X11R5?

Answer: Motif 1.1.X is only intended to be built with X11R4.  Motif 1.2.X is
for X11R5.  however, Motif 1.1.4 has been set to also work with X11R5.

For Motif 1.1.1, 1.1.2 and 1.1.3 you will need to compile Xlib and Xt with a
MOTIFBC flag set to YES (page 8, section 3.3 of the R5 release notes), or
you'll also have a link problem (LowerCase) and a fatal run time problem
(XContext manager).  If your applications come up with "Unknown keysym name:
osfActivate" errors, check the variable ProjectRoot. The name
/$PROJECTROOT/lib/XKeysymDB will have been wired into your Xlib.

In Motif 1.1.0, XtCallCallback uses NULL as the first argument instead of a
widget ID. This was ok under R4, but must be changed in the source for R5. It
was changed by OSF from Motif 1.1.1 onward.

Mrm won't work at all (can't link since it uses an X private variable that has
disappeared in R5).  There is an MIT patch that may fix this??

-----------------------------------------------------------------------------
Subject: 35)  How can I find which version of Motif I have?

[Last modified: October 93]

Answer: The macro XmVERSION gives you the version number.  The macro
XmREVISION gives you the major revision number.  The macro XmVersion combines
these e.g. a value of 1002 is Motif 1.2.

To find the minor revision number is not easy. From Motif 1.1.3 onwards, try
this:

   'strings `which mwm` | grep OSF'.

to get the full version number e.g. 1.1.3.

In Motif 1.2, the macro XmUPDATE_LEVEL was added to give the minor revision
number.

+ ( above also known as the patch level).  + In addition there was a macro
string added,  XmVERSION_STRING which has all + the above info in a char
string.

+ grepping through a strings of libXm.a for OSF can also sometime give +
something useful.

Version X11R6 is due out in spring of 1994 (april 15?)

thanks to hops@x.co.uk Mike Hopkirk


-----------------------------------------------------------------------------
Subject: 36)  TOPIC: MOTIF and the WORLD WIDE WEB (WWW)

-----------------------------------------------------------------------------
Subject: 37)  Where's an HTML version of the Motif FAQ on World Wide Web
(WWW)?

[Last modified: Feb 95]

Answer: An automatically generated HTML version of this Motif FAQ can be found
at WWW URL:

    http://www.cis.ohio-state.edu/hypertext/faq/usenet/motif-faq/top.html

For a searchable version of the Motif FAQ and other FAQs (via WAIS), see:

    http://www.cs.ruu.nl/cgi-bin/faqwais

The WAIS search is great way to find a topic which may appear in several FAQs
(Motif, X, Xt, Widget FAQ, etc.)

-----------------------------------------------------------------------------
Subject: 38)* What are other interesting WWW URLs which are related to Motif?

[Last modified: May 95]

Answer:

        CAUTION: THIS QUESTION WILL NO LONGER BE UPDATED IN THIS FORM.
        Instead, I've created "MW3: Motif on the World Wide Web".
        ( http://www.cen.com/mw3/ ). See the next subject!

Thanks to Sonja Kowalewski for several updates.

See http://www.x.org/
for the X Consortium welcome document (which contains links to getting X
source code, intro to the X Consortium, X Technical Conference, the public ftp
file server (ftp.x.org), and more.

See http://www.nads.de/EXUG/EXUG.html
for the EXUG (European X User Group) home page.

See http://www.osf.org:8001
for the OSF Home Page.

See http://www.osf.org:8001/general/members.html
for links to several OSF Sponsor and Member Web Servers.

See http://www.osf.org:8001/motif/list_features.html
for a "Complete list of 2.0 features".

See http://www.osf.org:8001/membserv/
OSF End User Forum and OSF Member Services.

See http://www.osf.org:8001/motif/MotifFAQ.html
for "OSF ANSWERS FREQUENTLY-ASKED OSF/MOTIF(R) QUESTIONS", including OSF/Motif
Release 2.0 Questions, OSF/Motif Licensing. and OSF/Motif and the Common
Desktop Environment.

See http://riwww.osf.org:8001/
for the OSF Research Institute home page.

See http://www.let.rug.nl/FWF/
for the Free Widget Foundation (FWF) Home Page.

See http://www.ora.com/
for O'Reilly & Associates, Inc. Home Page

See http://freedom.lm.com/freedom.html
for Freedom Software ("Everything under the Sun regarding Motif").

See http://freedom.lm.com/review.html
for Freedom Software's page with links to a review of Motif builders, list of
Motif interface builders, commerical widgets, etc.

See http://www.nads.de/EXUG/FAQ.html
EXUG's FAQ list (X, Xt, Widgets, Motif, InterViews, Fresco, etc.)

See file://134.130.161.30/arc/pub/unix/html/motifcorner.html
for Harry's Motif Programming Corner (tips and tricks, including code).

See http://www.wri.com/~cwikla/widget/
for John L. Cwikla's Widget FAQ Home Page (Composite Widgets, Non-Composite
Widgets, Motif 1.1 Compatible, Motif 1.2 Compatible, Athena Compatible, FWF
Widget Set, By Author, Shareware Widgets, Commercial Widgets).

See http://www.wri.com/~cwikla/xlopedia/
for Xlopedia (by John L. Cwikla) to become the "definitive source on X
information."

See http://www.cs.cmu.edu:8001/afs/cs.cmu.edu/user/bam/www/toolnames.html
for Brad A. Myers' `User Interface Software Tools' list (which is not limited
to Motif tools).

See http://www.eit.com/software/winterp/winterp.html
for WINTERP 2.0 Home Page (Niels Mayer).

See http://www.ics.com/
for information about products sold by Integrated Computer Solutions.
Included are product descriptions and lots of Frequently Asked questions (and
answers!).

See
http://akebono.stanford.edu/yahoo/Computers/Operating_Systems/Windowing_Systems/X_Window_System/Motif/
for a collection of links to Motif info (including some of the above).

See http://www.cm.cf.ac.uk/Dave/X_lecture/X_lecture.html
for David Marshall's Motif tutorial with source code and illustrations.

See http://www.aiai.ed.ac.uk/~jacs/wxwin.html
for wxWindows information (toolkit for platform-independent GUI programming in
C++).

See http://landru.unx.com/SIGS/TXJ/docs/txjhome.html
for TXJ (The X Journal) ONLINE". This page has a number of interesting links
including one to the X Bibliography.

See http://landru.unx.com/SIGS/TXJ/docs/bib/
for the X Bibliography.

-----------------------------------------------------------------------------
Subject: 39)* Is there a central location for Motif information on the WWW?

[Last modified: May 95]

Answer: ksall@cen.com has created a Web page called

                "MW3: Motif on the World Wide Web"
                http://www.cen.com/mw3/

which contains numerous URL links to Motif and X11 topics such as:

    o FAQs: Motif, COSE, Widget, Xt, X11, Xapps, etc.
    o Widgets, Toolkits, Libraries, and GUIs
    o Code Examples and Tutorials
    o Commerical Products and Vendors [new]
    o Organizations
    o Tips and Pointers
    o Publications and References
    o Usenet Newsgroups
    o Personal Home Pages

MW3 will be updated very frequently; the "Last updated" timestamp appears at
the top of the page. There is also a feedback form for submitting corrections
and suggestions for additions.

Both MW3 and the Motif FAQ are sponsored by Century Computing, Inc.

                http://www.cen.com/


-----------------------------------------------------------------------------
Subject: 40)* Which X and Motif developers have their own home page URLs?

[Last modified: May 95]

Answer: NOTE: For the most current version of this list, see:

                http://www.cen.com/mw3/people.html

This subject provides an opportunity for me to thank some of you for your
invaluable contributions (direct or indirect) to this FAQ and, at the same
time, to make it easy for the X and Motif community to contact you.
Contributions and corrections appreciated. It is also a way to keep a current
contact list for some of you who have moved to other companies.

Requirements for inclusion in this list:

    (a) have at least 2 contributions in the Motif, X, or Xt FAQ; or
        work directly for OSF or the X Consortium;
    (b) have your own home page (not just their company's home page);
    (c) submit the following info in this 4-line format:

            First_name Last_name
            Your_home_page_URL
            mailto:email_address
            which FAQ your name/address appears (Motif, X, or Xt)

        NOTE: Be sure to put "For Motif FAQ" as your email
        subject. Send it to ksall@cen.com mailto:ksall@cen.com

X and Motif developer home pages listed in alphabetical order by last name:

John L. Cwikla http://www.wri.com:80/~cwikla/ mailto:cwikla@wri.com

Daniel Dardailler http://www.x.org:80/people/daniel/ mailto:daniel@x.org

Kaleb S. Keithley http://www.x.org/people/kaleb/kaleb.html mailto:kaleb@x.org

Ken Lee http://www.rahul.net/kenton/ mailto:kenton@rahul.net

Jan Newmarch http://pandonia.canberra.edu.au/ mailto:jan@ise.canberra.edu.au

Doug Rand http://reality.sgi.com/employees/drand/ mailto:drand@sgi.com

Ralph R. Swick http://www.x.org/people/swick.html mailto:swick@x.org

-----------------------------------------------------------------------------
Subject: 41)* Where can I get the HTML widget used in Mosaic?

[Last modified: May 95]

Answer:

Ken Sall (ksall@cen.com) writes: The HTML (HyperText Markup Language) widget
is part of the NCSA Mosaic source code available from ftp.ncsa.uiuc.edu.
Thanks to intasoft@cix.compulink.co.uk for alerting me that the NCSA source
tree has been reorganized. Look in the directory:

file://ftp.ncsa.uiuc.edu/Mosaic/Unix/source/Mosaic-2.5/libhtmlw/

or more generally:

file://ftp.ncsa.uiuc.edu/Mosaic/Unix/source/Mosaic-VERSION/libhtmlw/

for the files HTML.c, HTML.h, HTMLP.h, etc.

For documentation, see

http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/htmlwidget.html .


For information on using Mosaic by remote control, see

http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/remote-control.html

Here are more details from ah627@FreeNet.Carleton.CA (Samuel Effah):

To the numerous request for the NCSA HTML widget information.

Everything not already copyrighted by CERN is copyrighted by NCSA (including
the contents of the libhtmlw, libnet, libXmx, and src directories, but not
including the contents of libdtm, which is entirely public domain). ...

 * The UI grants you (hereafter, Licensee) a license to use the Software    *
 * for academic, research and internal business purposes only, without a    *
 * fee.  Licensee may distribute the binary and source code (if released)   *
 * to third parties provided that the copyright notice and this statement   *
 * appears on all copies and that no charge is associated with such         *
 * copies.                                                                  *
 *                                                                          *
( you can read more about the copyright in the Mosaic source code ).


Documentation on the HTML widget can be located at:

  http://www.ncsa.uiuc.edu/SDG/Software/Mosaic/Docs/htmlwidget.html
  ( it's on the older version, I think Mosaic1.x )

For starters, you can compile directory Mosaic2.4/libhtmlw for the widget.
Using: To create widget:
  htlmWid = XtCreateManagedWidget( "htlmWid",
htmlWidgetClass,                                      parent,
                                     htlmArgs,
                                     XtNumber( htlmArgs ));

Callback for anchors:
  XtAddCallback(htlmWid, WbNanchorCallback, htmlRef, NULL);

where htmlRef() looks like:

static void htmlRef(widget, client_data, call_data) Widget widget; XtPointer
client_data; WbAnchorCallbackData* call_data; {
        buffer = readHTMLFile( call_data->href );
        XtVaSetValues( widget, WbNtext, buffer, NULL ); }

where readHTMLFile() is

char * readHTMLFile( in_file ) char *in_flie; {
  /* function to read a file and return its content, given
     the file's name */ }


I think this is enough to start you off.

Thanks to: Samuel Effah

-----------------------------------------------------------------------------
Subject: 42)  TOPIC: BOOKS and JOURNALS

-----------------------------------------------------------------------------
Subject: 43)  Is there a bibliography available?

[Last modified: Mar 95]

Answer: The X Bibliography, originally maintained by Ken Lee (
http://www.rahul.net/kenton/ ), is now maintained by the editor of "The X
Journal" ( http://landru.unx.com/SIGS/TXJ/docs/txjhome.html ) Steve Mikes,
uunet.uu.net!topgun!smikes.  Steve regularly posts to comp.windows.x and
ba.windows.x a list of reference books and articles on X and X programming.
The X FAQ from comp.windows.x reproduces part of this list.

The complete X bibliography is available from these directory URLs:

        ftp://ftp.x.org/contrib/docs/ (several suffixes)
        http://landru.unx.com/SIGS/TXJ/docs/bib/ (several suffixes)

-----------------------------------------------------------------------------
Subject: 44)* Is there a Motif tutorial?

[Last modified: May 95]

Answer: See http://www.cm.cf.ac.uk/Dave/X_lecture/X_lecture.html
for a hypertext Motif tutorial (by David Marshall) with source code and
illustrations.

Marshall Brain at brain@adm.csc.ncsu.edu posted a set of simple and useful
Motif tutorials at http://www.iftech.com/ .

Jan Borchers <job@ira.uka.de> writes about his Xmtutor:

A free version of "Xmtutor", a menu-driven Motif application that contains an
interactive tutorial about programming with Motif with many executable
examples, is available via anonymous ftp from ftp.uni-stuttgart.de, in:
/pub/X11/programming/xmtutor-1.3a/.  (Thanks to Thomas Madeya
<madeya@ira.uka.de> for the update.)

Xmtutor is very useful to learn Motif easier than with a book, and it is a
convenient Quick Reference and resource-settings testbed for Motif application
developers.

It has been tested on SUN Sparcs (SunOS 4.1) and DEC Alphas (OSF/1 1.3a), but
should be working OK on most other Unix / X11R4/R5 / Motif 1.1/1.2 systems.

The demo version contains all the information to get you started with Motif,
and upon registration, which costs 49 DM, you get the complete tutorial,
describing all widgets, other topics such as inter-client communication,
Compound Strings, etc., as well as a formatted TeX file of the tutorial to
print out, which gives you a complete book about Motif.

-----------------------------------------------------------------------------
Subject: 45)  What books are available for Motif programmers?

[Last modified: Feb 95]

Answer:

        NOTE: This answer is always "under construction". If you are the
        author of, or an avid fan of, a book not listed here, send mail
        to ksall@cen.com.  Corrections especially regarding new editions
        and ISBN's would be greatly appreciated. Anyone have ISBNs on
        the Motif 2.0 editions of the Prentice Hall books?


For Motif 2.0, see also the subject "Where can I find Motif 2.0
documentation?" as Prentice Hall has published the Motif 2.0 documentation.
Please send ksall@cen.com the ISBNs if you know them. Thanks!

First, we present the official books from OSF. Then we include an alphabetical
listing of selected books. (See the following question for Xt and Xlib books.)


The "official" OSF/Motif books are:

OSF/Motif Programmers Guide, Prentice-Hall ISBN 13-640525-8 (Motif 1.0), ISBN
0-13-640681-5 (Motif 1.1), ISBN 0-13-643107-0 (Motif 1.2) (NB: This makes use
of the demo programs that you get with a Motif source license.  The programs
are not included and may or may not be available on your system.)

OSF/Motif Programmers Reference Manual, Prentice-Hall ISBN 13-640517-17 (Motif
1.0), ISBN 0-13-640616-5 (Motif 1.1), ISBN 0-13-643115-1 (Motif 1.2) You will
need this for the system calls.

OSF/Motif Style Guide, Prentice-Hall 13-640491-X (Motif 1.0), ISBN 0-13-


640673-4 (Motif 1.1), ISBN 13-643123-2 (Motif 1.2) You will need this to get
some idea of how to write programs with the correct `look and feel'.


Next is an alphabetical listing (by author) of a number of essential books not
by OSF but in wide use. I will attempt to keep this list current if the
authors (or their readers) send me updates as new editions become available.

Barkakati, Nabajyoti, X Window System Programming, SAMS. ISBN 0-672-22750-9.
This contains a section on Motif.

Berlage, Thomas Berlage, OSF/Motif: Concepts and Programming, Addison-Wesley,
UK, 1991. ISBN 0-201-55792-4.

Ferguson, Paula & Brennan, David, Motif Reference Manual, Volume 6B, O'Reilly
& Associates, 1st Edition June 1993, 920 pages, ISBN: 1-56592-038-4.  "Dan
Heller's Motif Programming Manual [Volume 6A, below] has long been considered
the most authoritative and insightful work on Motif. Now, with the addition of
this companion reference manual, programmers can dispense completely with the
original OSF documentation. In addition to covering the entire Motif toolkit,
this book also covers OSF's "User Interface Language" or UIL, and the Motif
Resource Manager (MRM) functions used to tie together applications with user
interfaces defined in UIL."

Flanagan, David, Motif Tools: Streamlined GUI Design and Programming with the
Xmt Library, O'Reilly & Associates, 1st Edition August 1994, 1024 pages, ISBN:
1-56592-044-9.  "Motif Tools and the Xmt programming library that accompanies
it on CD-ROM offer resources to empower Motif programmers and dramatically
speed up application development with the X Toolkit and Motif.  The Xmt
library contains nine custom widgets and over 250 convenience routines that
handle many tricky aspects of GUI programming. The Layout widget, for example,
is an incredibly flexible manager widget that makes the confusing and awkward
Motif Form widget a thing of the past. And a single Menu widget will create an
entire pulldown menu system for your application by reading a special menu
description from a resource file or your C code. Other features of the library
dramatically simplify the use of Motif XmStrings, automate the transfer of
data between the fields of an application's data structures and the widgets of
its dialog boxes, and make it possible to automatically create a widget
hierarchy completely described in a resource file."

Heller, Dan, Ferguson, Paula M. & Brennan, David, Motif Programming Manual,
Volume 6A, O'Reilly & Associates, 2nd Edition February 1994, ISBN: 1-56592-
016-3.  "The Motif Programming Manual describes how to write applications
using the Motif toolkit from the Open Software Foundation (OSF). The book goes
into detail on every Motif widget class, with useful examples that will help
programmers to develop their own code. Anyone doing Motif programming who
doesn't want to have to figure it out on their own needs this book." Although
updated for Motif 1.2, it is still usable with Motif 1.1.

Johnson, Eric F. and Kevin Reichard, Power Programming Motif, second edition,
MIS: Press, New York, NY, 1993. ISBN 1-55828-322-6.

Johnson, Eric F. and Kevin Reichard, Professional Graphics Programming in the
X Window System, MIS: Press, New York, NY, 1993. ISBN 1-55828-255-6.  This
book covers difficult topics such as combining non-default visuals and color
overlay planes with Motif applications.

Newmarch, Jan, The X Window System and Motif - A Fast Track Approach.
Addison-Wesley, ISBN 0-201-53931-4.  As the long-time maintainer of this Motif
FAQ, Jan's book is bound to contain unusual and useful insights.

O'Reilly and Associates publishes an entire series of books concerning
different aspects of the X Window System, including a number of books about
Motif, as well as books on Xlib, Xt, and PEX. In this FAQ, we list O'Reilly
books by the authors' names. For a summary of all of O'Reilly's X11 series,
see:

    ftp://ftp.x.org/contrib/docs/Xbibliography.OReilly

As of this writing, however, the above list was somewhat out-dated.
Therefore, telnet to gopher.ora.com, login as "gopher", select "Detailed
Product Descriptions", and then select from the menu. WWW users can open this
URL:

    gopher://gopher.ora.com/11/descriptions/

Sebern, Mark "Building OSF/Motif Applications: A Practical Introduction". The
ISBN is 0-13-122409-3. Prentice-Hall. The book uses a large, realistic Motif
application (a program to make slides for presentations) to demonstrate the
use of Motif features. Both UIL and toolkit calls are discussed, though UIL is
featured, both in the examples and in a reference chapter.

Smith, Jerry, Designing X Clients with Xt/Motif, ISBN 1-55860-255-0 Morgan
Kaufmann Publishers This adopts a higher-level approach to many of the objects
that commonly occur in Motif but are not in the Motif API.

Young, Douglas, "Object-Oriented Programming with C++ and OSF/Motif", Prentice
Hall, 1992. ISBN 0-13-630252-1. Source code is
ftp://ftp.x.org/contrib/book_examples/young.cxx.tar.Z

Young, Douglas, "The X Window System: Programming and Applications with Xt,
Motif Edition", Prentice Hall, 1994. ISBN 0-13-123803-5. This is the classic
tutorial from 1989 updated for Motif 1.2.  Source code is
ftp://ftp.x.org/contrib/book_examples/young2.motif.tar.Z

Young, Douglas, "Motif Debugging and Performance Tuning", Prentice Hall, 1995.
ISBN 0-13-147984-9. Source code is
ftp://ftp.x.org/contrib/book_examples/young.debug.tar.Z

If you want to learn about UIL, one source is the "Motif Programmers's Guide"
from Prentice-Hall.  However, excellent UIL coverage appears in the O'Reilly
and Associates books "Motif Programming Manual, Volume 6A" by Dan Heller and
Paula M. Ferguson and in "Motif Reference Manual, Volume 6B" by Paula M.
Perguson with UIL Material by David Brennan. (Yes, 6A and 6B were worth the
wait!)

-----------------------------------------------------------------------------
Subject: 46)  Which Xt and X books would also be helpful?

[Last modified: Feb 95]

Answer: You will also need books and references on Xt and Xlib, such as:

Asente, Paul J., and Swick, Ralph R., X Window System Toolkit, The Complete
Programmer's Guide and Specification, Digital Press, 1990.  The Xt bible. A
treasury of information, excellent and invaluable.  Distributed by Digital
Press, ISBN 1-55558-051-3, Digital Press order number EY-E757E-DP; and by
Prentice-Hall, ISBN 0-13-972191-6.

Cutler, Ellie, Gilly Daniel, and O'Reilly, Tim, The X Window System in a
Nutshell, O'Reilly & Associates, 2nd Edition April 1992, 424 pages, ISBN: 1-
56592-017-1.  A quick reference guide to Xlib functions datatypes and events,
Xt functions and datatypes, and the standard X clients.  The second edition is
expanded and covers X11R4 and X11R5.

Flanagan, David, Programmer's Supplement for R5 of the X Window System,
O'Reilly & Associates, 1991, ISBN: 0-937175-86-2.  A programmer's guide to all
the new features in X11R5, with reference pages for the new functions.
[NOTE: Out-of-print; material incorporated in recent editions of Volumes 1, 2,
4 and 5. X11R6 supplement is in the works.]

Flanagan, David, Editor, X Toolkit Intrinsics Reference Manual, Volume 5,
O'Reilly & Associates, 3rd Edition April 1992, 916 pages, ISBN: 1-56592-007-4.
"The X Toolkit Intrinsics Reference Manual is a complete programmer's
reference for the X Toolkit. It provides reference pages for each of the Xt
functions as well as the widget classes defined by Xt and the Athena widgets.
This volume is based on Xt documentation from the X Consortium and has been
re-edited, reorganized, and expanded...  The third edition of Volume 5 has
been completely revised. In addition to covering Release 4 and Release 5 of X,
all the man pages have been completely rewritten for clarity and ease of use,
and new examples and descriptions have been added throughout the book."

Mui, Linda and Pearce, Eric, X Window System Administrator's Guide, Volume 8,
O'Reilly & Associates, 1st Edition October 1992, CD-ROM Released May 1993,
ISBN: 1-56592-052-X (with CD-ROM) "This book is the first and only book
devoted to the issues of system administration for X and X-based networks,
written not just for UNIX system administrators but for anyone faced with the
job of administering X (including those running X on stand-alone
workstations)..." A book for X system administrators, covering XDM, security,
font management, X terminals, building X, etc.  Available with a CD-ROM
containing the complete X source code.

Nye, Adrian, Xlib Programming Manual, Volume 1, O'Reilly and Associates, 3rd
Edition July 1992,  824 pages, ISBN: 1-56592-002-3.  "Updated to cover X11
Release 5, the Xlib Programming Manual is a complete guide to programming the
X library (Xlib), the lowest level of programming interface to X. It includes
introductions to internationalization, device-independent color, font service,
and scalable fonts. Includes chapters on: X Window System concepts, A simple
client application, Window attributes, The graphics context, Graphics in
practice, Color, Events, Interclient communication, Internationalization, The
Resource Manager, A complete client application, Window management, and Other
programming techniques."

Nye, Adrian, Editor, Xlib Reference Manual, Volume 2, O'Reilly & Associates,
3rd Edition June 1992, ISBN 1-56592-006-6.  Contains reference pages, derived
from the MIT specification, for all Xlib functions.  The third edition covers
X11R4 and X11R5, including all the new internationalization and Xcms (Color
Management System) functions.

Nye, Adrian & O'Reilly, Tim, X Toolkit Intrinsics Programming Manual, Motif
Edition, Volume 4M, O'Reilly and Associates, 2nd Edition August 1992, 674
pages, ISBN: 1-56592-013-9.  "Volume 4 is a complete guide to programming with
the X Toolkit Intrinsics, the library of C language routines that facilitates
the design of user interfaces with reusable components called widgets.  It
provides concepts and examples that show how to use the various X Toolkit
routines. The first few chapters are devoted to using widgets; the remainder
of the book covers the more complex task of writing new widgets.  Volume 4 is
available in two editions. The Motif Edition uses the Motif 1.2 widget set in
examples, and covers X11 Release 5."

Quercia, Valerie & O'Reilly, Tim, X Window System User's Guide, Motif Edition,
Volume 3M, O'Reilly and Associates, 2nd Edition January 1993, 956 pages, ISBN:
1-56592-015-5.  "The X Window System User's Guide, Motif Edition orients the
new user to window system concepts and provides detailed tutorials for many
client programs, including the xterm terminal emulator and the window manager.
Building on this basic knowledge, later chapters explain how to customize the
X environment and provide sample configurations.  This alternative edition of
the User's Guide highlights the Motif window manager, for users of the Motif
graphical user interface.  Revised for Motif 1.2 and X11 Release 5."

Scheifler, Robert W., and Gettys, James, X Window System, The Complete
Reference to Xlib, X Protocl, ICCCM, XLFD. Digital Press, 1992. The Xlib
bible.  Third edition covers X11R5. ISBN 1-55558-088-2, Digital Press order
number EY-J802E-DP.

For those interested in PHIGS and PEXlib, O'Reilly & Associates also publishes
several books on these topics. See:

    gopher://gopher.ora.com/11/descriptions/prox

-----------------------------------------------------------------------------
Subject: 47)  Are there books for X11R6 yet?

[Last modified: Feb 95]

Answer: Check the X FAQ at:

    ftp://ftp.x.org/contrib/faqs/FAQ or
    http://www.cis.ohio-state.edu/hypertext/faq/usenet/x-faq/top.html

Also O'Reilly and Associates have a mini-FAQ regarding their plans for X11
Release 6 books:

    http://nearnet.gnn.com/gnn/bus/ora/news/r6.html

-----------------------------------------------------------------------------
Subject: 48)  What relevant journals are available?

[Last modified: Mar 95]

Answer:

"The X Journal" is published bimonthly by SIGS Publications, 212-274-0640.
Editorial information: editors%topgun@uunet.uu.net, editors@unx.com. The WWW
URL for "TXJ ONLINE" is:

    http://landru.unx.com/SIGS/TXJ/docs/txjhome.html

"The X Resource: A Practical Journal of the X Window System" is published
quarterly by O'Reilly and Associates, 800-998-9938.  Editorial information:
Paula Ferguson (paula@ora.com).  In addition to the valuable articles which
appear in regular issues, the January issue of each year (issues 1, 5, 9, 13,
etc.) contains the proceedings of the Annual X Technical Conference (from
1992, 1993, 1994, and 1995, respectively) sponsored by the X Consortium.  An
on-line Table of Contents per issue can be accessed via gopher.  Telnet to
gopher.ora.com, login as "gopher", select "Detailed Product Descriptions", and
then "X Resource". Alternatively, the WWW URL is:

    gopher://gopher.ora.com/11/descriptions/xres/

Source code examples published in "The X Resource" appear organized by issue
in the directory:

    ftp://ftp.ora.com/pub/examples/xresource/

See the index file:

    ftp://ftp.ora.com/pub/examples/xresource/Index


-----------------------------------------------------------------------------
Subject: 49)  TOPIC: MWM and the SHELL WIDGET

-----------------------------------------------------------------------------
Subject: 50)  What is the difference between Motif and mwm?

Answer: mwm is a window manager. Motif itself is made up of four parts: a
User-Interface Guideline, an API toolkit of `C' routines which helps in the
building of applications which conform to the Guideline, the window manager
mwm, and a language UIL which is designed to ease user interface development.
In general mwm will run an application built with any X-windows API, and in
general an application built using the Motif toolkit will run under any window
manager.


-----------------------------------------------------------------------------
Subject: 51)  Does anyone have an alternative set of 3-D defaults for a
monochrome screen?

Answer: This is obviously a matter of taste. Some alternatives suggested
include

!Benjamin Schreiber, bs@osf.osf.org, bs@cs.brandeis.edu
Mwm*foreground:                 black           ! Actually, when a window is
Mwm*background:                 white           ! deactivated, the background
Mwm*backgroundPixmap:           50_foreground   ! becomes white, insted of
Mwm*topShadowPixmap:            white           ! 50% foreground (grey)

Mwm*activeForeground:           black
Mwm*activeBackground:           white
Mwm*activeBackgroundPixmap:     50_foreground
Mwm*activeTopShadowPixmap:      white

Mwm*menu*backgroundPixmap:      background
Mwm*menu*topShadowPixmap:       50_foreground

Mwm*title*foreground:                   black
Mwm*title*background:                   white
Mwm*title*backgroundPixmap:             white
Mwm*title*topShadowPixmap:              50_foreground
Mwm*title*activeForeground:             white
Mwm*title*activeBackground:             black
Mwm*title*activeBackgroundPixmap:       black
Mwm*title*activeBottomShadowPixmap:     50_foreground

Mwm*feedback*backgroundPixmap:          white

or

! From: tsang@isi.com (Kam C. Tsang)
Mwm*background:                      White
Mwm*activeBackground:                White
Mwm*activeBackgroundPixmap:          25_foreground
Mwm*foreground:                      Black
Mwm*activeForeground:                Black
Mwm*menu*background:                 white
Mwm*menu*foreground:                 black
xterm*Foreground:                    black
xterm*Background:                    white


or

! From: ucsd.edu!usc!snorkelwacker!paperboy!yee  (Michael K. Yee)
Mwm*cleanText:                          True

Mwm*activeBackground:           white
Mwm*activeForeground:           black
Mwm*background:                 white
Mwm*foreground:                 black

Mwm*client*activeBackgroundPixmap:      50_foreground
Mwm*client*activeTopShadowPixmap:       foreground
Mwm*client*activeBottomShadowPixmap:    background

!Mwm*client*background:                 white
!Mwm*client*foreground:                 black
Mwm*client*backgroundPixmap:            75_foreground
Mwm*client*topShadowPixmap:             foreground
Mwm*client*bottomShadowPixmap:          background

!Mwm*feedback*background:               white
!Mwm*feedback*foreground:               black
Mwm*feedback*backgroundPixmap:          50_foreground
!Mwm*feedback*topShadowPixmap:          25_foreground
!Mwm*feedback*bottomShadowPixmap:       background

!Mwm*menu*background:                   white
!Mwm*menu*foreground:                   black
Mwm*menu*backgroundPixmap:              foreground
!Mwm*menu*topShadowPixmap:              foreground
!Mwm*menu*bottomShadowPixmap:           background

!Mwm*icon*background:                   white
!Mwm*icon*foreground:                   black
Mwm*icon*activeBackgroundPixmap:        50_foreground
Mwm*icon*activeBottomShadowPixmap:      foreground
Mwm*icon*backgroundPixmap:              75_foreground


-----------------------------------------------------------------------------
Subject: 52)  How can I modify the Motif window manager decorations?

Answer: In resource files, use the window manager's client resource (which is
the application) and the resource clientDecoration:

Mwm*XClock.clientDecoration:   none

turns off all clock decorations.  See the mwm(1) entry for other
possibilities.

Programmatically, set the VendorShell resource XmNmwmDecorations to
appropriate values: MWM_DECOR_NONE (or a bitwise or of values).

-----------------------------------------------------------------------------
Subject: 53)  Is there an ICCCM compliant way of setting window manager
decorations?

Answer: Tom LaStrange (toml@LaStrange.COM) writes: "No, there is no ICCCM
portable way to alter decorations."

-----------------------------------------------------------------------------
Subject: 54)  How can I put decorations on transient windows using olwm?

Answer: This code is from Jean-Philippe Martin-Flatin <syj@ecmwf.co.uk>:

/**********************************************************************
** WindowDecorations.c
**
** Manages window decorations under the OpenLook window manager (OLWM).
**
** Adapted from a C++ program posted to comp.windows.x.motif by:
**
**    +--------------------------------------------------------------+
**    | Ron Edmark                          User Interface Group     |
**    | Tel:        (408) 980-1500 x282     Integrated Systems, Inc. |
**    | Internet:   edmark@isi.com          3260 Jay St.             |
**    | Voice mail: (408) 980-1590 x282     Santa Clara, CA 95054    |
**    +--------------------------------------------------------------+
***********************************************************************/

#include <X11/X.h>
#include <X11/Xlib.h>
#include <X11/Xatom.h>
#include <X11/Intrinsic.h>
#include <X11/StringDefs.h>
#include <X11/Protocols.h>
#include <Xm/Xm.h>
#include <Xm/AtomMgr.h>

/*
** Decorations for OpenLook:
** The caller can OR different mask options to change the frame decoration.
*/
#define OLWM_Header     (long)(1<<0)
#define OLWM_Resize     (long)(1<<1)
#define OLWM_Close      (long)(1<<2)

/*
** Prototypes
*/
static void InstallOLWMAtoms  (Widget w);
static void AddOLWMDialogFrame(Widget widget, long decorationMask);


/*
** Global variables
*/
static Atom AtomWinAttr;
static Atom AtomWTOther;
static Atom AtomDecor;
static Atom AtomResize;
static Atom AtomHeader;
static Atom AtomClose;
static int  not_installed_yet = TRUE;


static void InstallOLWMAtoms(Widget w)
{
        AtomWinAttr = XInternAtom(XtDisplay(w), "_OL_WIN_ATTR" ,    FALSE);
        AtomWTOther = XInternAtom(XtDisplay(w), "_OL_WT_OTHER",     FALSE);
        AtomDecor   = XInternAtom(XtDisplay(w), "_OL_DECOR_ADD",    FALSE);
        AtomResize  = XInternAtom(XtDisplay(w), "_OL_DECOR_RESIZE", FALSE);
        AtomHeader  = XInternAtom(XtDisplay(w), "_OL_DECOR_HEADER", FALSE);
        AtomClose   = XInternAtom(XtDisplay(w), "_OL_DECOR_CLOSE",  FALSE);

        not_installed_yet = FALSE;
}

static void AddOLWMDialogFrame(Widget widget, long decorationMask)
{
        Atom   winAttrs[2];
        Atom   winDecor[3];
        Widget shell = widget;
        Window win;
        int    numberOfDecorations = 0;

        /*
        ** Make sure atoms for OpenLook are installed only once
        */
        if (not_installed_yet) InstallOLWMAtoms(widget);

        while (!XtIsShell(shell)) shell = XtParent(shell);

        win = XtWindow(shell);

        /*
        ** Tell Open Look that our window is not one of the standard OLWM window        ** types. See OLIT Widget Set Programmer's Guide pp.70-73.
        */

        winAttrs[0] = AtomWTOther;

        XChangeProperty(XtDisplay(shell),
                        win,
                        AtomWinAttr,
                        XA_ATOM,
                        32,
                        PropModeReplace,
                        (unsigned char*)winAttrs,
                        1);

        /*
        ** Tell Open Look to add some decorations to our window
        */
        numberOfDecorations = 0;
        if (decorationMask & OLWM_Header)
                winDecor[numberOfDecorations++] = AtomHeader;
        if (decorationMask & OLWM_Resize)
                winDecor[numberOfDecorations++] = AtomResize;
        if (decorationMask & OLWM_Close)
        {
                winDecor[numberOfDecorations++] = AtomClose;

                /*
                ** If the close button is specified, the header must be
                ** specified. If the header bit is not set, set it.
                */
                if (!(decorationMask & OLWM_Header))
                        winDecor[numberOfDecorations++] = AtomHeader;
        }

        XChangeProperty(XtDisplay(shell),
                        win,
                        AtomDecor,
                        XA_ATOM,
                        32,
                        PropModeReplace,
                        (unsigned char*)winDecor,
                        numberOfDecorations);
}


/*
** Example of use of AddOLWMDialogFrame, with a bit of extra stuff
*/
void register_dialog_to_WM(Widget shell, XtCallbackProc Cbk_func)
{
        Atom atom;

        /*
        ** Alias the "Close" item in system menu attached to dialog shell
        ** to the activate callback of "Exit" in the menubar
        */
        if (Cbk_func)
        {
            atom = XmInternAtom(XtDisplay(shell),"WM_DELETE_WINDOW",TRUE);
            XmAddWMProtocolCallback(shell,atom, Cbk_func,NULL);
        }

        /*
        ** If Motif is the window manager, skip OpenLook specific stuff
        */
        if (XmIsMotifWMRunning(shell)) return;

        /*
        ** Register dialog shell to OpenLook.
        **
        ** WARNING: on some systems, adding the "Close" button allows the title
        ** to be properly centered in the title bar. On others, activating
        ** "Close" crashes OpenLook. The reason is not clear yet, but it seems
        ** the first case occurs with OpenWindows 2 while the second occurs with
        ** Openwindows 3. Thus, comment out one of the two following lines as
        ** suitable for your site, and send e-mail to syj@ecmwf.co.uk if you
        ** find out what is going on !
        */
        AddOLWMDialogFrame(shell,(OLWM_Header | OLWM_Resize));
/*      AddOLWMDialogFrame(shell,(OLWM_Header | OLWM_Resize | OLWM_Close)); */
}


-----------------------------------------------------------------------------
Subject: 55)  How can I turn off the Motif window manager functions from the
system menu?
[Last modified: October 92]

Answer: The user of an application can control functions in the system menu
for an application using the mwm resource clientFunctions:

        mwm.application_name.clientFunctions: -resize -close

Note that mwm will have to be restarted after putting this in their resource
database.


Answer: The writer of an application can only remove items.  Be warned that
your users will probably gnash their teeth, swear furiously at your product
and stop using it if they discover that you have done this.  (Especially if
you have removed the Close button, your application has hung and it has taken
up all of memory and swap so it can't be killed.) Much better is to catch the
action gracefully as in the next question.

        #include <Xm/MwmUtil.h>

        XtVaGetValues(shell, XmNmwmFunctions, &int_val, NULL);
        int_val &= ~(MWM_FUNC_CLOSE | MWM_FUNC_ALL);
        XtVaSetValues(shell, XmNmwmFunctions, int_val, NULL);


-----------------------------------------------------------------------------
Subject: 56)  How can I keep my shell windows fixed in size?

[Last modified: Apr 95]

Answer: In addition to the decoration controls mentioned in the previous few
subjects of this FAQ, you can also specify size hints for your shell widget's
windows with these resources:  XmNminWidth, XmNmaxWidth, XmNminHeight,
XmNmaxHeight.  If you set the min and max values to the same size, most window
managers will not allow the user to resize the window.

Thanks to Ken Lee, kenton@rahul.net

-----------------------------------------------------------------------------
Subject: 57)  How can my application know when the user has quit Mwm?

[Last modified: Feb 95]

Answer: Looking for an answer to this one. ANY TAKERS? (Still looking.)

-----------------------------------------------------------------------------
Subject: 58)  How can I tell if the user has selected "Close" from the system
menu?  I need to do some clean up before exiting.

[Last modified: Feb 95]

Answer:          This works with R4 Intrinsics

        #include <Xm/Protocols.h>

        void FinalCleanupCB(w, client_data, call_data)
        Widget   w;
        caddr_t  client_data, call_data;
        {
                /* tidy up stuff here */
                ...
                /* exit if you want to */
                exit (0);
        }

        main()
        {
                Atom wm_delete_window;

                ...
                XtRealizeWidget(toplevel);
                ...
                wm_delete_window =
                        XmInternAtom(XtDisplay(toplevel),
                                "WM_DELETE_WINDOW", False);
                XmAddWMProtocolCallback(toplevel, wm_delete_window,
                        FinalCleanupCB, NULL);
                XtMainLoop();
        }

This will still kill the application.  To turn this behaviour off so that the
application is not killed, set the shell resource XmNdeleteResponse to
XmDO_NOTHING.  This means that users cannot kill your application via the
system menu, and may be a bad thing.

If you are running R3, Bob Hays (bobhays@spss.com) has suggested this:
"Trapping on the delete window atom does not work as I cannot force my action
routine to the top of the action list for the activity desired, so the window
manager kills my window anyway BEFORE I can do anything about it.  And, to
make matters worse, the window manager (Motif in this case) tacks its atoms
and handlers onto the window at some unknown point down the line after the
creation of the shell widget as far as I can tell.  So....

I have a procedure as an action routine for ClientMessage.  Then, if I get a
property change event on the window manager protocols, I then tack on
WM_SAVE_YOURSELF.  If I get this request, I clean up (it seems to happen on
WM_DELETE_WINDOW, BTW, if you remove WM_DELETE_WINDOW from the WM protocols
atom) and exit.  Works great and is less filling overall:-)."

The following similar code fragment is from Dave Mink
(mink@cadcam.pms.ford.com):

void setupCloseCallback(Widget shell, XtCallbackProc closeProc)
{
    /* get window manager delete protocol atom */
    Atom deletewin_protocol = XmInternAtom(
        XtDisplay(shell), "WM_DELETE_WINDOW", True
        );
    /* turn off default delete response */
    XtVaSetValues( shell,
        XmNdeleteResponse, XmDO_NOTHING,
        NULL);
    /* add callback for window manager delete protocol */
    XmAddWMProtocolCallback(shell, deletewin_protocol, closeProc, NULL);
}


-----------------------------------------------------------------------------
Subject: 59)  Is there an mwm virtual desktop manager?

[Last modified: Nov 94]

Answer: David Kaelbling (drk@x.org) reports: In OSF/Motif 2.0, mwm supports
both workspaces (see the f.cci function and the wsm demo for a sample
interface) and a virtual root window.  To manipulate the virtual screen
f.goto, f.pan, and f.track_pan were added, as were iconPinned and clientPinned
client resources.

Peter E. Wagner (pew@cs.brown.edu): Imagine that your "desktop" extends beyond
the view provided by your monitor.  A virtual window manager gives you access
to the space beyond your viewport (i.e. your screen) by allowing you to move
the viewport to other areas of the extended desktop.

The first one is Solbourne's swm, which spawned vtwm/tvtwm/olvwm.

David B. Lewis created one.  suresh@unipalm.co.uk has further developed it
into the UniPalm product DOORS, which is only available as a source code
extension to the MOTIF window manager.  The price of the source and unlimited
right to distribute binaries is 10,000 pounds Sterling.  Alternately, source
and right to use within one company is 2,000 pounds Sterling.  Contact Peter
Dawe

Unipalm Limited                         Voice: +44 (0) 223 420002
216 The Science Park                    Fax:   +44 (0) 223 426868
CAMBRIDGE
CB4 4WA

An enhancement request for such an object has been filed with OSF.

Tim Failes (tim@aus.oz.au) of Advanced User Systems Pty Ltd writes: IXI has a
fully supported product called Panorama which provides this facility.
Panorama allows the user to pan around the virtual work space, dynamically
change the size of the virtual workspace, and also access windows via an icon
box.  Panorama also includes a point-and-click tool for setting resources such
as colours, focus policy, etc. [IXI contact information appears in the "Where
can I get Motif?" subject. -ed]

-----------------------------------------------------------------------------
Subject: 60)  Why does mwm 1.2 crash on startup?

[Last modified: March 93]

Answer: David Brooks wrote: The commonest cause of early mwm demise is as
follows:

- You, or someone, built Xlib in the default way using the Xsi
  internationalization functions.

- Your Xlib wasn't installed completely (or at all).

- Early on, mwm calls the function XmbTextListToTextProperty, which calls
  _XConvertMBToCT, which looks for the Xsi locale database, finds it
  missing, ignores this fact and tries to dereference zero.

The workaround is to find the database *somewhere*, and point the environment
variable XNLSPATH at it.  For example, in my personal X source tree:

        setenv XNLSPATH /home/X11r5src/mit/lib/nls/Xsi

-----------------------------------------------------------------------------
Subject: 61)  How do I obtain the size of a unmanaged shell widget?

Answer: In the code below, use getsize() for widgets which have been managed,
and getsize2() for newly created shell widgets which have not yet been
managed.

getsize2() takes two widget parameters because popup dialogs etc.  _consist_
of two separate widgets - the parent shell and the child bulletin board, form,
whatever.  This important distinction (somewhat glossed over in the Motif
manuals) is the cause of a large number of queries in comp.windows.x.motif.
XmCreate...Dialog() functions return the (bulletin board, form, whatever)
_child_ of the pair, not the parent shell.

getsize2() takes the _shell_ widget as it's first parameter, and the shell's
_child_ (the bulletin board, form, whatever) as it's second.  Thus, if you are
using code like widget = XmCreate...Dialog() to create your popup dialogs, use
code like getsize2(XtParent(widget),widget,&width,&height) to get the width
and height. If you use e.g. XmCreateDialogShell() or XtCreatePopupShell(),
then you are creating the the shell widget and it's child explicitly, and can
just pass them into getsize2() with no problem.

Note: getsize2() calls getsize().

/* getsize(widget,width,height);
 * Widget widget;
 * int *width,*height;
 *
 * returns the width and height of a managed widget */


void getsize(l,w,h) Widget l; int *w,*h; { Dimension w_,h_,b_;

static Arg size_args[] =
  {
  { XmNwidth,0 },
  { XmNheight,0 },
  { XmNborderWidth,0 },
  };

size_args[0].value = (XtArgVal)&w_; size_args[1].value = (XtArgVal)&h_;
size_args[2].value = (XtArgVal)&b_;

XtGetValues(l,size_args,3);

if (w) *w = w_ + b_; if (h) *h = h_ + b_; } /*
getsize2(shell,child,width,height);
 * Widget shell,child;
 * int *width,*height;
 *
 * returns the width, height of an unmanaged shell widget */

void getsize2(p,c,w,h) Widget p,c; int *w,*h; { XtSetMappedWhenManaged(p,0);

XtManageChild(c);

getsize(p,w,h);

XtUnmanageChild(c);

XtSetMappedWhenManaged(p,-1); } submitted by: [ Huw Rogers  Communications
Software Engineer, NEC Corporation, Tokyo, Japan ] [ Email:
rogersh@ccs.mt.nec.co.jp  Fax: +81-3-5476-1005  Tel: +81-3-5476-1096 ]

-----------------------------------------------------------------------------
Subject: 62)  XtGetValues() on XmNx and XmNy of my top level shell don't
return the correct root window coordinates.  How do I compute these?

Answer: XmNx and XmNy are the coordinates relative to your shell's parent
window, which is usually a window manager's frame window.  To translate to the
root coordinate space, use XtTranslateCoords() or XTranslateCoordinates().

Thanks to Ken Lee, kenton@rahul.net

-----------------------------------------------------------------------------
Subject: 63)  How can I create a shell widget with a non-default visual type?

[Last modified: Apr 95]

Answer: You must specify the colormap, visual type, and depth for the shell
before it is realized.  If you don't specify all three resources (or specify
them incorrectly), you will probably get BadMatch protocol errors from your X
server.

Thanks to Ken Lee, kenton@rahul.net

-----------------------------------------------------------------------------
END OF PART TWO
