[comp.windows.x] Selections

malbert@jeeves.shearson.com (Marc Albert) (04/25/91)

Following is a small program.  It attempts to get the contents of
CUT_BUFFER0 via the selection mechansism (sp?) whenever a Btn2Down
event happens.  I can't seem to make it work - in the function
SelectCallback *type always == 0 (XT_CONVERT_FAIL) and *length
always == 0.

Any suggestions would be appreciated.

#include <stdio.h>
#include <string.h>

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

#include <X11/Xaw/AsciiText.h>

static Widget topLevel;

void SelectionCallback(widget, ClientData, selection, type, value, length, format)
Widget widget;
XtPointer ClientData;
Atom *selection, *type;
XtPointer value;
unsigned long *length;
int *format;

{
	char *ptr;

	ptr = (char *)value;
	printf("Type: %d, Length: %d, Value: %s\n", *type, 
		*length, ptr);

	fflush(stdout);
}

void HandleNewRequest()

{
	Widget widget;

	widget = XtNameToWidget(topLevel, "*text");
	XtGetSelectionValue(widget, XA_CUT_BUFFER0, XA_STRING, 
		SelectionCallback, (XtPointer)0, 
		XtLastTimestampProcessed(XtDisplay(widget)));
}

Widget CreateHelpScreen(parent)
Widget parent;

{
	Widget widget;

	widget = XtCreateManagedWidget("text", asciiTextWidgetClass,
		parent, (Arg *)0, (Cardinal)0);

	return(widget);
}

void main(argc, argv)
int argc;
char **argv;

{
	Widget text;
	static XtActionsRec actions[] = {
		{ "Button2Press", HandleNewRequest }
	};

	topLevel = XtInitialize("xhelp", "XHelp", NULL, 0, &argc, argv);

	text = CreateHelpScreen(topLevel);
	XtAddActions(actions, XtNumber(actions));

	XtRealizeWidget(topLevel);
	XtOverrideTranslations(text,
		XtParseTranslationTable("<Btn2Down>: Button2Press()"));

	XtMainLoop();
}
--

Marc.

=====================================================================
Marc Albert 		Lehman Brothers
US Mail			388 Greenwhich Street, New York, NY
UUCP			...uunet!shearson.com!malbert
Work Phone		(212) 464-3061
Home Phone		(203) 378-8232

malbert@jeeves.shearson.com (Marc Albert) (04/26/91)

I have a small program which simply contains an Athena text widget.
When this program tries to do an XtGetSelectionValue() the message

	Error: Couldn't find per display information.

is displayed.  When this program is converted to OLIT everything is fine.
Anyone have any clues?

--

Marc.

=====================================================================
Marc Albert 		Lehman Brothers
US Mail			388 Greenwhich Street, New York, NY
UUCP			...uunet!shearson.com!malbert
Work Phone		(212) 464-3061
Home Phone		(203) 378-8232