Mercurial > emacs
annotate lwlib/lwlib-Xlw.c @ 49226:98b5c90cebb6
*** empty log message ***
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Tue, 14 Jan 2003 10:15:40 +0000 |
parents | 7fb1caba0f51 |
children | 23a1cea22d13 |
rev | line source |
---|---|
5626 | 1 /* The lwlib interface to "xlwmenu" menus. |
2 Copyright (C) 1992 Lucid, Inc. | |
3 | |
4 This file is part of the Lucid Widget Library. | |
5 | |
6 The Lucid Widget Library is free software; you can redistribute it and/or | |
7 modify it under the terms of the GNU General Public License as published by | |
8 the Free Software Foundation; either version 1, or (at your option) | |
9 any later version. | |
10 | |
11 The Lucid Widget Library is distributed in the hope that it will be useful, | |
12 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 GNU General Public License for more details. | |
15 | |
16 You should have received a copy of the GNU General Public License | |
17 along with GNU Emacs; see the file COPYING. If not, write to | |
14186
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
12745
diff
changeset
|
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
ee40177f6c68
Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents:
12745
diff
changeset
|
19 Boston, MA 02111-1307, USA. */ |
5626 | 20 |
26087
e0d966fb548f
Add support for large files, plus some locale improvements.
Paul Eggert <eggert@twinsun.com>
parents:
14186
diff
changeset
|
21 #ifdef HAVE_CONFIG_H |
e0d966fb548f
Add support for large files, plus some locale improvements.
Paul Eggert <eggert@twinsun.com>
parents:
14186
diff
changeset
|
22 #include <config.h> |
e0d966fb548f
Add support for large files, plus some locale improvements.
Paul Eggert <eggert@twinsun.com>
parents:
14186
diff
changeset
|
23 #endif |
e0d966fb548f
Add support for large files, plus some locale improvements.
Paul Eggert <eggert@twinsun.com>
parents:
14186
diff
changeset
|
24 |
41767 | 25 #include "../src/lisp.h" |
26 | |
5626 | 27 #include "lwlib-Xlw.h" |
28 #include <X11/StringDefs.h> | |
29 #include <X11/IntrinsicP.h> | |
30 #include <X11/ObjectP.h> | |
31 #include <X11/CompositeP.h> | |
32 #include <X11/Shell.h> | |
33 #include "xlwmenu.h" | |
34 | |
36955
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
35 #if 0 |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
36 |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
37 #include <stdio.h> |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
38 |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
39 /* Print the complete X resource name of widget WIDGET to stderr. |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
40 This is sometimes handy to have available. */ |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
41 |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
42 void |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
43 x_print_complete_resource_name (widget) |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
44 Widget widget; |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
45 { |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
46 int i; |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
47 String names[100]; |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
48 |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
49 for (i = 0; i < 100 && widget != NULL; ++i) |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
50 { |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
51 names[i] = XtName (widget); |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
52 widget = XtParent (widget); |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
53 } |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
54 |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
55 for (--i; i >= 1; --i) |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
56 fprintf (stderr, "%s.", names[i]); |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
57 fprintf (stderr, "%s\n", names[0]); |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
58 } |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
59 |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
60 #endif /* 0 */ |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
61 |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
62 |
5626 | 63 /* Menu callbacks */ |
27334
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
64 |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
65 /* Callback XtNhighlightCallback for Lucid menus. W is the menu |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
66 widget, CLIENT_DATA contains a pointer to the widget_instance |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
67 for the menu, CALL_DATA contains a pointer to the widget_value |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
68 structure for the highlighted menu item. The latter may be null |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
69 if there isn't any highlighted menu item. */ |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
70 |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
71 static void |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
72 highlight_hook (w, client_data, call_data) |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
73 Widget w; |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
74 XtPointer client_data; |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
75 XtPointer call_data; |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
76 { |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
77 widget_instance *instance = (widget_instance *) client_data; |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
78 |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
79 if (instance->info->highlight_cb |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
80 && !w->core.being_destroyed) |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
81 instance->info->highlight_cb (w, instance->info->id, call_data); |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
82 } |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
83 |
5626 | 84 static void |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
85 pre_hook (w, client_data, call_data) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
86 Widget w; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
87 XtPointer client_data; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
88 XtPointer call_data; |
5626 | 89 { |
90 widget_instance* instance = (widget_instance*)client_data; | |
91 widget_value* val; | |
92 | |
93 if (w->core.being_destroyed) | |
94 return; | |
95 | |
96 val = lw_get_widget_value_for_widget (instance, w); | |
97 if (instance->info->pre_activate_cb) | |
98 instance->info->pre_activate_cb (w, instance->info->id, | |
99 val ? val->call_data : NULL); | |
100 } | |
101 | |
102 static void | |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
103 pick_hook (w, client_data, call_data) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
104 Widget w; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
105 XtPointer client_data; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
106 XtPointer call_data; |
5626 | 107 { |
108 widget_instance* instance = (widget_instance*)client_data; | |
109 widget_value* contents_val = (widget_value*)call_data; | |
110 widget_value* widget_val; | |
111 XtPointer widget_arg; | |
112 | |
113 if (w->core.being_destroyed) | |
114 return; | |
115 | |
116 if (instance->info->selection_cb && contents_val && contents_val->enabled | |
117 && !contents_val->contents) | |
118 instance->info->selection_cb (w, instance->info->id, | |
119 contents_val->call_data); | |
120 | |
121 widget_val = lw_get_widget_value_for_widget (instance, w); | |
122 widget_arg = widget_val ? widget_val->call_data : NULL; | |
123 if (instance->info->post_activate_cb) | |
124 instance->info->post_activate_cb (w, instance->info->id, widget_arg); | |
125 | |
126 } | |
127 | |
128 /* creation functions */ | |
5993
5feb28cb62c8
*** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
5983
diff
changeset
|
129 |
5626 | 130 static Widget |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
131 xlw_create_menubar (instance) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
132 widget_instance* instance; |
5626 | 133 { |
5951
ddd8c555b2fc
*** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
5708
diff
changeset
|
134 Widget widget; |
8786 | 135 Arg al[5]; |
6040
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
136 int ac = 0; |
5951
ddd8c555b2fc
*** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
5708
diff
changeset
|
137 |
6040
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
138 XtSetArg (al[ac], XtNmenu, instance->info->val); ac++; |
8786 | 139 #ifdef emacs |
140 XtSetArg (al[ac], XtNshowGrip, 0); ac++; | |
141 XtSetArg (al[ac], XtNresizeToPreferred, 1); ac++; | |
142 XtSetArg (al[ac], XtNallowResize, 1); ac++; | |
143 #endif | |
5951
ddd8c555b2fc
*** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
5708
diff
changeset
|
144 |
6040
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
145 /* This used to use XtVaCreateWidget, but an old Xt version |
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
146 has a bug in XtVaCreateWidget that frees instance->info->name. */ |
6009
f68004daa523
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5993
diff
changeset
|
147 widget |
6040
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
148 = XtCreateWidget (instance->info->name, xlwMenuWidgetClass, |
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
149 instance->parent, al, ac); |
5952
908e36c0235d
*** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
5951
diff
changeset
|
150 |
5626 | 151 XtAddCallback (widget, XtNopen, pre_hook, (XtPointer)instance); |
152 XtAddCallback (widget, XtNselect, pick_hook, (XtPointer)instance); | |
27334
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
153 XtAddCallback (widget, XtNhighlightCallback, highlight_hook, |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
154 (XtPointer)instance); |
5626 | 155 return widget; |
156 } | |
157 | |
158 static Widget | |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
159 xlw_create_popup_menu (instance) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
160 widget_instance* instance; |
5626 | 161 { |
6009
f68004daa523
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5993
diff
changeset
|
162 Widget popup_shell |
f68004daa523
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5993
diff
changeset
|
163 = XtCreatePopupShell (instance->info->name, overrideShellWidgetClass, |
f68004daa523
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5993
diff
changeset
|
164 instance->parent, NULL, 0); |
5626 | 165 |
5952
908e36c0235d
*** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
5951
diff
changeset
|
166 Widget widget; |
6040
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
167 Arg al[2]; |
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
168 int ac = 0; |
5952
908e36c0235d
*** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
5951
diff
changeset
|
169 |
6040
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
170 XtSetArg (al[ac], XtNmenu, instance->info->val); ac++; |
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
171 XtSetArg (al[ac], XtNhorizontal, False); ac++; |
5952
908e36c0235d
*** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
5951
diff
changeset
|
172 |
6040
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
173 /* This used to use XtVaManagedCreateWidget, but an old Xt version |
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
174 has a bug in XtVaManagedCreateWidget that frees instance->info->name. */ |
6009
f68004daa523
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5993
diff
changeset
|
175 widget |
6040
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
176 = XtCreateManagedWidget ("popup", xlwMenuWidgetClass, |
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
177 popup_shell, al, ac); |
5952
908e36c0235d
*** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
5951
diff
changeset
|
178 |
5626 | 179 XtAddCallback (widget, XtNselect, pick_hook, (XtPointer)instance); |
27334
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
180 XtAddCallback (widget, XtNhighlightCallback, highlight_hook, |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
181 (XtPointer)instance); |
5626 | 182 return popup_shell; |
183 } | |
184 | |
185 widget_creation_entry | |
186 xlw_creation_table [] = | |
187 { | |
188 {"menubar", xlw_create_menubar}, | |
189 {"popup", xlw_create_popup_menu}, | |
190 {NULL, NULL} | |
191 }; | |
192 | |
193 Boolean | |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
194 lw_lucid_widget_p (widget) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
195 Widget widget; |
5626 | 196 { |
197 WidgetClass the_class = XtClass (widget); | |
6009
f68004daa523
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5993
diff
changeset
|
198 |
5626 | 199 if (the_class == xlwMenuWidgetClass) |
200 return True; | |
201 if (the_class == overrideShellWidgetClass) | |
6009
f68004daa523
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5993
diff
changeset
|
202 return (XtClass (((CompositeWidget)widget)->composite.children [0]) |
f68004daa523
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5993
diff
changeset
|
203 == xlwMenuWidgetClass); |
5626 | 204 return False; |
205 } | |
206 | |
207 void | |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
208 xlw_update_one_widget (instance, widget, val, deep_p) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
209 widget_instance* instance; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
210 Widget widget; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
211 widget_value* val; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
212 Boolean deep_p; |
5626 | 213 { |
214 XlwMenuWidget mw; | |
6040
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
215 Arg al[1]; |
5626 | 216 |
217 if (XtIsShell (widget)) | |
218 mw = (XlwMenuWidget)((CompositeWidget)widget)->composite.children [0]; | |
219 else | |
220 mw = (XlwMenuWidget)widget; | |
6040
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
221 |
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
222 /* This used to use XtVaSetValues, but some old Xt versions |
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
223 that have a bug in XtVaCreateWidget might have it here too. */ |
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
224 XtSetArg (al[0], XtNmenu, instance->info->val); |
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
225 |
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
226 XtSetValues (widget, al, 1); |
5626 | 227 } |
228 | |
229 void | |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
230 xlw_update_one_value (instance, widget, val) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
231 widget_instance* instance; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
232 Widget widget; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
233 widget_value* val; |
5626 | 234 { |
235 return; | |
236 } | |
237 | |
238 void | |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
239 xlw_pop_instance (instance, up) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
240 widget_instance* instance; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
241 Boolean up; |
5626 | 242 { |
243 } | |
244 | |
245 void | |
12745
4da8b8ac5211
(xlw_popup_menu): New arg event.
Richard M. Stallman <rms@gnu.org>
parents:
8786
diff
changeset
|
246 xlw_popup_menu (widget, event) |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
247 Widget widget; |
12745
4da8b8ac5211
(xlw_popup_menu): New arg event.
Richard M. Stallman <rms@gnu.org>
parents:
8786
diff
changeset
|
248 XEvent *event; |
5626 | 249 { |
250 XButtonPressedEvent dummy; | |
251 XlwMenuWidget mw; | |
252 | |
253 if (!XtIsShell (widget)) | |
254 return; | |
255 | |
256 mw = (XlwMenuWidget)((CompositeWidget)widget)->composite.children [0]; | |
257 | |
12745
4da8b8ac5211
(xlw_popup_menu): New arg event.
Richard M. Stallman <rms@gnu.org>
parents:
8786
diff
changeset
|
258 if (event) |
29892
7730ae862134
(xlw_popup_menu): Cast arg of pop_up_menu.
Dave Love <fx@gnu.org>
parents:
27334
diff
changeset
|
259 pop_up_menu (mw, (XButtonPressedEvent*) event); |
12745
4da8b8ac5211
(xlw_popup_menu): New arg event.
Richard M. Stallman <rms@gnu.org>
parents:
8786
diff
changeset
|
260 else |
4da8b8ac5211
(xlw_popup_menu): New arg event.
Richard M. Stallman <rms@gnu.org>
parents:
8786
diff
changeset
|
261 { |
4da8b8ac5211
(xlw_popup_menu): New arg event.
Richard M. Stallman <rms@gnu.org>
parents:
8786
diff
changeset
|
262 dummy.type = ButtonPress; |
4da8b8ac5211
(xlw_popup_menu): New arg event.
Richard M. Stallman <rms@gnu.org>
parents:
8786
diff
changeset
|
263 dummy.serial = 0; |
4da8b8ac5211
(xlw_popup_menu): New arg event.
Richard M. Stallman <rms@gnu.org>
parents:
8786
diff
changeset
|
264 dummy.send_event = 0; |
4da8b8ac5211
(xlw_popup_menu): New arg event.
Richard M. Stallman <rms@gnu.org>
parents:
8786
diff
changeset
|
265 dummy.display = XtDisplay (widget); |
4da8b8ac5211
(xlw_popup_menu): New arg event.
Richard M. Stallman <rms@gnu.org>
parents:
8786
diff
changeset
|
266 dummy.window = XtWindow (XtParent (widget)); |
4da8b8ac5211
(xlw_popup_menu): New arg event.
Richard M. Stallman <rms@gnu.org>
parents:
8786
diff
changeset
|
267 dummy.time = CurrentTime; |
4da8b8ac5211
(xlw_popup_menu): New arg event.
Richard M. Stallman <rms@gnu.org>
parents:
8786
diff
changeset
|
268 dummy.button = 0; |
4da8b8ac5211
(xlw_popup_menu): New arg event.
Richard M. Stallman <rms@gnu.org>
parents:
8786
diff
changeset
|
269 XQueryPointer (dummy.display, dummy.window, &dummy.root, |
4da8b8ac5211
(xlw_popup_menu): New arg event.
Richard M. Stallman <rms@gnu.org>
parents:
8786
diff
changeset
|
270 &dummy.subwindow, &dummy.x_root, &dummy.y_root, |
4da8b8ac5211
(xlw_popup_menu): New arg event.
Richard M. Stallman <rms@gnu.org>
parents:
8786
diff
changeset
|
271 &dummy.x, &dummy.y, &dummy.state); |
5626 | 272 |
12745
4da8b8ac5211
(xlw_popup_menu): New arg event.
Richard M. Stallman <rms@gnu.org>
parents:
8786
diff
changeset
|
273 pop_up_menu (mw, &dummy); |
4da8b8ac5211
(xlw_popup_menu): New arg event.
Richard M. Stallman <rms@gnu.org>
parents:
8786
diff
changeset
|
274 } |
5626 | 275 } |
276 | |
277 /* Destruction of instances */ | |
278 void | |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
279 xlw_destroy_instance (instance) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
280 widget_instance* instance; |
5626 | 281 { |
282 if (instance->widget) | |
283 XtDestroyWidget (instance->widget); | |
284 } | |
285 |