wjhagins@VUSE.VANDERBILT.EDU (William J. Hagins) (10/28/89)
I am trying to "clear" a text widget. The example code does so upon activation of the <clear> button, but I also have a problem which I can not solve. After the text is cleared, if you try to retype into the text window, after the first character is typed, a '@' character comes up (apparantly the null character. This does not happen if you click the mouse in the window before typing. I am stumped, aand would like help. The code follows, along with the header file. Thank You -Jody. #include <stdio.h> #include <signal.h> #include <ctype.h> #include <X11/Xlib.h> #include <X11/StringDefs.h> #include <X11/IntrinsicP.h> #include <X11/Intrinsic.h> #include <X11/Command.h> #include <X11/Core.h> #include <X11/CoreP.h> #include <X11/Quarks.h> #include <X11/cursorfont.h> #include <Xaw/Scroll.h> #include <Xaw/Form.h> #include <Xaw/Viewport.h> #include <Xaw/Label.h> #include <Xaw/Text.h> #include <Xaw/AsciiText.h> #include <Xaw/Dialog.h> #include "fontdef.h" Arg args[20]; int n=0; FILE *outfile; char outfileName[] = "RE.DAT"; Widget toplevel = NULL; Widget quitButton = NULL; Widget acceptButton = NULL; Widget clearButton = NULL; Widget Scroller1 = NULL; Widget Form1 = NULL; Widget w1; char s1[30] = ""; /* *** check for the validity of the string definitions. maybe accessing wrong addresses *** */ #include "resmall.h" Display *myDisplay; static XrmOptionDescRec options[] = { {"-label\0","*button.label\0",XrmoptionSepArg, NULL} }; Syntax(call) char *call; { fprintf(stderr,"Usage: %s\n",call); } void Quit(w,client_data,call_data) Widget w; caddr_t client_data, call_data; { exit(0); } void Clear(wid,client_data,call_data) Widget wid; caddr_t client_data, call_data; { sprintf(s1,""); XtTextSetLastPos(w1,0); } /*************** M A I N ***********************************/ void main(argc,argv) char **argv; { int i,j; char s[20]; toplevel = XtInitialize("main","Demo",NULL,0, &argc,argv); n = 0; XtSetArg(args[n], XtNx, 20); n++; XtSetArg(args[n], XtNy, 0); n++; XtSetArg(args[n], XtNwidth, 200); n++; XtSetArg(args[n], XtNheight, 200); n++; XtSetValues(toplevel, args, n); myDisplay = XtDisplay(toplevel); n = 0; XtSetArg(args[n], XtNx, 0); n++; XtSetArg(args[n], XtNy, 0); n++; XtSetArg(args[n], XtNborderWidth, 0); n++; Form1 = XtCreateManagedWidget("Form1",formWidgetClass,toplevel,args, n); n = 0; XtSetArg(args[n], XtNborderWidth, 1); n++; XtSetArg(args[n], XtNlength, 18); n++; XtSetArg(args[n], XtNeditType, XttextEdit); n++; XtSetArg(args[n], XtNtextOptions, editable | scrollHorizontal); n++; XtSetArg(args[n], XtNvertDistance, 20); n++; XtSetArg(args[n], XtNlength, 29); n++; XtSetArg(args[n], XtNwidth, 80); n++; XtSetArg(args[n], XtNhorizDistance, 10); n++; sprintf(s,"w1"); XtSetArg(args[n], XtNstring, s1); n++; w1 = XtCreateManagedWidget(s,asciiStringWidgetClass,Form1,args, n); /*XtTextEnableRedisplay(w1);*/ n = 0; XtSetArg(args[n], XtNhorizDistance, 10); n++; XtSetArg(args[n], XtNvertDistance, 60); n++; XtSetArg(args[n], XtNheight, 30); n++; XtSetArg(args[n], XtNwidth, 40); n++; XtSetArg(args[n], XtNborderWidth, 1); n++; XtSetArg(args[n], XtNresize, False); n++; XtSetArg(args[n], XtNcursor, XCreateFontCursor(myDisplay, XC_gumby)); n++; quitButton = XtCreateManagedWidget("Quit",commandWidgetClass,Form1,args, n); n = 0; XtSetArg(args[n], XtNhorizDistance, 60); n++; XtSetArg(args[n], XtNvertDistance, 60); n++; XtSetArg(args[n], XtNheight, 30); n++; XtSetArg(args[n], XtNwidth, 40); n++; XtSetArg(args[n], XtNborderWidth, 1); n++; XtSetArg(args[n], XtNresize, False); n++; XtSetArg(args[n], XtNcursor, XCreateFontCursor(myDisplay, XC_gumby)); n++; clearButton = XtCreateManagedWidget("Clear",commandWidgetClass,Form1,args, n); XtAddCallback(quitButton, XtNcallback, Quit, NULL); XtAddCallback(clearButton, XtNcallback, Clear, NULL); XtRealizeWidget(toplevel); XtMainLoop(); }