annotate lwlib/lwlib-Xlw.c @ 49645:4e94855c037e

Change dates for the entries concerning the 2.0.29 Tramp commit such that they all reflect the commit date, instead of the date of the individual changes. This is deemed better than keeping the original change date because it makes sure that the ChangeLog dates have more or less sequential order.
author Kai Großjohann <kgrossjo@eu.uu.net>
date Fri, 07 Feb 2003 17:53:05 +0000
parents 23a1cea22d13
children 45a8df254788 d7ddb3e565de
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 /* The lwlib interface to "xlwmenu" menus.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2 Copyright (C) 1992 Lucid, Inc.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4 This file is part of the Lucid Widget Library.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 41767
diff changeset
6 The Lucid Widget Library is free software; you can redistribute it and/or
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 modify it under the terms of the GNU General Public License as published by
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 the Free Software Foundation; either version 1, or (at your option)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9 any later version.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 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
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 GNU General Public License for more details.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
7fb1caba0f51 Include ../src/lisp.h.
Richard M. Stallman <rms@gnu.org>
parents: 36955
diff changeset
25 #include "../src/lisp.h"
7fb1caba0f51 Include ../src/lisp.h.
Richard M. Stallman <rms@gnu.org>
parents: 36955
diff changeset
26
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27 #include "lwlib-Xlw.h"
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 #include <X11/StringDefs.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 #include <X11/IntrinsicP.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 #include <X11/ObjectP.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 #include <X11/CompositeP.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 #include <X11/Shell.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 #include "xlwmenu.h"
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 widget_instance* instance = (widget_instance*)client_data;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 widget_value* val;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 if (w->core.being_destroyed)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 return;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 val = lw_get_widget_value_for_widget (instance, w);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97 if (instance->info->pre_activate_cb)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98 instance->info->pre_activate_cb (w, instance->info->id,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99 val ? val->call_data : NULL);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
107 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
108 widget_instance* instance = (widget_instance*)client_data;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109 widget_value* contents_val = (widget_value*)call_data;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110 widget_value* widget_val;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 XtPointer widget_arg;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113 if (w->core.being_destroyed)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114 return;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116 if (instance->info->selection_cb && contents_val && contents_val->enabled
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 && !contents_val->contents)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118 instance->info->selection_cb (w, instance->info->id,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119 contents_val->call_data);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
120
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
121 widget_val = lw_get_widget_value_for_widget (instance, w);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122 widget_arg = widget_val ? widget_val->call_data : NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123 if (instance->info->post_activate_cb)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124 instance->info->post_activate_cb (w, instance->info->id, widget_arg);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128 /* creation functions */
5993
5feb28cb62c8 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5983
diff changeset
129
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
133 {
5951
ddd8c555b2fc *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5708
diff changeset
134 Widget widget;
8786
20cb460b85d3 entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 6040
diff changeset
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
20cb460b85d3 entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 6040
diff changeset
139 #ifdef emacs
20cb460b85d3 entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 6040
diff changeset
140 XtSetArg (al[ac], XtNshowGrip, 0); ac++;
20cb460b85d3 entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 6040
diff changeset
141 XtSetArg (al[ac], XtNresizeToPreferred, 1); ac++;
20cb460b85d3 entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 6040
diff changeset
142 XtSetArg (al[ac], XtNallowResize, 1); ac++;
20cb460b85d3 entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 6040
diff changeset
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151 XtAddCallback (widget, XtNopen, pre_hook, (XtPointer)instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155 return widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
156 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 41767
diff changeset
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182 return popup_shell;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
183 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
184
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 41767
diff changeset
185 widget_creation_entry
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186 xlw_creation_table [] =
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 {"menubar", xlw_create_menubar},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 {"popup", xlw_create_popup_menu},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 {NULL, NULL}
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191 };
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197 WidgetClass the_class = XtClass (widget);
6009
f68004daa523 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5993
diff changeset
198
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 if (the_class == xlwMenuWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 return True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
204 return False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
206
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
213 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214 XlwMenuWidget mw;
6040
7988b8acd29f *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6009
diff changeset
215 Arg al[1];
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
216
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217 if (XtIsShell (widget))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218 mw = (XlwMenuWidget)((CompositeWidget)widget)->composite.children [0];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235 return;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
250 XButtonPressedEvent dummy;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251 XlwMenuWidget mw;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253 if (!XtIsShell (widget))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 return;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256 mw = (XlwMenuWidget)((CompositeWidget)widget)->composite.children [0];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 /* Destruction of instances */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 if (instance->widget)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283 XtDestroyWidget (instance->widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285