1 /* $Header: /cvsroot/lesstif/lesstif/test/Xm/vendor/test6.c,v 1.1 2001/03/16 14:28:01 amai Exp $ */
2 /*
3
4 see http://www.mail-archive.com/lesstif@hungry.com/msg00535.html
5
6 Hello Lesstif,
7
8 Scenario:
9
10 lesstif-0.91.4
11 Motif-2.0 widgets
12 Redhat 6.2
13
14 I get the warning message:
15
16 Warning: XtRemoveGrab asked to remove a widget not on the list
17
18 twice every time I destroy a toplevel shell.
19
20 I've included a simple example, press "Create Window 2" to make
21 a second window, and when you press "Quit 2" in this window, you'll
22 get the error message...
23
24 I don't get this message with openmotif :-)
25
26 Am I doing something wrong in my code, or is this a bug in Lesstif?
27
28 Mogens
29 --
30 Mogens Kjaer, Carlsberg Laboratory, Dept. of Chemistry
31 Gamle Carlsberg Vej 10, DK-2500 Valby, Denmark
32 Phone: +45 33 27 53 25, Fax: +45 33 27 47 08
33 Email: mk@crc.dk Homepage: http://www.crc.dk
34
35 */
36
37
38 #include <stdio.h>
39
40 #include <Xm/Xm.h>
41 #include <Xm/Form.h>
42 #include <Xm/Label.h>
43 #include <Xm/PushB.h>
44
45 void quit_callback ();
46 void window2_callback ();
47
48 static int n;
49 static Arg wargs[1000];
50 static Widget toplevel, form, quit, make_w2;
51 static Widget toplevel2, form2, quit2;
52
53 void
quit_callback(Widget w,caddr_t client_data,caddr_t user_data)54 quit_callback (Widget w, caddr_t client_data, caddr_t user_data)
55 {
56 exit (0);
57 }
58
59 void
quit2_callback(Widget w,caddr_t client_data,caddr_t user_data)60 quit2_callback (Widget w, caddr_t client_data, caddr_t user_data)
61 {
62 XtDestroyWidget (toplevel2);
63 }
64
65 void
make_w2_callback(Widget w,caddr_t client_data,caddr_t user_data)66 make_w2_callback (Widget w, caddr_t client_data, caddr_t user_data)
67 {
68 n = 0;
69 XtSetArg (wargs[n], XtNtitle, "Window 2");
70 n++;
71 toplevel2 =
72 XtCreateApplicationShell ("Window2", topLevelShellWidgetClass, wargs, n);
73
74 n = 0;
75 form2 =
76 XtCreateManagedWidget ("form2", xmFormWidgetClass, toplevel2, wargs, n);
77
78 n = 0;
79 XtSetArg (wargs[n], XmNtopAttachment, XmATTACH_FORM);
80 n++;
81 XtSetArg (wargs[n], XmNleftAttachment, XmATTACH_FORM);
82 n++;
83 XtSetArg (wargs[n], XmNlabelString, XmStringCreateSimple ("Quit 2"));
84 n++;
85 quit2 =
86 XtCreateManagedWidget ("quit2", xmPushButtonWidgetClass, form2, wargs, n);
87 XtAddCallback (quit2, XmNactivateCallback, (XtCallbackProc) quit2_callback,
88 NULL);
89
90 XtRealizeWidget (toplevel2);
91 }
92
93 int
main(int argc,char * argv[])94 main (int argc, char *argv[])
95 {
96 Widget xref;
97
98 n = 0;
99 toplevel =
100 XtInitialize ("example", "Example", (XrmOptionDescRec *) wargs, n, &argc,
101 argv);
102
103 n = 0;
104 form =
105 XtCreateManagedWidget ("form", xmFormWidgetClass, toplevel, wargs, n);
106
107 n = 0;
108 XtSetArg (wargs[n], XmNtopAttachment, XmATTACH_FORM);
109 n++;
110 XtSetArg (wargs[n], XmNleftAttachment, XmATTACH_FORM);
111 n++;
112 XtSetArg (wargs[n], XmNlabelString, XmStringCreateSimple ("Quit"));
113 n++;
114 xref = quit =
115 XtCreateManagedWidget ("quit", xmPushButtonWidgetClass, form, wargs, n);
116 XtAddCallback (quit, XmNactivateCallback, (XtCallbackProc) quit_callback,
117 NULL);
118
119 n = 0;
120 XtSetArg (wargs[n], XmNtopAttachment, XmATTACH_FORM);
121 n++;
122 XtSetArg (wargs[n], XmNleftAttachment, XmATTACH_WIDGET);
123 n++;
124 XtSetArg (wargs[n], XmNleftWidget, xref);
125 n++;
126 XtSetArg (wargs[n], XmNlabelString,
127 XmStringCreateSimple ("Create Window 2")); n++;
128 xref = make_w2 =
129 XtCreateManagedWidget ("make_w2", xmPushButtonWidgetClass, form, wargs,
130 n);
131 XtAddCallback (make_w2, XmNactivateCallback,
132 (XtCallbackProc) make_w2_callback, NULL);
133
134 XtRealizeWidget (toplevel);
135 #if 0
136 XtMainLoop ();
137 #else
138 LessTifTestMainLoop(toplevel);
139 #endif
140
141 exit(0);
142 }
143