Mercurial > emacs
annotate lwlib/lwlib-Xlw.c @ 80402:bc43e42e2fb4
(url-digest-auth): Changed an if so that the interaction between the
PROMPT and OVERWRITE arguments can no longer result in the user being
queried twice for the same login and password information.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Mon, 31 Mar 2008 22:02:24 +0000 |
parents | a1c6fb73c033 |
children | 606f2d163a64 3c31d7653adf |
rev | line source |
---|---|
5626 | 1 /* The lwlib interface to "xlwmenu" menus. |
2 Copyright (C) 1992 Lucid, Inc. | |
64769
6358e3c6075c
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64083
diff
changeset
|
3 Copyright (C) 1994, 2000, 2001, 2002, 2003, 2004, |
79747 | 4 2005, 2006, 2007, 2008 Free Software Foundation, Inc. |
5626 | 5 |
6 This file is part of the Lucid Widget Library. | |
7 | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
41767
diff
changeset
|
8 The Lucid Widget Library is free software; you can redistribute it and/or |
5626 | 9 modify it under the terms of the GNU General Public License as published by |
10 the Free Software Foundation; either version 1, or (at your option) | |
11 any later version. | |
12 | |
13 The Lucid Widget Library is distributed in the hope that it will be useful, | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
41767
diff
changeset
|
14 but WITHOUT ANY WARRANTY; without even the implied warranty of |
5626 | 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16 GNU General Public License for more details. | |
17 | |
18 You should have received a copy of the GNU General Public License | |
19 along with GNU Emacs; see the file COPYING. If not, write to | |
64083 | 20 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
21 Boston, MA 02110-1301, USA. */ | |
5626 | 22 |
26087
e0d966fb548f
Add support for large files, plus some locale improvements.
Paul Eggert <eggert@twinsun.com>
parents:
14186
diff
changeset
|
23 #ifdef HAVE_CONFIG_H |
e0d966fb548f
Add support for large files, plus some locale improvements.
Paul Eggert <eggert@twinsun.com>
parents:
14186
diff
changeset
|
24 #include <config.h> |
e0d966fb548f
Add support for large files, plus some locale improvements.
Paul Eggert <eggert@twinsun.com>
parents:
14186
diff
changeset
|
25 #endif |
e0d966fb548f
Add support for large files, plus some locale improvements.
Paul Eggert <eggert@twinsun.com>
parents:
14186
diff
changeset
|
26 |
51142
45a8df254788
Include lisp.h, not ../src/lisp.h.
Dave Love <fx@gnu.org>
parents:
49600
diff
changeset
|
27 #include "lisp.h" |
41767 | 28 |
5626 | 29 #include "lwlib-Xlw.h" |
30 #include <X11/StringDefs.h> | |
31 #include <X11/IntrinsicP.h> | |
32 #include <X11/ObjectP.h> | |
33 #include <X11/CompositeP.h> | |
34 #include <X11/Shell.h> | |
35 #include "xlwmenu.h" | |
36 | |
36955
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
37 #if 0 |
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 #include <stdio.h> |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
40 |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
41 /* 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
|
42 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
|
43 |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
44 void |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
45 x_print_complete_resource_name (widget) |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
46 Widget widget; |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
47 { |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
48 int i; |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
49 String names[100]; |
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 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
|
52 { |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
53 names[i] = XtName (widget); |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
54 widget = XtParent (widget); |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
55 } |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
56 |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
57 for (--i; i >= 1; --i) |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
58 fprintf (stderr, "%s.", names[i]); |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
59 fprintf (stderr, "%s\n", names[0]); |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
60 } |
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 #endif /* 0 */ |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
63 |
ebb6774c41db
(x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents:
29892
diff
changeset
|
64 |
5626 | 65 /* Menu callbacks */ |
27334
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
66 |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
67 /* Callback XtNhighlightCallback for Lucid menus. W is the menu |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
68 widget, CLIENT_DATA contains a pointer to the widget_instance |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
69 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
|
70 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
|
71 if there isn't any highlighted menu item. */ |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
72 |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
73 static void |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
74 highlight_hook (w, client_data, call_data) |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
75 Widget w; |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
76 XtPointer client_data; |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
77 XtPointer call_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 widget_instance *instance = (widget_instance *) client_data; |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
80 |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
81 if (instance->info->highlight_cb |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
82 && !w->core.being_destroyed) |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
83 instance->info->highlight_cb (w, instance->info->id, call_data); |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
84 } |
b0f7b611a20e
(highlight_hook): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
26087
diff
changeset
|
85 |
5626 | 86 static void |
75019
6be52bf115d4
(enter_hook, leave_hook): New functions
Jan Djärv <jan.h.d@swipnet.se>
parents:
68640
diff
changeset
|
87 enter_hook (w, client_data, call_data) |
6be52bf115d4
(enter_hook, leave_hook): New functions
Jan Djärv <jan.h.d@swipnet.se>
parents:
68640
diff
changeset
|
88 Widget w; |
6be52bf115d4
(enter_hook, leave_hook): New functions
Jan Djärv <jan.h.d@swipnet.se>
parents:
68640
diff
changeset
|
89 XtPointer client_data; |
6be52bf115d4
(enter_hook, leave_hook): New functions
Jan Djärv <jan.h.d@swipnet.se>
parents:
68640
diff
changeset
|
90 XtPointer call_data; |
6be52bf115d4
(enter_hook, leave_hook): New functions
Jan Djärv <jan.h.d@swipnet.se>
parents:
68640
diff
changeset
|
91 { |
6be52bf115d4
(enter_hook, leave_hook): New functions
Jan Djärv <jan.h.d@swipnet.se>
parents:
68640
diff
changeset
|
92 highlight_hook (w, client_data, call_data); |
6be52bf115d4
(enter_hook, leave_hook): New functions
Jan Djärv <jan.h.d@swipnet.se>
parents:
68640
diff
changeset
|
93 } |
6be52bf115d4
(enter_hook, leave_hook): New functions
Jan Djärv <jan.h.d@swipnet.se>
parents:
68640
diff
changeset
|
94 |
6be52bf115d4
(enter_hook, leave_hook): New functions
Jan Djärv <jan.h.d@swipnet.se>
parents:
68640
diff
changeset
|
95 static void |
6be52bf115d4
(enter_hook, leave_hook): New functions
Jan Djärv <jan.h.d@swipnet.se>
parents:
68640
diff
changeset
|
96 leave_hook (w, client_data, call_data) |
6be52bf115d4
(enter_hook, leave_hook): New functions
Jan Djärv <jan.h.d@swipnet.se>
parents:
68640
diff
changeset
|
97 Widget w; |
6be52bf115d4
(enter_hook, leave_hook): New functions
Jan Djärv <jan.h.d@swipnet.se>
parents:
68640
diff
changeset
|
98 XtPointer client_data; |
6be52bf115d4
(enter_hook, leave_hook): New functions
Jan Djärv <jan.h.d@swipnet.se>
parents:
68640
diff
changeset
|
99 XtPointer call_data; |
6be52bf115d4
(enter_hook, leave_hook): New functions
Jan Djärv <jan.h.d@swipnet.se>
parents:
68640
diff
changeset
|
100 { |
6be52bf115d4
(enter_hook, leave_hook): New functions
Jan Djärv <jan.h.d@swipnet.se>
parents:
68640
diff
changeset
|
101 highlight_hook (w, client_data, NULL); |
6be52bf115d4
(enter_hook, leave_hook): New functions
Jan Djärv <jan.h.d@swipnet.se>
parents:
68640
diff
changeset
|
102 } |
6be52bf115d4
(enter_hook, leave_hook): New functions
Jan Djärv <jan.h.d@swipnet.se>
parents:
68640
diff
changeset
|
103 |
6be52bf115d4
(enter_hook, leave_hook): New functions
Jan Djärv <jan.h.d@swipnet.se>
parents:
68640
diff
changeset
|
104 |
6be52bf115d4
(enter_hook, leave_hook): New functions
Jan Djärv <jan.h.d@swipnet.se>
parents:
68640
diff
changeset
|
105 static void |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
106 pre_hook (w, client_data, call_data) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
107 Widget w; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
108 XtPointer client_data; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
109 XtPointer call_data; |
5626 | 110 { |
111 widget_instance* instance = (widget_instance*)client_data; | |
112 widget_value* val; | |
113 | |
114 if (w->core.being_destroyed) | |
115 return; | |
116 | |
117 val = lw_get_widget_value_for_widget (instance, w); | |
118 if (instance->info->pre_activate_cb) | |
119 instance->info->pre_activate_cb (w, instance->info->id, | |
120 val ? val->call_data : NULL); | |
121 } | |
122 | |
123 static void | |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
124 pick_hook (w, client_data, call_data) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
125 Widget w; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
126 XtPointer client_data; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
127 XtPointer call_data; |
5626 | 128 { |
129 widget_instance* instance = (widget_instance*)client_data; | |
130 widget_value* contents_val = (widget_value*)call_data; | |
131 widget_value* widget_val; | |
132 XtPointer widget_arg; | |
133 | |
134 if (w->core.being_destroyed) | |
135 return; | |
136 | |
137 if (instance->info->selection_cb && contents_val && contents_val->enabled | |
138 && !contents_val->contents) | |
139 instance->info->selection_cb (w, instance->info->id, | |
140 contents_val->call_data); | |
141 | |
142 widget_val = lw_get_widget_value_for_widget (instance, w); | |
143 widget_arg = widget_val ? widget_val->call_data : NULL; | |
144 if (instance->info->post_activate_cb) | |
145 instance->info->post_activate_cb (w, instance->info->id, widget_arg); | |
146 | |
147 } | |
148 | |
149 /* creation functions */ | |
5993
5feb28cb62c8
*** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
5983
diff
changeset
|
150 |
5626 | 151 static Widget |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
152 xlw_create_menubar (instance) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
153 widget_instance* instance; |
5626 | 154 { |
5951
ddd8c555b2fc
*** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
5708
diff
changeset
|
155 Widget widget; |
8786 | 156 Arg al[5]; |
6040
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
157 int ac = 0; |
5951
ddd8c555b2fc
*** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
5708
diff
changeset
|
158 |
6040
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
159 XtSetArg (al[ac], XtNmenu, instance->info->val); ac++; |
8786 | 160 #ifdef emacs |
161 XtSetArg (al[ac], XtNshowGrip, 0); ac++; | |
162 XtSetArg (al[ac], XtNresizeToPreferred, 1); ac++; | |
163 XtSetArg (al[ac], XtNallowResize, 1); ac++; | |
164 #endif | |
5951
ddd8c555b2fc
*** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
5708
diff
changeset
|
165 |
6040
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
166 /* This used to use XtVaCreateWidget, but an old Xt version |
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
167 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
|
168 widget |
6040
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
169 = XtCreateWidget (instance->info->name, xlwMenuWidgetClass, |
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
170 instance->parent, al, ac); |
5952
908e36c0235d
*** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
5951
diff
changeset
|
171 |
5626 | 172 XtAddCallback (widget, XtNopen, pre_hook, (XtPointer)instance); |
173 XtAddCallback (widget, XtNselect, pick_hook, (XtPointer)instance); | |
75019
6be52bf115d4
(enter_hook, leave_hook): New functions
Jan Djärv <jan.h.d@swipnet.se>
parents:
68640
diff
changeset
|
174 XtAddCallback (widget, XtNleaveCallback, leave_hook, (XtPointer)instance); |
6be52bf115d4
(enter_hook, leave_hook): New functions
Jan Djärv <jan.h.d@swipnet.se>
parents:
68640
diff
changeset
|
175 XtAddCallback (widget, XtNenterCallback, enter_hook, (XtPointer)instance); |
5626 | 176 return widget; |
177 } | |
178 | |
179 static Widget | |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
180 xlw_create_popup_menu (instance) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
181 widget_instance* instance; |
5626 | 182 { |
6009
f68004daa523
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5993
diff
changeset
|
183 Widget popup_shell |
f68004daa523
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5993
diff
changeset
|
184 = XtCreatePopupShell (instance->info->name, overrideShellWidgetClass, |
f68004daa523
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5993
diff
changeset
|
185 instance->parent, NULL, 0); |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
41767
diff
changeset
|
186 |
5952
908e36c0235d
*** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
5951
diff
changeset
|
187 Widget widget; |
6040
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
188 Arg al[2]; |
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
189 int ac = 0; |
5952
908e36c0235d
*** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
5951
diff
changeset
|
190 |
6040
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
191 XtSetArg (al[ac], XtNmenu, instance->info->val); ac++; |
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
192 XtSetArg (al[ac], XtNhorizontal, False); ac++; |
5952
908e36c0235d
*** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
5951
diff
changeset
|
193 |
6040
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
194 /* This used to use XtVaManagedCreateWidget, but an old Xt version |
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
195 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
|
196 widget |
6040
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
197 = XtCreateManagedWidget ("popup", xlwMenuWidgetClass, |
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
198 popup_shell, al, ac); |
5952
908e36c0235d
*** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents:
5951
diff
changeset
|
199 |
5626 | 200 XtAddCallback (widget, XtNselect, pick_hook, (XtPointer)instance); |
75019
6be52bf115d4
(enter_hook, leave_hook): New functions
Jan Djärv <jan.h.d@swipnet.se>
parents:
68640
diff
changeset
|
201 XtAddCallback (widget, XtNleaveCallback, leave_hook, (XtPointer)instance); |
6be52bf115d4
(enter_hook, leave_hook): New functions
Jan Djärv <jan.h.d@swipnet.se>
parents:
68640
diff
changeset
|
202 XtAddCallback (widget, XtNenterCallback, enter_hook, (XtPointer)instance); |
53564
609ef1718642
Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents:
52401
diff
changeset
|
203 |
5626 | 204 return popup_shell; |
205 } | |
206 | |
49600
23a1cea22d13
Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents:
41767
diff
changeset
|
207 widget_creation_entry |
5626 | 208 xlw_creation_table [] = |
209 { | |
210 {"menubar", xlw_create_menubar}, | |
211 {"popup", xlw_create_popup_menu}, | |
212 {NULL, NULL} | |
213 }; | |
214 | |
215 Boolean | |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
216 lw_lucid_widget_p (widget) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
217 Widget widget; |
5626 | 218 { |
219 WidgetClass the_class = XtClass (widget); | |
6009
f68004daa523
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5993
diff
changeset
|
220 |
5626 | 221 if (the_class == xlwMenuWidgetClass) |
222 return True; | |
223 if (the_class == overrideShellWidgetClass) | |
6009
f68004daa523
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5993
diff
changeset
|
224 return (XtClass (((CompositeWidget)widget)->composite.children [0]) |
f68004daa523
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5993
diff
changeset
|
225 == xlwMenuWidgetClass); |
5626 | 226 return False; |
227 } | |
228 | |
229 void | |
51142
45a8df254788
Include lisp.h, not ../src/lisp.h.
Dave Love <fx@gnu.org>
parents:
49600
diff
changeset
|
230 #ifdef PROTOTYPES |
45a8df254788
Include lisp.h, not ../src/lisp.h.
Dave Love <fx@gnu.org>
parents:
49600
diff
changeset
|
231 xlw_update_one_widget (widget_instance* instance, Widget widget, |
45a8df254788
Include lisp.h, not ../src/lisp.h.
Dave Love <fx@gnu.org>
parents:
49600
diff
changeset
|
232 widget_value* val, Boolean deep_p) |
45a8df254788
Include lisp.h, not ../src/lisp.h.
Dave Love <fx@gnu.org>
parents:
49600
diff
changeset
|
233 #else |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
234 xlw_update_one_widget (instance, widget, val, deep_p) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
235 widget_instance* instance; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
236 Widget widget; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
237 widget_value* val; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
238 Boolean deep_p; |
51142
45a8df254788
Include lisp.h, not ../src/lisp.h.
Dave Love <fx@gnu.org>
parents:
49600
diff
changeset
|
239 #endif |
5626 | 240 { |
6040
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
241 Arg al[1]; |
5626 | 242 |
6040
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
243 /* This used to use XtVaSetValues, but some old Xt versions |
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
244 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
|
245 XtSetArg (al[0], XtNmenu, instance->info->val); |
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
246 |
7988b8acd29f
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
6009
diff
changeset
|
247 XtSetValues (widget, al, 1); |
5626 | 248 } |
249 | |
250 void | |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
251 xlw_update_one_value (instance, widget, val) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
252 widget_instance* instance; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
253 Widget widget; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
254 widget_value* val; |
5626 | 255 { |
256 return; | |
257 } | |
258 | |
259 void | |
51142
45a8df254788
Include lisp.h, not ../src/lisp.h.
Dave Love <fx@gnu.org>
parents:
49600
diff
changeset
|
260 #ifdef PROTOTYPES |
45a8df254788
Include lisp.h, not ../src/lisp.h.
Dave Love <fx@gnu.org>
parents:
49600
diff
changeset
|
261 xlw_pop_instance (widget_instance* instance, Boolean up) |
45a8df254788
Include lisp.h, not ../src/lisp.h.
Dave Love <fx@gnu.org>
parents:
49600
diff
changeset
|
262 #else |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
263 xlw_pop_instance (instance, up) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
264 widget_instance* instance; |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
265 Boolean up; |
51142
45a8df254788
Include lisp.h, not ../src/lisp.h.
Dave Love <fx@gnu.org>
parents:
49600
diff
changeset
|
266 #endif |
5626 | 267 { |
268 } | |
269 | |
270 void | |
12745
4da8b8ac5211
(xlw_popup_menu): New arg event.
Richard M. Stallman <rms@gnu.org>
parents:
8786
diff
changeset
|
271 xlw_popup_menu (widget, event) |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
272 Widget widget; |
12745
4da8b8ac5211
(xlw_popup_menu): New arg event.
Richard M. Stallman <rms@gnu.org>
parents:
8786
diff
changeset
|
273 XEvent *event; |
5626 | 274 { |
275 XlwMenuWidget mw; | |
276 | |
277 if (!XtIsShell (widget)) | |
278 return; | |
279 | |
280 mw = (XlwMenuWidget)((CompositeWidget)widget)->composite.children [0]; | |
281 | |
12745
4da8b8ac5211
(xlw_popup_menu): New arg event.
Richard M. Stallman <rms@gnu.org>
parents:
8786
diff
changeset
|
282 if (event) |
53564
609ef1718642
Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents:
52401
diff
changeset
|
283 XtCallActionProc ((Widget) mw, "start", event, NULL, 0); |
12745
4da8b8ac5211
(xlw_popup_menu): New arg event.
Richard M. Stallman <rms@gnu.org>
parents:
8786
diff
changeset
|
284 else |
4da8b8ac5211
(xlw_popup_menu): New arg event.
Richard M. Stallman <rms@gnu.org>
parents:
8786
diff
changeset
|
285 { |
53564
609ef1718642
Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents:
52401
diff
changeset
|
286 XEvent dummy; |
609ef1718642
Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents:
52401
diff
changeset
|
287 XButtonPressedEvent *bd = &dummy.xbutton; |
5626 | 288 |
53564
609ef1718642
Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents:
52401
diff
changeset
|
289 bd->type = ButtonPress; |
609ef1718642
Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents:
52401
diff
changeset
|
290 bd->serial = 0; |
609ef1718642
Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents:
52401
diff
changeset
|
291 bd->send_event = 0; |
609ef1718642
Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents:
52401
diff
changeset
|
292 bd->display = XtDisplay (widget); |
609ef1718642
Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents:
52401
diff
changeset
|
293 bd->window = XtWindow (XtParent (widget)); |
609ef1718642
Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents:
52401
diff
changeset
|
294 bd->time = CurrentTime; |
609ef1718642
Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents:
52401
diff
changeset
|
295 bd->button = 0; |
609ef1718642
Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents:
52401
diff
changeset
|
296 XQueryPointer (bd->display, bd->window, &bd->root, |
609ef1718642
Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents:
52401
diff
changeset
|
297 &bd->subwindow, &bd->x_root, &bd->y_root, |
609ef1718642
Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents:
52401
diff
changeset
|
298 &bd->x, &bd->y, &bd->state); |
609ef1718642
Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents:
52401
diff
changeset
|
299 |
609ef1718642
Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents:
52401
diff
changeset
|
300 XtCallActionProc ((Widget) mw, "start", &dummy, NULL, 0); |
12745
4da8b8ac5211
(xlw_popup_menu): New arg event.
Richard M. Stallman <rms@gnu.org>
parents:
8786
diff
changeset
|
301 } |
5626 | 302 } |
303 | |
304 /* Destruction of instances */ | |
305 void | |
5708
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
306 xlw_destroy_instance (instance) |
4870efc489ea
*** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents:
5626
diff
changeset
|
307 widget_instance* instance; |
5626 | 308 { |
309 if (instance->widget) | |
310 XtDestroyWidget (instance->widget); | |
311 } | |
312 | |
52401 | 313 /* arch-tag: 541e3912-477d-406e-9bf2-dbf2b7ff8c3b |
314 (do not change this comment) */ |