/* $XConsortium: README /main/7 1996/07/15 14:22:00 drk $ */

Instructions for using the icccm/multi programs to test the clipboard
bug fixes done by Alastair Gourlay
-------------------------------------------------------------------------

There are two programs involved in testing the clipboard:
	icccm
	multi

icccm
-----
This program is a simple client that has been implemented to use the clipboard 
in the manner described by the ICCCM.  It does NOT use any of the Motif 
short cuts for dealing with clipboard cutting and pasting.  The client comes
up with a set of six pushbuttons that read as follows:

	Request TARGETS
	Request formats
	Request MULTIPLE
	Request TIMESTAMP
	Own CLIPBOARD
	Quit

"Request TARGETS" will print on the standard xterm display the results of an
XConvertSelection from the clipboard with ICCCM XA_TARGETS atom as the type
to select.

"Request formats" will print the XConvertSelection results of a loop through
any data in the clipboard found during the TARGETS request.

"Request MULTIPLE" will do the same as "formats" except it will use the ICCCM
atom XA_MULTIPLE and make only one XConvertSelection call to get all the
TARGETS data.

"Request TIMESTAMP" will print the XConvertSelection results using the ICCCM
XA_TIMESTAMP atom.

"Own CLIPBOARD" will call XSetSelectionOwner setting itself as the owner.



multi
-----
This program is a simple, typical Motif client that uses the clipboard.  It 
contains three elements, a string, an integer and a pixmap.  Each one can 
be toggled on or off.  At any time, the currently toggled-on items can
be cut, cut by name, or pasted to the clipboard.  Also, the last
clipboard action can be undone, the clipboard inquired, and the
clipboard locked and unlocked.  All of these actions are accomplished
using pushbuttons on the bottom of the window.

More than one multi can be run simultaneously, and the clipboard will use the
Motif clipboard operations between them.  But, whenever the "icccm" client
accesses the clipboard, standard icccm functions and actions are used.


To run the test:
----------------
Bring up two multi's (by running "multi &; multi &"), and then execute one
icccm (by running "icccm &").

Play with the cutting and pasting between the multi's to verify that the
clipboard operates properly between two Motif clients.  Then use the 
icccm program to verify that items cut from the Motif application can
properly be recognized by a non-Motif client.  Verify that this works for
cutting by name and regular cutting, and that it works for all three types
of data - strings, integers, and pixmaps, and various combinations of the 
three.

Also, verify that items cut from the icccm program can be pasted in the 
multi (Motif) application.  Do this by choosing "Own CLIPBOARD" from the 
icccm clipboard and then use the "Inquire" and "Paste" options in the multi
application.  "Inquire" should return STRING and INTEGER, "Paste" should
return "ICCCM Clipboard Text" (STRING) and "911" (INTEGER).

Also, see "ICCCM Version 1.0" document by David S. Rosenthal, section 2.6
for more details.

BUGS SHOWN BY THESE TESTS
 
Cutpaste3
PIRS No.:      3331
You can get multiple destination cursors in a Text widget.
See test  Cutpaste3 . An expose event will clear.
Version found in:	1.2
Version fixed in:	1.2S2
Assigned to:	HP
Priority:	7
Status:		R

Cutpaste3
PIRS No.:      3487
Text widgets created with variable font are not displayed
fully.  Top of text is chopped off.
Version found in:	1.2
Version fixed in:	1.2S3
Assigned to:	HP
Priority:	7
Status:		R

Cutpaste4a
PIRS No.:      2592
The client Cutpaste4b has a paned window. If you move in and
out of this client, you can get the sash and the P.B highlight
Version found in:	1.1.1
Version fixed in:	
Assigned to:	HP
Priority:	8
Status:		A

multi
PIRS No.:      2879
New DECW Clipboard Cut's will crash Motif clipboard Cut's and
vice-versa. Motif Clipboard needs to protect itself.
Version found in:	1.1
Version fixed in:	
Assigned to:	ALASTAIR GOURLAY
Priority:	8
Status:		A

multi
PIRS No.:      3348
When calling XmClipboardInquireCount(), motif passes NULL as
the format name. This causes XInternAtom to cause a core dump.
Version found in:	1.2
Version fixed in:	1.2S1
Assigned to:	ALASTAIR GOURLAY
Priority:	5
Status:		R

ENDBUGS
