annotate lwlib/lwlib-Xm.c @ 22758:dbd9ecc9dbac

Added next-buffer/previous-buffer keybindings (bound to M-n/M-p). (crisp-unbury-buffer): New function. Fixed bogus XEmacs/Lucid string-match checking. Made modeline entry mouse2-able. (crisp-mode-map): Make this a sparse keymap parented from current-global-map. (crisp-mode-original-keymap): Don't copy the keymap. (crisp-last-last-command): Renamed from last-last-command. defvar it. (crisp-mode): Honor ARG. (crisp-kill-line, crisp-copy-line): When a region isn't highlighted, use the region from point to eol. Honor prefix argument. (crisp-submit-bug-report): New command, taken from cc-mode. Shortened the version numbering, removed the release-version tracking (crisp-version): New function. New keybindings `C-home', `C-end', `M-home', `M-end', `C-f', `M-l', `M-m'. (crisp-copy-line): No need to save point. Removed S-right and S-left bindings. Abstract the marking and selection interfaces so that we can be compatible with both Emacs and XEmacs. And try and make the behavior as close as possible under both environments so that there are no surprises.
author Karl Heuer <kwzh@gnu.org>
date Tue, 14 Jul 1998 22:17:35 +0000
parents d4e514328333
children 6293957eeb5c
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 Motif widgets.
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6 The Lucid Widget Library is free software; you can redistribute it and/or
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,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
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: 14018
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: 14018
diff changeset
19 Boston, MA 02111-1307, USA. */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 #include <stdlib.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 #include <unistd.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23 #include <string.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24 #include <stdio.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 #include <X11/StringDefs.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27 #include <X11/IntrinsicP.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 #include <X11/ObjectP.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 #include <X11/CoreP.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 #include <X11/CompositeP.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 #include "lwlib-Xm.h"
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 #include "lwlib-utils.h"
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 #include <Xm/BulletinB.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 #include <Xm/CascadeB.h>
14931
0706926a11cb (destroy_all_children): When freeing a cascade button, free its submenu too.
Richard M. Stallman <rms@gnu.org>
parents: 14877
diff changeset
37 #include <Xm/CascadeBG.h>
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 #include <Xm/DrawingA.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 #include <Xm/FileSB.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 #include <Xm/Label.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 #include <Xm/List.h>
8784
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
42 #include <Xm/MainW.h>
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43 #include <Xm/MenuShell.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 #include <Xm/MessageB.h>
8784
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
45 #include <Xm/PanedW.h>
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 #include <Xm/PushB.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 #include <Xm/PushBG.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 #include <Xm/ArrowB.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49 #include <Xm/SelectioB.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 #include <Xm/Text.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 #include <Xm/TextF.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52 #include <Xm/ToggleB.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 #include <Xm/ToggleBG.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 #include <Xm/RowColumn.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 #include <Xm/ScrolledW.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 #include <Xm/Separator.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 #include <Xm/DialogS.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 #include <Xm/Form.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
60 static void xm_pull_down_callback (/* Widget, XtPointer, XtPointer */);
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
61 static void xm_internal_update_other_instances (/* Widget, XtPointer,
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
62 XtPointer */);
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
63 static void xm_generic_callback (/* Widget, XtPointer, XtPointer */);
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
64 static void xm_nosel_callback (/* Widget, XtPointer, XtPointer */);
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
65 static void xm_pop_down_callback (/* Widget, XtPointer, XtPointer */);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
67 static void xm_update_menu (/* widget_instance*, Widget, widget_value*,
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
68 Boolean) */);
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
69
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 /* Structures to keep destroyed instances */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 typedef struct _destroyed_instance
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
74 char* name;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75 char* type;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
76 Widget widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77 Widget parent;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 Boolean pop_up_p;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79 struct _destroyed_instance* next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
80 } destroyed_instance;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
81
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82 static destroyed_instance*
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83 all_destroyed_instances = NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 static destroyed_instance*
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
86 make_destroyed_instance (name, type, widget, parent, pop_up_p)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
87 char* name;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
88 char* type;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
89 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
90 Widget parent;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
91 Boolean pop_up_p;
5626
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 destroyed_instance* instance =
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 (destroyed_instance*)malloc (sizeof (destroyed_instance));
8784
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
95 instance->name = safe_strdup (name);
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
96 instance->type = safe_strdup (type);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97 instance->widget = widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98 instance->parent = parent;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99 instance->pop_up_p = pop_up_p;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 instance->next = NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101 return instance;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
105 free_destroyed_instance (instance)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
106 destroyed_instance* instance;
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 free (instance->name);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109 free (instance->type);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110 free (instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 }
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 /* motif utility functions */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114 Widget
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
115 first_child (widget)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
116 Widget widget;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118 return ((CompositeWidget)widget)->composite.children [0];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119 }
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 Boolean
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
122 lw_motif_widget_p (widget)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
123 Widget widget;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125 return
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126 XtClass (widget) == xmDialogShellWidgetClass
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127 || XmIsPrimitive (widget) || XmIsManager (widget) || XmIsGadget (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
129
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130 static XmString
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
131 resource_motif_string (widget, name)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
132 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
133 char* name;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
134 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135 XtResource resource;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136 XmString result = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
138 resource.resource_name = name;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139 resource.resource_class = XmCXmString;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 resource.resource_type = XmRXmString;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141 resource.resource_size = sizeof (XmString);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142 resource.resource_offset = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143 resource.default_type = XtRImmediate;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144 resource.default_addr = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146 XtGetSubresources (widget, (XtPointer)&result, "dialogString",
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 "DialogString", &resource, 1, NULL, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148 return result;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
151 /* Destroy all of the children of WIDGET
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
152 starting with number FIRST_CHILD_TO_DESTROY. */
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
153
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 static void
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
155 destroy_all_children (widget, first_child_to_destroy)
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
156 Widget widget;
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
157 int first_child_to_destroy;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159 Widget* children;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160 unsigned int number;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161 int i;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 children = XtCompositeChildren (widget, &number);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
164 if (children)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165 {
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
166 XtUnmanageChildren (children + first_child_to_destroy,
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
167 number - first_child_to_destroy);
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
168
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 /* Unmanage all children and destroy them. They will only be
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
170 really destroyed when we get out of DispatchEvent. */
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
171 for (i = first_child_to_destroy; i < number; i++)
14931
0706926a11cb (destroy_all_children): When freeing a cascade button, free its submenu too.
Richard M. Stallman <rms@gnu.org>
parents: 14877
diff changeset
172 {
0706926a11cb (destroy_all_children): When freeing a cascade button, free its submenu too.
Richard M. Stallman <rms@gnu.org>
parents: 14877
diff changeset
173 Arg al[2];
0706926a11cb (destroy_all_children): When freeing a cascade button, free its submenu too.
Richard M. Stallman <rms@gnu.org>
parents: 14877
diff changeset
174 Widget submenu = 0;
0706926a11cb (destroy_all_children): When freeing a cascade button, free its submenu too.
Richard M. Stallman <rms@gnu.org>
parents: 14877
diff changeset
175 /* Cascade buttons have submenus,and these submenus
0706926a11cb (destroy_all_children): When freeing a cascade button, free its submenu too.
Richard M. Stallman <rms@gnu.org>
parents: 14877
diff changeset
176 need to be freed. But they are not included in
0706926a11cb (destroy_all_children): When freeing a cascade button, free its submenu too.
Richard M. Stallman <rms@gnu.org>
parents: 14877
diff changeset
177 XtCompositeChildren. So get it out of the cascade button
0706926a11cb (destroy_all_children): When freeing a cascade button, free its submenu too.
Richard M. Stallman <rms@gnu.org>
parents: 14877
diff changeset
178 and free it. If this child is not a cascade button,
0706926a11cb (destroy_all_children): When freeing a cascade button, free its submenu too.
Richard M. Stallman <rms@gnu.org>
parents: 14877
diff changeset
179 then submenu should remain unchanged. */
0706926a11cb (destroy_all_children): When freeing a cascade button, free its submenu too.
Richard M. Stallman <rms@gnu.org>
parents: 14877
diff changeset
180 XtSetArg (al[0], XmNsubMenuId, &submenu);
0706926a11cb (destroy_all_children): When freeing a cascade button, free its submenu too.
Richard M. Stallman <rms@gnu.org>
parents: 14877
diff changeset
181 XtGetValues (children[i], al, 1);
0706926a11cb (destroy_all_children): When freeing a cascade button, free its submenu too.
Richard M. Stallman <rms@gnu.org>
parents: 14877
diff changeset
182 if (submenu)
0706926a11cb (destroy_all_children): When freeing a cascade button, free its submenu too.
Richard M. Stallman <rms@gnu.org>
parents: 14877
diff changeset
183 XtDestroyWidget (submenu);
0706926a11cb (destroy_all_children): When freeing a cascade button, free its submenu too.
Richard M. Stallman <rms@gnu.org>
parents: 14877
diff changeset
184 XtDestroyWidget (children[i]);
0706926a11cb (destroy_all_children): When freeing a cascade button, free its submenu too.
Richard M. Stallman <rms@gnu.org>
parents: 14877
diff changeset
185 }
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
186
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 XtFree ((char *) children);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191 /* update the label of anything subclass of a label */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
193 xm_update_label (instance, widget, val)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
194 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
195 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
196 widget_value* val;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
198 XmString res_string = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 XmString built_string = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 XmString key_string = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 Arg al [256];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202 int ac;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
204 ac = 0;
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 if (val->value)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
207 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208 res_string = resource_motif_string (widget, val->value);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210 if (res_string)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
212 XtSetArg (al [ac], XmNlabelString, res_string); ac++;
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 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
215 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
216 built_string =
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217 XmStringCreateLtoR (val->value, XmSTRING_DEFAULT_CHARSET);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218 XtSetArg (al [ac], XmNlabelString, built_string); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220 XtSetArg (al [ac], XmNlabelType, XmSTRING); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
223 if (val->key)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
225 key_string = XmStringCreateLtoR (val->key, XmSTRING_DEFAULT_CHARSET);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
226 XtSetArg (al [ac], XmNacceleratorText, key_string); ac++;
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 if (ac)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
230 XtSetValues (widget, al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
231
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232 if (built_string)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
233 XmStringFree (built_string);
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 if (key_string)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236 XmStringFree (key_string);
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239 /* update of list */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
241 xm_update_list (instance, widget, val)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
242 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
243 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
244 widget_value* val;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246 widget_value* cur;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 int i;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248 XtRemoveAllCallbacks (widget, XmNsingleSelectionCallback);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 XtAddCallback (widget, XmNsingleSelectionCallback, xm_generic_callback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
250 instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251 for (cur = val->contents, i = 0; cur; cur = cur->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252 if (cur->value)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 XmString xmstr = XmStringCreate (cur->value, XmSTRING_DEFAULT_CHARSET);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255 i += 1;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256 XmListAddItem (widget, xmstr, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257 if (cur->selected)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
258 XmListSelectPos (widget, i, False);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259 XmStringFree (xmstr);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
262
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263 /* update of buttons */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
264 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
265 xm_update_pushbutton (instance, widget, val)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
266 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
267 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
268 widget_value* val;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270 XtVaSetValues (widget, XmNalignment, XmALIGNMENT_CENTER, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271 XtRemoveAllCallbacks (widget, XmNactivateCallback);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272 XtAddCallback (widget, XmNactivateCallback, xm_generic_callback, instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275 static void
11862
10a973a88e87 (activate_button, xm_update_cascadebutton): Don't use prototype.
Karl Heuer <kwzh@gnu.org>
parents: 11435
diff changeset
276 xm_update_cascadebutton (instance, widget, val)
10a973a88e87 (activate_button, xm_update_cascadebutton): Don't use prototype.
Karl Heuer <kwzh@gnu.org>
parents: 11435
diff changeset
277 widget_instance* instance;
10a973a88e87 (activate_button, xm_update_cascadebutton): Don't use prototype.
Karl Heuer <kwzh@gnu.org>
parents: 11435
diff changeset
278 Widget widget;
10a973a88e87 (activate_button, xm_update_cascadebutton): Don't use prototype.
Karl Heuer <kwzh@gnu.org>
parents: 11435
diff changeset
279 widget_value* val;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281 /* Should also rebuild the menu by calling ...update_menu... */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 XtRemoveAllCallbacks (widget, XmNcascadingCallback);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283 XtAddCallback (widget, XmNcascadingCallback, xm_pull_down_callback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284 instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
287 /* update toggle and radiobox */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
288 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
289 xm_update_toggle (instance, widget, val)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
290 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
291 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
292 widget_value* val;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294 XtRemoveAllCallbacks (widget, XmNvalueChangedCallback);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 XtAddCallback (widget, XmNvalueChangedCallback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296 xm_internal_update_other_instances, instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297 XtVaSetValues (widget, XmNset, val->selected,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 XmNalignment, XmALIGNMENT_BEGINNING, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
299 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
302 xm_update_radiobox (instance, widget, val)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
303 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
304 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
305 widget_value* val;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
306
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308 Widget toggle;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309 widget_value* cur;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311 /* update the callback */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312 XtRemoveAllCallbacks (widget, XmNentryCallback);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
313 XtAddCallback (widget, XmNentryCallback, xm_generic_callback, instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
314
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
315 /* first update all the toggles */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
316 /* Energize kernel interface is currently bad. It sets the selected widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
317 with the selected flag but returns it by its name. So we currently
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
318 have to support both setting the selection with the selected slot
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
319 of val contents and setting it with the "value" slot of val. The latter
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
320 has a higher priority. This to be removed when the kernel is fixed. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
321 for (cur = val->contents; cur; cur = cur->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
322 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
323 toggle = XtNameToWidget (widget, cur->value);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
324 if (toggle)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
325 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
326 XtVaSetValues (toggle, XmNsensitive, cur->enabled, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
327 if (!val->value && cur->selected)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
328 XtVaSetValues (toggle, XmNset, cur->selected, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
329 if (val->value && strcmp (val->value, cur->value))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
330 XtVaSetValues (toggle, XmNset, False, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
331 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
332 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
334 /* The selected was specified by the value slot */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
335 if (val->value)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337 toggle = XtNameToWidget (widget, val->value);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 if (toggle)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
339 XtVaSetValues (toggle, XmNset, True, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
341 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
343 /* update a popup menu, pulldown menu or a menubar */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
344 static Boolean
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
345 all_dashes_p (s)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
346 char* s;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348 char* t;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
349 for (t = s; *t; t++)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350 if (*t != '-')
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351 return False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
352 return True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
355 /* KEEP_FIRST_CHILDREN gives the number of initial children to keep. */
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
356
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357 static void
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
358 make_menu_in_widget (instance, widget, val, keep_first_children)
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
359 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
360 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
361 widget_value* val;
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
362 int keep_first_children;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
364 Widget* children = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 int num_children;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366 int child_index;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
367 widget_value* cur;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368 Widget button = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
369 Widget menu;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
370 Arg al [256];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
371 int ac;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372 Boolean menubar_p;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
374 Widget* old_children;
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
375 unsigned int old_num_children;
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
376
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
377 old_children = XtCompositeChildren (widget, &old_num_children);
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
378
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
379 /* Allocate the children array */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380 for (num_children = 0, cur = val; cur; num_children++, cur = cur->next);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
381 children = (Widget*)XtMalloc (num_children * sizeof (Widget));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
382
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
383 /* tricky way to know if this RowColumn is a menubar or a pulldown... */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384 menubar_p = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385 XtSetArg (al[0], XmNisHomogeneous, &menubar_p);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386 XtGetValues (widget, al, 1);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
388 /* add the unmap callback for popups and pulldowns */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 /*** this sounds bogus ***/
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
390 if (!menubar_p)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391 XtAddCallback (XtParent (widget), XmNpopdownCallback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392 xm_pop_down_callback, (XtPointer)instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
394 /* Preserve the first KEEP_FIRST_CHILDREN old children. */
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
395 for (child_index = 0, cur = val; child_index < keep_first_children;
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
396 child_index++, cur = cur->next)
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
397 children[child_index] = old_children[child_index];
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
398
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
399 /* Check that those are all we have
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
400 (the caller should have deleted the rest). */
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
401 if (old_num_children != keep_first_children)
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
402 abort ();
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
403
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
404 /* Create the rest. */
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
405 for (child_index = keep_first_children; cur; child_index++, cur = cur->next)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408 XtSetArg (al [ac], XmNsensitive, cur->enabled); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409 XtSetArg (al [ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 XtSetArg (al [ac], XmNuserData, cur->call_data); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411
9835
d2250d1b0f48 (make_menu_in_widget): Differentiate a separator entry ("--") from a
Paul Reilly <pmr@pajato.com>
parents: 9825
diff changeset
412 if (instance->pop_up_p && !cur->contents && !cur->call_data
d2250d1b0f48 (make_menu_in_widget): Differentiate a separator entry ("--") from a
Paul Reilly <pmr@pajato.com>
parents: 9825
diff changeset
413 && !all_dashes_p (cur->name))
9224
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
414 {
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
415 ac = 0;
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
416 XtSetArg (al[ac], XmNalignment, XmALIGNMENT_CENTER); ac++;
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
417 button = XmCreateLabel (widget, cur->name, al, ac);
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
418 }
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
419 else if (all_dashes_p (cur->name))
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421 button = XmCreateSeparator (widget, cur->name, NULL, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423 else if (!cur->contents)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425 if (menubar_p)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 button = XmCreateCascadeButton (widget, cur->name, al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427 else if (!cur->call_data)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428 button = XmCreateLabel (widget, cur->name, al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430 button = XmCreatePushButtonGadget (widget, cur->name, al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
431
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
432 xm_update_label (instance, button, cur);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
433
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
434 /* don't add a callback to a simple label */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
435 if (cur->call_data)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436 XtAddCallback (button, XmNactivateCallback, xm_generic_callback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
437 (XtPointer)instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
438 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
439 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
440 {
11435
efaaecd960ae (update_one_menu_entry, make_menu_in_widget):
Richard M. Stallman <rms@gnu.org>
parents: 11299
diff changeset
441 menu = XmCreatePulldownMenu (widget, cur->name, NULL, 0);
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
442 make_menu_in_widget (instance, menu, cur->contents, 0);
15375
1beabd8b78a1 (make_menu_in_widget): Set mapping delay
Richard M. Stallman <rms@gnu.org>
parents: 14931
diff changeset
443 XtSetArg (al [ac], XmNsubMenuId, menu); ac++;
1beabd8b78a1 (make_menu_in_widget): Set mapping delay
Richard M. Stallman <rms@gnu.org>
parents: 14931
diff changeset
444 /* non-zero values don't work reliably in
1beabd8b78a1 (make_menu_in_widget): Set mapping delay
Richard M. Stallman <rms@gnu.org>
parents: 14931
diff changeset
445 conjunction with Emacs' event loop */
1beabd8b78a1 (make_menu_in_widget): Set mapping delay
Richard M. Stallman <rms@gnu.org>
parents: 14931
diff changeset
446 XtSetArg (al [ac], XmNmappingDelay, 0); ac++;
14931
0706926a11cb (destroy_all_children): When freeing a cascade button, free its submenu too.
Richard M. Stallman <rms@gnu.org>
parents: 14877
diff changeset
447 button = XmCreateCascadeButtonGadget (widget, cur->name, al, ac);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
448
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
449 xm_update_label (instance, button, cur);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
451 XtAddCallback (button, XmNcascadingCallback, xm_pull_down_callback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452 (XtPointer)instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
454
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
455 children [child_index] = button;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
456 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
457
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458 XtManageChildren (children, num_children);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460 /* Last entry is the help button. Has to be done after managing
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
461 * the buttons otherwise the menubar is only 4 pixels high... */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 if (button)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465 XtSetArg (al [ac], XmNmenuHelpWidget, button); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466 XtSetValues (widget, al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469 XtFree ((char *) children);
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
470 if (old_children)
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
471 XtFree ((char *) old_children);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
475 update_one_menu_entry (instance, widget, val, deep_p)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
476 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
477 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
478 widget_value* val;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
479 Boolean deep_p;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481 Arg al [256];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 int ac;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483 Widget menu;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484 widget_value* contents;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
485
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
486 if (val->this_one_change == NO_CHANGE)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487 return;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
488
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489 /* update the sensitivity and userdata */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490 /* Common to all widget types */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491 XtVaSetValues (widget,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 XmNsensitive, val->enabled,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493 XmNuserData, val->call_data,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
496 /* update the menu button as a label. */
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
497 if (val->this_one_change >= VISIBLE_CHANGE)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498 xm_update_label (instance, widget, val);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500 /* update the pulldown/pullaside as needed */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502 menu = NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 XtSetArg (al [ac], XmNsubMenuId, &menu); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504 XtGetValues (widget, al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506 contents = val->contents;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508 if (!menu)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510 if (contents)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511 {
15853
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
512 unsigned int old_num_children, i;
15859
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
513 Widget parent;
15853
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
514 Widget *widget_list;
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
515
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
516 parent = XtParent (widget);
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
517 widget_list = XtCompositeChildren (parent, &old_num_children);
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
518
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
519 /* Find the widget position within the parent's widget list. */
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
520 for (i = 0; i < old_num_children; i++)
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
521 if (strcmp (XtName (widget_list[i]), XtName (widget)) == 0)
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
522 break;
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
523 if (i == old_num_children)
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
524 abort ();
15859
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
525 if (XmIsCascadeButton (widget_list[i]))
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
526 {
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
527 menu = XmCreatePulldownMenu (parent, XtName(widget), NULL, 0);
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
528 make_menu_in_widget (instance, menu, contents, 0);
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
529 ac = 0;
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
530 XtSetArg (al [ac], XmNsubMenuId, menu); ac++;
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
531 XtSetValues (widget, al, ac);
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
532 }
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
533 else
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
534 {
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
535 Widget button;
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
536
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
537 /* The current menuitem is a XmPushButtonGadget, it
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
538 needs to be replaced by a CascadeButtonGadget */
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
539 XtDestroyWidget (widget_list[i]);
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
540 menu = XmCreatePulldownMenu (parent, val->name, NULL, 0);
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
541 make_menu_in_widget (instance, menu, contents, 0);
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
542 ac = 0;
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
543 XtSetArg (al [ac], XmNsubMenuId, menu); ac++;
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
544 /* Non-zero values don't work reliably in
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
545 conjunction with Emacs' event loop */
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
546 XtSetArg (al [ac], XmNmappingDelay, 0); ac++;
20471
d4e514328333 (update_one_menu_entry): Add conditional in case XmNpositionIndex is missing.
Richard M. Stallman <rms@gnu.org>
parents: 15859
diff changeset
547 #ifdef XmNpositionIndex /* This is undefined on SCO ODT 2.0. */
15859
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
548 /* Tell Motif to put it in the right place */
20471
d4e514328333 (update_one_menu_entry): Add conditional in case XmNpositionIndex is missing.
Richard M. Stallman <rms@gnu.org>
parents: 15859
diff changeset
549 XtSetArg (al [ac], XmNpositionIndex , i); ac++;
d4e514328333 (update_one_menu_entry): Add conditional in case XmNpositionIndex is missing.
Richard M. Stallman <rms@gnu.org>
parents: 15859
diff changeset
550 #endif
15859
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
551 button = XmCreateCascadeButtonGadget (parent, val->name, al, ac);
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
552 xm_update_label (instance, button, val);
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
553
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
554 XtAddCallback (button, XmNcascadingCallback, xm_pull_down_callback,
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
555 (XtPointer)instance);
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
556 XtManageChild (button);
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
557 }
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
558 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
559 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
560 else if (!contents)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
563 XtSetArg (al [ac], XmNsubMenuId, NULL); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
564 XtSetValues (widget, al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
565 XtDestroyWidget (menu);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
566 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
567 else if (deep_p && contents->change != NO_CHANGE)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
568 xm_update_menu (instance, menu, val, 1);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
569 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
570
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
571 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
572 xm_update_menu (instance, widget, val, deep_p)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
573 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
574 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
575 widget_value* val;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
576 Boolean deep_p;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577 {
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
578 Widget* children;
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
579 unsigned int num_children;
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
580 int num_children_to_keep = 0;
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
581 int i;
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
582 widget_value* cur;
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
583
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
584 children = XtCompositeChildren (widget, &num_children);
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
585
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
586 /* Widget is a RowColumn widget whose contents have to be updated
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
587 * to reflect the list of items in val->contents */
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
588
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
589 /* See how many buttons we can keep, and how many we
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
590 must completely replace. */
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
591 if (val->contents == 0)
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
592 num_children_to_keep = 0;
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
593 else if (val->contents->change == STRUCTURAL_CHANGE)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
594 {
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
595 if (children)
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
596 {
15665
432750098147 (xm_update_menu): Fix loop termination test.
Karl Heuer <kwzh@gnu.org>
parents: 15630
diff changeset
597 for (i = 0, cur = val->contents;
432750098147 (xm_update_menu): Fix loop termination test.
Karl Heuer <kwzh@gnu.org>
parents: 15630
diff changeset
598 (i < num_children
432750098147 (xm_update_menu): Fix loop termination test.
Karl Heuer <kwzh@gnu.org>
parents: 15630
diff changeset
599 && cur); /* how else to ditch unwanted children ?? - mgd */
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
600 i++, cur = cur->next)
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
601 {
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
602 if (cur->this_one_change == STRUCTURAL_CHANGE)
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
603 break;
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
604 }
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
605
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
606 num_children_to_keep = i;
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
607 }
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609 else
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
610 num_children_to_keep = num_children;
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
611
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
612 /* Update all the buttons of the RowColumn, in order,
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
613 except for those we are going to replace entirely. */
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
614 if (children)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
615 {
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
616 for (i = 0, cur = val->contents; i < num_children_to_keep; i++)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
617 {
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
618 if (!cur)
15853
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
619 {
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
620 num_children_to_keep = i;
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
621 break;
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
622 }
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
623 if (children [i]->core.being_destroyed
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
624 || strcmp (XtName (children [i]), cur->name))
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
625 continue;
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
626 update_one_menu_entry (instance, children [i], cur, deep_p);
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
627 cur = cur->next;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
628 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629 }
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
630
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
631 /* Now replace from scratch all the buttons after the last
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
632 place that the top-level structure changed. */
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
633 if (val->contents->change == STRUCTURAL_CHANGE)
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
634 {
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
635 destroy_all_children (widget, num_children_to_keep);
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
636 make_menu_in_widget (instance, widget, val->contents,
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
637 num_children_to_keep);
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
638 }
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
639
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
640 XtFree ((char *) children);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
642
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
643
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644 /* update text widgets */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
646 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
647 xm_update_text (instance, widget, val)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
648 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
649 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
650 widget_value* val;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
651 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652 XmTextSetString (widget, val->value ? val->value : "");
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
653 XtRemoveAllCallbacks (widget, XmNactivateCallback);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
654 XtAddCallback (widget, XmNactivateCallback, xm_generic_callback, instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
655 XtRemoveAllCallbacks (widget, XmNvalueChangedCallback);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
656 XtAddCallback (widget, XmNvalueChangedCallback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
657 xm_internal_update_other_instances, instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
658 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
660 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
661 xm_update_text_field (instance, widget, val)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
662 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
663 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
664 widget_value* val;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
665 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
666 XmTextFieldSetString (widget, val->value ? val->value : "");
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
667 XtRemoveAllCallbacks (widget, XmNactivateCallback);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
668 XtAddCallback (widget, XmNactivateCallback, xm_generic_callback, instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
669 XtRemoveAllCallbacks (widget, XmNvalueChangedCallback);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670 XtAddCallback (widget, XmNvalueChangedCallback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671 xm_internal_update_other_instances, instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
674
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
675 /* update a motif widget */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
676
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
677 void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
678 xm_update_one_widget (instance, widget, val, deep_p)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
679 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
680 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
681 widget_value* val;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
682 Boolean deep_p;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
683 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
684 WidgetClass class;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
685
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
686 /* Mark as not edited */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
687 val->edited = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
688
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
689 /* Common to all widget types */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
690 XtVaSetValues (widget,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
691 XmNsensitive, val->enabled,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
692 XmNuserData, val->call_data,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
693 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
694
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
695 /* Common to all label like widgets */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
696 if (XtIsSubclass (widget, xmLabelWidgetClass))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
697 xm_update_label (instance, widget, val);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
698
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
699 class = XtClass (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
700 /* Class specific things */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
701 if (class == xmPushButtonWidgetClass ||
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
702 class == xmArrowButtonWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
703 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
704 xm_update_pushbutton (instance, widget, val);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
705 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
706 else if (class == xmCascadeButtonWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
707 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
708 xm_update_cascadebutton (instance, widget, val);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
709 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
710 else if (class == xmToggleButtonWidgetClass
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
711 || class == xmToggleButtonGadgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
712 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
713 xm_update_toggle (instance, widget, val);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
714 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
715 else if (class == xmRowColumnWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
716 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
717 Boolean radiobox = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
718 int ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
719 Arg al [1];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
720
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
721 XtSetArg (al [ac], XmNradioBehavior, &radiobox); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
722 XtGetValues (widget, al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
723
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
724 if (radiobox)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
725 xm_update_radiobox (instance, widget, val);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
726 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
727 xm_update_menu (instance, widget, val, deep_p);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
728 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
729 else if (class == xmTextWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
730 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
731 xm_update_text (instance, widget, val);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
732 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
733 else if (class == xmTextFieldWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
734 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
735 xm_update_text_field (instance, widget, val);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
736 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
737 else if (class == xmListWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
738 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
739 xm_update_list (instance, widget, val);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
740 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
741 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
742
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
743 /* getting the value back */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
744 void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
745 xm_update_one_value (instance, widget, val)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
746 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
747 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
748 widget_value* val;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
749 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
750 WidgetClass class = XtClass (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
751 widget_value *old_wv;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
752
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
753 /* copy the call_data slot into the "return" widget_value */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
754 for (old_wv = instance->info->val->contents; old_wv; old_wv = old_wv->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
755 if (!strcmp (val->name, old_wv->name))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
756 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
757 val->call_data = old_wv->call_data;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
758 break;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
759 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
760
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
761 if (class == xmToggleButtonWidgetClass || class == xmToggleButtonGadgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
762 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
763 XtVaGetValues (widget, XmNset, &val->selected, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
764 val->edited = True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
765 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
766 else if (class == xmTextWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
767 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
768 if (val->value)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
769 free (val->value);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
770 val->value = XmTextGetString (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
771 val->edited = True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
772 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
773 else if (class == xmTextFieldWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
774 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
775 if (val->value)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
776 free (val->value);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
777 val->value = XmTextFieldGetString (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
778 val->edited = True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
779 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
780 else if (class == xmRowColumnWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
781 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
782 Boolean radiobox = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
783 int ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
784 Arg al [1];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
785
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
786 XtSetArg (al [ac], XmNradioBehavior, &radiobox); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
787 XtGetValues (widget, al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
788
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
789 if (radiobox)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
790 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
791 CompositeWidget radio = (CompositeWidget)widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
792 int i;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
793 for (i = 0; i < radio->composite.num_children; i++)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
794 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
795 int set = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
796 Widget toggle = radio->composite.children [i];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
797
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
798 XtVaGetValues (toggle, XmNset, &set, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
799 if (set)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
800 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
801 if (val->value)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
802 free (val->value);
8784
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
803 val->value = safe_strdup (XtName (toggle));
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
804 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
805 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
806 val->edited = True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
807 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
808 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
809 else if (class == xmListWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
810 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
811 int pos_cnt;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
812 int* pos_list;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
813 if (XmListGetSelectedPos (widget, &pos_list, &pos_cnt))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
814 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
815 int i;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
816 widget_value* cur;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
817 for (cur = val->contents, i = 0; cur; cur = cur->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
818 if (cur->value)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
819 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
820 int j;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
821 cur->selected = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
822 i += 1;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
823 for (j = 0; j < pos_cnt; j++)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
824 if (pos_list [j] == i)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
825 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
826 cur->selected = True;
8784
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
827 val->value = safe_strdup (cur->name);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
828 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
829 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
830 val->edited = 1;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
831 XtFree ((char *) pos_list);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
832 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
833 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
834 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
835
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
836
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
837 /* This function is for activating a button from a program. It's wrong because
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
838 we pass a NULL argument in the call_data which is not Motif compatible.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
839 This is used from the XmNdefaultAction callback of the List widgets to
14018
0a94cd2c51c4 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 12746
diff changeset
840 have a double-click put down a dialog box like the button would do.
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
841 I could not find a way to do that with accelerators.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
842 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
843 static void
11862
10a973a88e87 (activate_button, xm_update_cascadebutton): Don't use prototype.
Karl Heuer <kwzh@gnu.org>
parents: 11435
diff changeset
844 activate_button (widget, closure, call_data)
10a973a88e87 (activate_button, xm_update_cascadebutton): Don't use prototype.
Karl Heuer <kwzh@gnu.org>
parents: 11435
diff changeset
845 Widget widget;
10a973a88e87 (activate_button, xm_update_cascadebutton): Don't use prototype.
Karl Heuer <kwzh@gnu.org>
parents: 11435
diff changeset
846 XtPointer closure;
10a973a88e87 (activate_button, xm_update_cascadebutton): Don't use prototype.
Karl Heuer <kwzh@gnu.org>
parents: 11435
diff changeset
847 XtPointer call_data;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
848 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
849 Widget button = (Widget)closure;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
850 XtCallCallbacks (button, XmNactivateCallback, NULL);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
851 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
852
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
853 /* creation functions */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
854
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
855 /* dialogs */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
856 static Widget
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
857 make_dialog (name, parent, pop_up_p, shell_title, icon_name, text_input_slot,
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
858 radio_box, list, left_buttons, right_buttons)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
859 char* name;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
860 Widget parent;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
861 Boolean pop_up_p;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
862 char* shell_title;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
863 char* icon_name;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
864 Boolean text_input_slot;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
865 Boolean radio_box;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
866 Boolean list;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
867 int left_buttons;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
868 int right_buttons;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
869 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
870 Widget result;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
871 Widget form;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
872 Widget row;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
873 Widget icon;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
874 Widget icon_separator;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
875 Widget message;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
876 Widget value = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
877 Widget separator;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
878 Widget button = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
879 Widget children [16]; /* for the final XtManageChildren */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
880 int n_children;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
881 Arg al[64]; /* Arg List */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
882 int ac; /* Arg Count */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
883 int i;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
884
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
885 if (pop_up_p)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
886 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
887 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
888 XtSetArg(al[ac], XmNtitle, shell_title); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
889 XtSetArg(al[ac], XtNallowShellResize, True); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
890 XtSetArg(al[ac], XmNdeleteResponse, XmUNMAP); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
891 result = XmCreateDialogShell (parent, "dialog", al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
892 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
893 XtSetArg(al[ac], XmNautoUnmanage, FALSE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
894 /* XtSetArg(al[ac], XmNautoUnmanage, TRUE); ac++; */ /* ####is this ok? */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
895 XtSetArg(al[ac], XmNnavigationType, XmTAB_GROUP); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
896 form = XmCreateForm (result, shell_title, al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
897 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
898 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
899 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
900 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
901 XtSetArg(al[ac], XmNautoUnmanage, FALSE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
902 XtSetArg(al[ac], XmNnavigationType, XmTAB_GROUP); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
903 form = XmCreateForm (parent, shell_title, al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
904 result = form;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
905 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
906
8884
b62d47fc7fc2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8784
diff changeset
907 n_children = left_buttons + right_buttons + 1;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
908 ac = 0;
8884
b62d47fc7fc2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8784
diff changeset
909 XtSetArg(al[ac], XmNpacking, n_children == 3?
b62d47fc7fc2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8784
diff changeset
910 XmPACK_COLUMN: XmPACK_TIGHT); ac++;
b62d47fc7fc2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8784
diff changeset
911 XtSetArg(al[ac], XmNorientation, n_children == 3?
b62d47fc7fc2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8784
diff changeset
912 XmVERTICAL: XmHORIZONTAL); ac++;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
913 XtSetArg(al[ac], XmNnumColumns, left_buttons + right_buttons + 1); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
914 XtSetArg(al[ac], XmNmarginWidth, 0); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
915 XtSetArg(al[ac], XmNmarginHeight, 0); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
916 XtSetArg(al[ac], XmNspacing, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
917 XtSetArg(al[ac], XmNadjustLast, False); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
918 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_CENTER); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
919 XtSetArg(al[ac], XmNisAligned, True); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
920 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
921 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
922 XtSetArg(al[ac], XmNbottomOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
923 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
924 XtSetArg(al[ac], XmNleftOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
925 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
926 XtSetArg(al[ac], XmNrightOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
927 row = XmCreateRowColumn (form, "row", al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
928
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
929 n_children = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
930 for (i = 0; i < left_buttons; i++)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
931 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
932 char button_name [16];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
933 sprintf (button_name, "button%d", i + 1);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
934 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
935 if (i == 0)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
936 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
937 XtSetArg(al[ac], XmNhighlightThickness, 1); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
938 XtSetArg(al[ac], XmNshowAsDefault, TRUE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
939 }
8884
b62d47fc7fc2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8784
diff changeset
940 XtSetArg(al[ac], XmNmarginWidth, 10); ac++;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
941 XtSetArg(al[ac], XmNnavigationType, XmTAB_GROUP); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
942 children [n_children] = XmCreatePushButton (row, button_name, al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
943
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
944 if (i == 0)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
945 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
946 button = children [n_children];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
947 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
948 XtSetArg(al[ac], XmNdefaultButton, button); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
949 XtSetValues (row, al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
950 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
951
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
952 n_children++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
953 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
954
14018
0a94cd2c51c4 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 12746
diff changeset
955 /* invisible separator button */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
956 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
957 XtSetArg (al[ac], XmNmappedWhenManaged, FALSE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
958 children [n_children] = XmCreateLabel (row, "separator_button", al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
959 n_children++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
960
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
961 for (i = 0; i < right_buttons; i++)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
962 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
963 char button_name [16];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
964 sprintf (button_name, "button%d", left_buttons + i + 1);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
965 ac = 0;
8884
b62d47fc7fc2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8784
diff changeset
966 XtSetArg(al[ac], XmNmarginWidth, 10); ac++;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
967 XtSetArg(al[ac], XmNnavigationType, XmTAB_GROUP); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
968 children [n_children] = XmCreatePushButton (row, button_name, al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
969 if (! button) button = children [n_children];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
970 n_children++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
971 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
972
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
973 XtManageChildren (children, n_children);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
974
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
975 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
976 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
977 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
978 XtSetArg(al[ac], XmNbottomOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
979 XtSetArg(al[ac], XmNbottomWidget, row); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
980 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
981 XtSetArg(al[ac], XmNleftOffset, 0); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
982 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
983 XtSetArg(al[ac], XmNrightOffset, 0); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
984 separator = XmCreateSeparator (form, "", al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
985
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
986 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
987 XtSetArg(al[ac], XmNlabelType, XmPIXMAP); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
988 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
989 XtSetArg(al[ac], XmNtopOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
990 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
991 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
992 XtSetArg(al[ac], XmNleftOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
993 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
994 icon = XmCreateLabel (form, icon_name, al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
995
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
996 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
997 XtSetArg(al[ac], XmNmappedWhenManaged, FALSE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
998 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
999 XtSetArg(al[ac], XmNtopOffset, 6); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1000 XtSetArg(al[ac], XmNtopWidget, icon); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1001 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1002 XtSetArg(al[ac], XmNbottomOffset, 6); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1003 XtSetArg(al[ac], XmNbottomWidget, separator); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1004 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_NONE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1005 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1006 icon_separator = XmCreateLabel (form, "", al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1007
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1008 if (text_input_slot)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1009 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1010 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1011 XtSetArg(al[ac], XmNcolumns, 50); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1012 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1013 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1014 XtSetArg(al[ac], XmNbottomOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1015 XtSetArg(al[ac], XmNbottomWidget, separator); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1016 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1017 XtSetArg(al[ac], XmNleftOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1018 XtSetArg(al[ac], XmNleftWidget, icon); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1019 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1020 XtSetArg(al[ac], XmNrightOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1021 value = XmCreateTextField (form, "value", al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1022 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1023 else if (radio_box)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1024 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1025 Widget radio_butt;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1026 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1027 XtSetArg(al[ac], XmNmarginWidth, 0); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1028 XtSetArg(al[ac], XmNmarginHeight, 0); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1029 XtSetArg(al[ac], XmNspacing, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1030 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_CENTER); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1031 XtSetArg(al[ac], XmNorientation, XmHORIZONTAL); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1032 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1033 XtSetArg(al[ac], XmNbottomOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1034 XtSetArg(al[ac], XmNbottomWidget, separator); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1035 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1036 XtSetArg(al[ac], XmNleftOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1037 XtSetArg(al[ac], XmNleftWidget, icon); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1038 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1039 XtSetArg(al[ac], XmNrightOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1040 value = XmCreateRadioBox (form, "radiobutton1", al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1041 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1042 i = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1043 radio_butt = XmCreateToggleButtonGadget (value, "radio1", al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1044 children [i++] = radio_butt;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1045 radio_butt = XmCreateToggleButtonGadget (value, "radio2", al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1046 children [i++] = radio_butt;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1047 radio_butt = XmCreateToggleButtonGadget (value, "radio3", al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1048 children [i++] = radio_butt;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1049 XtManageChildren (children, i);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1050 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1051 else if (list)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1052 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1053 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1054 XtSetArg(al[ac], XmNvisibleItemCount, 5); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1055 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1056 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1057 XtSetArg(al[ac], XmNbottomOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1058 XtSetArg(al[ac], XmNbottomWidget, separator); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1059 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1060 XtSetArg(al[ac], XmNleftOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1061 XtSetArg(al[ac], XmNleftWidget, icon); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1062 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1063 XtSetArg(al[ac], XmNrightOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1064 value = XmCreateScrolledList (form, "list", al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1065
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1066 /* this is the easiest way I found to have the dble click in the
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1067 list activate the default button */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1068 XtAddCallback (value, XmNdefaultActionCallback, activate_button, button);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1069 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1070
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1071 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1072 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1073 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1074 XtSetArg(al[ac], XmNtopOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1075 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1076 XtSetArg(al[ac], XmNbottomOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1077 XtSetArg(al[ac], XmNbottomWidget,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1078 text_input_slot || radio_box || list ? value : separator); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1079 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1080 XtSetArg(al[ac], XmNleftOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1081 XtSetArg(al[ac], XmNleftWidget, icon); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1082 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1083 XtSetArg(al[ac], XmNrightOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1084 message = XmCreateLabel (form, "message", al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1085
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1086 if (list)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1087 XtManageChild (value);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1088
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1089 i = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1090 children [i] = row; i++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1091 children [i] = separator; i++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1092 if (text_input_slot || radio_box)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1093 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1094 children [i] = value; i++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1095 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1096 children [i] = message; i++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1097 children [i] = icon; i++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1098 children [i] = icon_separator; i++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1099 XtManageChildren (children, i);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1100
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1101 if (text_input_slot || list)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1102 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1103 XtInstallAccelerators (value, button);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1104 XtSetKeyboardFocus (result, value);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1105 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1106 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1107 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1108 XtInstallAccelerators (form, button);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1109 XtSetKeyboardFocus (result, button);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1110 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1111
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1112 return result;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1113 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1114
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1115 static destroyed_instance*
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1116 find_matching_instance (instance)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1117 widget_instance* instance;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1118 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1119 destroyed_instance* cur;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1120 destroyed_instance* prev;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1121 char* type = instance->info->type;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1122 char* name = instance->info->name;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1123
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1124 for (prev = NULL, cur = all_destroyed_instances;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1125 cur;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1126 prev = cur, cur = cur->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1127 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1128 if (!strcmp (cur->name, name)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1129 && !strcmp (cur->type, type)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1130 && cur->parent == instance->parent
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1131 && cur->pop_up_p == instance->pop_up_p)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1132 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1133 if (prev)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1134 prev->next = cur->next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1135 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1136 all_destroyed_instances = cur->next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1137 return cur;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1138 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1139 /* do some cleanup */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1140 else if (!cur->widget)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1141 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1142 if (prev)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1143 prev->next = cur->next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1144 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1145 all_destroyed_instances = cur->next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1146 free_destroyed_instance (cur);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1147 cur = prev ? prev : all_destroyed_instances;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1148 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1149 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1150 return NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1151 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1152
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1153 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1154 mark_dead_instance_destroyed (widget, closure, call_data)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1155 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1156 XtPointer closure;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1157 XtPointer call_data;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1158 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1159 destroyed_instance* instance = (destroyed_instance*)closure;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1160 instance->widget = NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1161 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1162
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1163 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1164 recenter_widget (widget)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1165 Widget widget;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1166 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1167 Widget parent = XtParent (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1168 Screen* screen = XtScreen (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1169 Dimension screen_width = WidthOfScreen (screen);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1170 Dimension screen_height = HeightOfScreen (screen);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1171 Dimension parent_width = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1172 Dimension parent_height = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1173 Dimension child_width = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1174 Dimension child_height = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1175 Position x;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1176 Position y;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1177
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1178 XtVaGetValues (widget, XtNwidth, &child_width, XtNheight, &child_height, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1179 XtVaGetValues (parent, XtNwidth, &parent_width, XtNheight, &parent_height,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1180 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1181
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1182 x = (((Position)parent_width) - ((Position)child_width)) / 2;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1183 y = (((Position)parent_height) - ((Position)child_height)) / 2;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1184
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1185 XtTranslateCoords (parent, x, y, &x, &y);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1186
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1187 if (x + child_width > screen_width)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1188 x = screen_width - child_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1189 if (x < 0)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1190 x = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1191
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1192 if (y + child_height > screen_height)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1193 y = screen_height - child_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1194 if (y < 0)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1195 y = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1196
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1197 XtVaSetValues (widget, XtNx, x, XtNy, y, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1198 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1199
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1200 static Widget
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1201 recycle_instance (instance)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1202 destroyed_instance* instance;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1203 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1204 Widget widget = instance->widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1205
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1206 /* widget is NULL if the parent was destroyed. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1207 if (widget)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1208 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1209 Widget focus;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1210 Widget separator;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1211
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1212 /* Remove the destroy callback as the instance is not in the list
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1213 anymore */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1214 XtRemoveCallback (instance->parent, XtNdestroyCallback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1215 mark_dead_instance_destroyed,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1216 (XtPointer)instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1217
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1218 /* Give the focus to the initial item */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1219 focus = XtNameToWidget (widget, "*value");
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1220 if (!focus)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1221 focus = XtNameToWidget (widget, "*button1");
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1222 if (focus)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1223 XtSetKeyboardFocus (widget, focus);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1224
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1225 /* shrink the separator label back to their original size */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1226 separator = XtNameToWidget (widget, "*separator_button");
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1227 if (separator)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1228 XtVaSetValues (separator, XtNwidth, 5, XtNheight, 5, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1229
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1230 /* Center the dialog in its parent */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1231 recenter_widget (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1232 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1233 free_destroyed_instance (instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1234 return widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1235 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1236
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1237 Widget
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1238 xm_create_dialog (instance)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1239 widget_instance* instance;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1240 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1241 char* name = instance->info->type;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1242 Widget parent = instance->parent;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1243 Widget widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1244 Boolean pop_up_p = instance->pop_up_p;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1245 char* shell_name = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1246 char* icon_name;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1247 Boolean text_input_slot = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1248 Boolean radio_box = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1249 Boolean list = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1250 int total_buttons;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1251 int left_buttons = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1252 int right_buttons = 1;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1253 destroyed_instance* dead_one;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1254
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1255 /* try to find a widget to recycle */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1256 dead_one = find_matching_instance (instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1257 if (dead_one)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1258 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1259 Widget recycled_widget = recycle_instance (dead_one);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1260 if (recycled_widget)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1261 return recycled_widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1262 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1263
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1264 switch (name [0]){
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1265 case 'E': case 'e':
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1266 icon_name = "dbox-error";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1267 shell_name = "Error";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1268 break;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1269
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1270 case 'I': case 'i':
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1271 icon_name = "dbox-info";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1272 shell_name = "Information";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1273 break;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1274
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1275 case 'L': case 'l':
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1276 list = True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1277 icon_name = "dbox-question";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1278 shell_name = "Prompt";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1279 break;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1280
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1281 case 'P': case 'p':
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1282 text_input_slot = True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1283 icon_name = "dbox-question";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1284 shell_name = "Prompt";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1285 break;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1286
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1287 case 'Q': case 'q':
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1288 icon_name = "dbox-question";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1289 shell_name = "Question";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1290 break;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1291 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1292
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1293 total_buttons = name [1] - '0';
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1294
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1295 if (name [3] == 'T' || name [3] == 't')
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1296 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1297 text_input_slot = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1298 radio_box = True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1299 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1300 else if (name [3])
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1301 right_buttons = name [4] - '0';
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1302
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1303 left_buttons = total_buttons - right_buttons;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1304
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1305 widget = make_dialog (name, parent, pop_up_p,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1306 shell_name, icon_name, text_input_slot, radio_box,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1307 list, left_buttons, right_buttons);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1308
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1309 XtAddCallback (widget, XmNpopdownCallback, xm_nosel_callback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1310 (XtPointer) instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1311 return widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1312 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1313
15816
e1e9df8a862e (make_menubar): Turn off menu accelerator.
Richard M. Stallman <rms@gnu.org>
parents: 15665
diff changeset
1314 /* Create a menu bar. We turn off the f10 key
e1e9df8a862e (make_menubar): Turn off menu accelerator.
Richard M. Stallman <rms@gnu.org>
parents: 15665
diff changeset
1315 because we have not yet managed to make it work right in Motif. */
e1e9df8a862e (make_menubar): Turn off menu accelerator.
Richard M. Stallman <rms@gnu.org>
parents: 15665
diff changeset
1316
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1317 static Widget
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1318 make_menubar (instance)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1319 widget_instance* instance;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1320 {
15816
e1e9df8a862e (make_menubar): Turn off menu accelerator.
Richard M. Stallman <rms@gnu.org>
parents: 15665
diff changeset
1321 Arg al[1];
e1e9df8a862e (make_menubar): Turn off menu accelerator.
Richard M. Stallman <rms@gnu.org>
parents: 15665
diff changeset
1322 int ac;
e1e9df8a862e (make_menubar): Turn off menu accelerator.
Richard M. Stallman <rms@gnu.org>
parents: 15665
diff changeset
1323
e1e9df8a862e (make_menubar): Turn off menu accelerator.
Richard M. Stallman <rms@gnu.org>
parents: 15665
diff changeset
1324 ac = 0;
e1e9df8a862e (make_menubar): Turn off menu accelerator.
Richard M. Stallman <rms@gnu.org>
parents: 15665
diff changeset
1325 XtSetArg(al[0], XmNmenuAccelerator, 0);
e1e9df8a862e (make_menubar): Turn off menu accelerator.
Richard M. Stallman <rms@gnu.org>
parents: 15665
diff changeset
1326 return XmCreateMenuBar (instance->parent, instance->info->name, al, 1);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1327 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1328
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1329 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1330 remove_grabs (shell, closure, call_data)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1331 Widget shell;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1332 XtPointer closure;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1333 XtPointer call_data;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1334 {
11245
5fdf816307c6 (remove_grabs): Use type Widget for `menu'.
Richard M. Stallman <rms@gnu.org>
parents: 9835
diff changeset
1335 Widget menu = (Widget) closure;
5fdf816307c6 (remove_grabs): Use type Widget for `menu'.
Richard M. Stallman <rms@gnu.org>
parents: 9835
diff changeset
1336 XmRemoveFromPostFromList (menu, XtParent (XtParent (menu)));
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1337 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1338
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1339 static Widget
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1340 make_popup_menu (instance)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1341 widget_instance* instance;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1342 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1343 Widget parent = instance->parent;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1344 Window parent_window = parent->core.window;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1345 Widget result;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1346
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1347 /* sets the parent window to 0 to fool Motif into not generating a grab */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1348 parent->core.window = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1349 result = XmCreatePopupMenu (parent, instance->info->name, NULL, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1350 XtAddCallback (XtParent (result), XmNpopdownCallback, remove_grabs,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1351 (XtPointer)result);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1352 parent->core.window = parent_window;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1353 return result;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1354 }
8784
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1355 static Widget
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1356 make_main (instance)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1357 widget_instance* instance;
8784
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1358 {
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1359 Widget parent = instance->parent;
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1360 Widget result;
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1361 Arg al[2];
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1362 int ac;
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1363
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1364 ac = 0;
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1365 XtSetArg (al[ac], XtNborderWidth, 0); ac++;
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1366 XtSetArg (al[ac], XmNspacing, 0); ac++;
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1367 result = XmCreateMainWindow (parent, instance->info->name, al, ac);
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1368 return result;
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1369 }
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1370
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1371 /* Table of functions to create widgets */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1372
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1373 #ifdef ENERGIZE
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1374
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1375 /* interface with the XDesigner generated functions */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1376 typedef Widget (*widget_maker) (Widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1377 extern Widget create_project_p_sheet (Widget parent);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1378 extern Widget create_debugger_p_sheet (Widget parent);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1379 extern Widget create_breaklist_p_sheet (Widget parent);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1380 extern Widget create_le_browser_p_sheet (Widget parent);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1381 extern Widget create_class_browser_p_sheet (Widget parent);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1382 extern Widget create_call_browser_p_sheet (Widget parent);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1383 extern Widget create_build_dialog (Widget parent);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1384 extern Widget create_editmode_dialog (Widget parent);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1385 extern Widget create_search_dialog (Widget parent);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1386 extern Widget create_project_display_dialog (Widget parent);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1387
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1388 static Widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1389 make_one (widget_instance* instance, widget_maker fn)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1390 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1391 Widget result;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1392 Arg al [64];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1393 int ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1394
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1395 if (instance->pop_up_p)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1396 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1397 XtSetArg (al [ac], XmNallowShellResize, TRUE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1398 result = XmCreateDialogShell (instance->parent, "dialog", NULL, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1399 XtAddCallback (result, XmNpopdownCallback, &xm_nosel_callback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1400 (XtPointer) instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1401 (*fn) (result);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1402 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1403 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1404 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1405 result = (*fn) (instance->parent);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1406 XtRealizeWidget (result);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1407 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1408 return result;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1409 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1410
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1411 static Widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1412 make_project_p_sheet (widget_instance* instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1413 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1414 return make_one (instance, create_project_p_sheet);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1415 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1416
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1417 static Widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1418 make_debugger_p_sheet (widget_instance* instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1419 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1420 return make_one (instance, create_debugger_p_sheet);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1421 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1422
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1423 static Widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1424 make_breaklist_p_sheet (widget_instance* instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1425 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1426 return make_one (instance, create_breaklist_p_sheet);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1427 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1428
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1429 static Widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1430 make_le_browser_p_sheet (widget_instance* instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1431 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1432 return make_one (instance, create_le_browser_p_sheet);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1433 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1434
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1435 static Widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1436 make_class_browser_p_sheet (widget_instance* instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1437 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1438 return make_one (instance, create_class_browser_p_sheet);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1439 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1440
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1441 static Widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1442 make_call_browser_p_sheet (widget_instance* instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1443 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1444 return make_one (instance, create_call_browser_p_sheet);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1445 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1446
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1447 static Widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1448 make_build_dialog (widget_instance* instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1449 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1450 return make_one (instance, create_build_dialog);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1451 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1452
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1453 static Widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1454 make_editmode_dialog (widget_instance* instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1455 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1456 return make_one (instance, create_editmode_dialog);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1457 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1458
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1459 static Widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1460 make_search_dialog (widget_instance* instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1461 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1462 return make_one (instance, create_search_dialog);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1463 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1464
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1465 static Widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1466 make_project_display_dialog (widget_instance* instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1467 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1468 return make_one (instance, create_project_display_dialog);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1469 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1470
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1471 #endif /* ENERGIZE */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1472
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1473 widget_creation_entry
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1474 xm_creation_table [] =
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1475 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1476 {"menubar", make_menubar},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1477 {"popup", make_popup_menu},
8784
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1478 {"main", make_main},
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1479 #ifdef ENERGIZE
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1480 {"project_p_sheet", make_project_p_sheet},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1481 {"debugger_p_sheet", make_debugger_p_sheet},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1482 {"breaklist_psheet", make_breaklist_p_sheet},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1483 {"leb_psheet", make_le_browser_p_sheet},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1484 {"class_browser_psheet", make_class_browser_p_sheet},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1485 {"ctree_browser_psheet", make_call_browser_p_sheet},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1486 {"build", make_build_dialog},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1487 {"editmode", make_editmode_dialog},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1488 {"search", make_search_dialog},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1489 {"project_display", make_project_display_dialog},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1490 #endif /* ENERGIZE */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1491 {NULL, NULL}
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1492 };
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1493
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1494 /* Destruction of instances */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1495 void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1496 xm_destroy_instance (instance)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1497 widget_instance* instance;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1498 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1499 Widget widget = instance->widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1500 /* recycle the dialog boxes */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1501 /* Disable the recycling until we can find a way to have the dialog box
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1502 get reasonable layout after we modify its contents. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1503 if (0
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1504 && XtClass (widget) == xmDialogShellWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1505 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1506 destroyed_instance* dead_instance =
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1507 make_destroyed_instance (instance->info->name,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1508 instance->info->type,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1509 instance->widget,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1510 instance->parent,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1511 instance->pop_up_p);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1512 dead_instance->next = all_destroyed_instances;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1513 all_destroyed_instances = dead_instance;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1514 XtUnmanageChild (first_child (instance->widget));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1515 XFlush (XtDisplay (instance->widget));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1516 XtAddCallback (instance->parent, XtNdestroyCallback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1517 mark_dead_instance_destroyed, (XtPointer)dead_instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1518 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1519 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1520 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1521 /* This might not be necessary now that the nosel is attached to
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1522 popdown instead of destroy, but it can't hurt. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1523 XtRemoveCallback (instance->widget, XtNdestroyCallback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1524 xm_nosel_callback, (XtPointer)instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1525 XtDestroyWidget (instance->widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1526 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1527 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1528
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1529 /* popup utility */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1530 void
12746
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1531 xm_popup_menu (widget, event)
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1532 Widget widget;
12746
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1533 XEvent *event;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1534 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1535 XButtonPressedEvent dummy;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1536
12746
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1537 if (event == 0)
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1538 {
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1539 dummy.type = ButtonPress;
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1540 dummy.serial = 0;
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1541 dummy.send_event = 0;
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1542 dummy.display = XtDisplay (widget);
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1543 dummy.window = XtWindow (XtParent (widget));
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1544 dummy.time = 0;
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1545 dummy.button = 0;
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1546 XQueryPointer (dummy.display, dummy.window, &dummy.root,
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1547 &dummy.subwindow, &dummy.x_root, &dummy.y_root,
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1548 &dummy.x, &dummy.y, &dummy.state);
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1549 event = (XEvent *) &dummy;
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1550 }
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1551
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1552 if (event->type == ButtonPress || event->type == ButtonRelease)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1553 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1554 /* This is so totally ridiculous: there's NO WAY to tell Motif
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1555 that *any* button can select a menu item. Only one button
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1556 can have that honor.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1557 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1558 char *trans = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1559 if (event->xbutton.state & Button5Mask) trans = "<Btn5Down>";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1560 else if (event->xbutton.state & Button4Mask) trans = "<Btn4Down>";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1561 else if (event->xbutton.state & Button3Mask) trans = "<Btn3Down>";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1562 else if (event->xbutton.state & Button2Mask) trans = "<Btn2Down>";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1563 else if (event->xbutton.state & Button1Mask) trans = "<Btn1Down>";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1564 if (trans) XtVaSetValues (widget, XmNmenuPost, trans, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1565 XmMenuPosition (widget, (XButtonPressedEvent *) event);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1566 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1567 XtManageChild (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1568 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1569
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1570 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1571 set_min_dialog_size (w)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1572 Widget w;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1573 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1574 short width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1575 short height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1576 XtVaGetValues (w, XmNwidth, &width, XmNheight, &height, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1577 XtVaSetValues (w, XmNminWidth, width, XmNminHeight, height, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1578 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1579
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1580 void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1581 xm_pop_instance (instance, up)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1582 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1583 Boolean up;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1584 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1585 Widget widget = instance->widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1586
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1587 if (XtClass (widget) == xmDialogShellWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1588 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1589 Widget widget_to_manage = first_child (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1590 if (up)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1591 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1592 XtManageChild (widget_to_manage);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1593 set_min_dialog_size (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1594 XtSetKeyboardFocus (instance->parent, widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1595 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1596 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1597 XtUnmanageChild (widget_to_manage);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1598 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1599 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1600 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1601 if (up)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1602 XtManageChild (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1603 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1604 XtUnmanageChild (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1605 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1606 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1607
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1608
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1609 /* motif callback */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1610
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1611 enum do_call_type { pre_activate, selection, no_selection, post_activate };
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1612
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1613 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1614 do_call (widget, closure, type)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1615 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1616 XtPointer closure;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1617 enum do_call_type type;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1618 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1619 Arg al [256];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1620 int ac;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1621 XtPointer user_data;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1622 widget_instance* instance = (widget_instance*)closure;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1623 Widget instance_widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1624 LWLIB_ID id;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1625
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1626 if (!instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1627 return;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1628 if (widget->core.being_destroyed)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1629 return;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1630
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1631 instance_widget = instance->widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1632 if (!instance_widget)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1633 return;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1634
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1635 id = instance->info->id;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1636 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1637 user_data = NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1638 XtSetArg (al [ac], XmNuserData, &user_data); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1639 XtGetValues (widget, al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1640 switch (type)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1641 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1642 case pre_activate:
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1643 if (instance->info->pre_activate_cb)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1644 instance->info->pre_activate_cb (widget, id, user_data);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1645 break;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1646 case selection:
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1647 if (instance->info->selection_cb)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1648 instance->info->selection_cb (widget, id, user_data);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1649 break;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1650 case no_selection:
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1651 if (instance->info->selection_cb)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1652 instance->info->selection_cb (widget, id, (XtPointer) -1);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1653 break;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1654 case post_activate:
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1655 if (instance->info->post_activate_cb)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1656 instance->info->post_activate_cb (widget, id, user_data);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1657 break;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1658 default:
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1659 abort ();
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1660 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1661 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1662
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1663 /* Like lw_internal_update_other_instances except that it does not do
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1664 anything if its shell parent is not managed. This is to protect
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1665 lw_internal_update_other_instances to dereference freed memory
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1666 if the widget was ``destroyed'' by caching it in the all_destroyed_instances
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1667 list */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1668 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1669 xm_internal_update_other_instances (widget, closure, call_data)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1670 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1671 XtPointer closure;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1672 XtPointer call_data;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1673 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1674 Widget parent;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1675 for (parent = widget; parent; parent = XtParent (parent))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1676 if (XtIsShell (parent))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1677 break;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1678 else if (!XtIsManaged (parent))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1679 return;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1680 lw_internal_update_other_instances (widget, closure, call_data);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1681 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1682
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1683 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1684 xm_generic_callback (widget, closure, call_data)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1685 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1686 XtPointer closure;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1687 XtPointer call_data;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1688 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1689 lw_internal_update_other_instances (widget, closure, call_data);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1690 do_call (widget, closure, selection);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1691 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1692
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1693 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1694 xm_nosel_callback (widget, closure, call_data)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1695 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1696 XtPointer closure;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1697 XtPointer call_data;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1698 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1699 /* This callback is only called when a dialog box is dismissed with the wm's
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1700 destroy button (WM_DELETE_WINDOW.) We want the dialog box to be destroyed
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1701 in that case, not just unmapped, so that it releases its keyboard grabs.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1702 But there are problems with running our callbacks while the widget is in
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1703 the process of being destroyed, so we set XmNdeleteResponse to XmUNMAP
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1704 instead of XmDESTROY and then destroy it ourself after having run the
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1705 callback.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1706 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1707 do_call (widget, closure, no_selection);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1708 XtDestroyWidget (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1709 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1710
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1711 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1712 xm_pull_down_callback (widget, closure, call_data)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1713 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1714 XtPointer closure;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1715 XtPointer call_data;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1716 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1717 do_call (widget, closure, pre_activate);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1718 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1719
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1720 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1721 xm_pop_down_callback (widget, closure, call_data)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1722 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1723 XtPointer closure;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1724 XtPointer call_data;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1725 {
9835
d2250d1b0f48 (make_menu_in_widget): Differentiate a separator entry ("--") from a
Paul Reilly <pmr@pajato.com>
parents: 9825
diff changeset
1726 widget_instance *instance = (widget_instance *) closure;
d2250d1b0f48 (make_menu_in_widget): Differentiate a separator entry ("--") from a
Paul Reilly <pmr@pajato.com>
parents: 9825
diff changeset
1727
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1728 if ((!instance->pop_up_p && (XtParent (widget) == instance->widget))
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1729 || (XtParent (widget) == instance->parent))
9835
d2250d1b0f48 (make_menu_in_widget): Differentiate a separator entry ("--") from a
Paul Reilly <pmr@pajato.com>
parents: 9825
diff changeset
1730 do_call (widget, closure, post_activate);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1731 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1732
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1733
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1734 /* set the keyboard focus */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1735 void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1736 xm_set_keyboard_focus (parent, w)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1737 Widget parent;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1738 Widget w;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1739 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1740 XmProcessTraversal (w, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1741 XtSetKeyboardFocus (parent, w);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1742 }
9224
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1743
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1744 /* Motif hack to set the main window areas. */
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1745 void
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1746 xm_set_main_areas (parent, menubar, work_area)
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1747 Widget parent;
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1748 Widget menubar;
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1749 Widget work_area;
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1750 {
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1751 XmMainWindowSetAreas (parent,
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1752 menubar, /* menubar (maybe 0) */
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1753 0, /* command area (psheets) */
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1754 0, /* horizontal scroll */
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1755 0, /* vertical scroll */
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1756 work_area); /* work area */
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1757 }
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1758
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1759 /* Motif hack to control resizing on the menubar. */
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1760 void
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1761 xm_manage_resizing (w, flag)
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1762 Widget w;
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1763 Boolean flag;
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1764 {
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1765 if (flag)
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1766 {
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1767 /* Enable the edit widget for resizing. */
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1768 Arg al[1];
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1769
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1770 XtSetArg (al[0], XtNallowShellResize, 0);
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1771 XtSetValues (w, al, 1);
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1772 }
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1773 else
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1774 {
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1775 /* Disable the edit widget from resizing. */
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1776 Arg al[1];
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1777
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1778 XtSetArg (al[0], XtNallowShellResize, 0);
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1779 XtSetValues (w, al, 1);
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1780 }
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1781 }