annotate lwlib/lwlib-Xm.c @ 70206:d099dc7dc981

Fix last change: (produce_stretch_glyph): Assume that face box height and width is already included in stretch glyph size so caller doesn't have to consider the extra space otherwise added (fixes problem in ses.el).
author Kim F. Storm <storm@cua.dk>
date Mon, 24 Apr 2006 00:22:26 +0000
parents e8a3fb527b77
children 3d45362f1d38 c5406394f567
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.
64769
6358e3c6075c Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64488
diff changeset
2 Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2003,
68640
e8a3fb527b77 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64769
diff changeset
3 2004, 2005, 2006 Free Software Foundation, Inc.
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4 Copyright (C) 1992 Lucid, Inc.
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 This file is part of the Lucid Widget Library.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
8 The Lucid Widget Library is free software; you can redistribute it and/or
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9 modify it under the terms of the GNU General Public License as published by
60670
68d57432d36d (xm_update_label, xm_update_list): Use the recommended
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53564
diff changeset
10 the Free Software Foundation; either version 2, or (at your option)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 any later version.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 The Lucid Widget Library is distributed in the hope that it will be useful,
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 GNU General Public License for more details.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 along with GNU Emacs; see the file COPYING. If not, write to
64083
23a17af379b1 Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 60670
diff changeset
20 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
23a17af379b1 Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 60670
diff changeset
21 Boston, MA 02110-1301, USA. */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22
26087
e0d966fb548f Add support for large files, plus some locale improvements.
Paul Eggert <eggert@twinsun.com>
parents: 25885
diff changeset
23 #ifdef HAVE_CONFIG_H
e0d966fb548f Add support for large files, plus some locale improvements.
Paul Eggert <eggert@twinsun.com>
parents: 25885
diff changeset
24 #include <config.h>
e0d966fb548f Add support for large files, plus some locale improvements.
Paul Eggert <eggert@twinsun.com>
parents: 25885
diff changeset
25 #endif
e0d966fb548f Add support for large files, plus some locale improvements.
Paul Eggert <eggert@twinsun.com>
parents: 25885
diff changeset
26
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27 #include <unistd.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 #include <stdio.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 #include <X11/StringDefs.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 #include <X11/IntrinsicP.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 #include <X11/ObjectP.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 #include <X11/CoreP.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 #include <X11/CompositeP.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35
41767
7fb1caba0f51 Include ../src/lisp.h.
Richard M. Stallman <rms@gnu.org>
parents: 36940
diff changeset
36 #include "../src/lisp.h"
7fb1caba0f51 Include ../src/lisp.h.
Richard M. Stallman <rms@gnu.org>
parents: 36940
diff changeset
37
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 #include "lwlib-Xm.h"
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 #include "lwlib-utils.h"
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 #include <Xm/BulletinB.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 #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
43 #include <Xm/CascadeBG.h>
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 #include <Xm/DrawingA.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 #include <Xm/FileSB.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 #include <Xm/Label.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 #include <Xm/List.h>
8784
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
48 #include <Xm/MainW.h>
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49 #include <Xm/MenuShell.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 #include <Xm/MessageB.h>
8784
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
51 #include <Xm/PanedW.h>
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52 #include <Xm/PushB.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 #include <Xm/PushBG.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 #include <Xm/ArrowB.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 #include <Xm/SelectioB.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 #include <Xm/Text.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 #include <Xm/TextF.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 #include <Xm/ToggleB.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 #include <Xm/ToggleBG.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60 #include <Xm/RowColumn.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 #include <Xm/ScrolledW.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 #include <Xm/Separator.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 #include <Xm/DialogS.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 #include <Xm/Form.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65
44751
81dd6129b727 Remove compiler warning
Jan Djärv <jan.h.d@swipnet.se>
parents: 41767
diff changeset
66 #undef P_
29467
03450acee9d8 (P_): Use PROTOTYPES.
Dave Love <fx@gnu.org>
parents: 28116
diff changeset
67 #if defined __STDC__ || defined PROTOTYPES
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
68 #define P_(X) X
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
69 #else
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
70 #define P_(X) ()
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
71 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
73 enum do_call_type { pre_activate, selection, no_selection, post_activate };
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
74
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
76 /* Structures to keep destroyed instances */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
77 typedef struct _destroyed_instance
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79 char* name;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
80 char* type;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
81 Widget widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82 Widget parent;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83 Boolean pop_up_p;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 struct _destroyed_instance* next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 } destroyed_instance;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
87 static destroyed_instance *make_destroyed_instance P_ ((char *, char *,
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
88 Widget, Widget,
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
89 Boolean));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
90 static void free_destroyed_instance P_ ((destroyed_instance*));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
91 Widget first_child P_ ((Widget));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
92 Boolean lw_motif_widget_p P_ ((Widget));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
93 static XmString resource_motif_string P_ ((Widget, char *));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
94 static void destroy_all_children P_ ((Widget, int));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
95 static void xm_update_label P_ ((widget_instance *, Widget, widget_value *));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
96 static void xm_update_list P_ ((widget_instance *, Widget, widget_value *));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
97 static void xm_update_pushbutton P_ ((widget_instance *, Widget,
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
98 widget_value *));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
99 static void xm_update_cascadebutton P_ ((widget_instance *, Widget,
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
100 widget_value *));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
101 static void xm_update_toggle P_ ((widget_instance *, Widget, widget_value *));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
102 static void xm_update_radiobox P_ ((widget_instance *, Widget, widget_value *));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
103 static void make_menu_in_widget P_ ((widget_instance *, Widget,
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
104 widget_value *, int));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
105 static void update_one_menu_entry P_ ((widget_instance *, Widget,
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
106 widget_value *, Boolean));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
107 static void xm_update_menu P_ ((widget_instance *, Widget, widget_value *,
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
108 Boolean));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
109 static void xm_update_text P_ ((widget_instance *, Widget, widget_value *));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
110 static void xm_update_text_field P_ ((widget_instance *, Widget,
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
111 widget_value *));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
112 void xm_update_one_value P_ ((widget_instance *, Widget, widget_value *));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
113 static void activate_button P_ ((Widget, XtPointer, XtPointer));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
114 static Widget make_dialog P_ ((char *, Widget, Boolean, char *, char *,
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
115 Boolean, Boolean, Boolean, int, int));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
116 static destroyed_instance* find_matching_instance P_ ((widget_instance*));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
117 static void mark_dead_instance_destroyed P_ ((Widget, XtPointer, XtPointer));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
118 static void recenter_widget P_ ((Widget));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
119 static Widget recycle_instance P_ ((destroyed_instance*));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
120 Widget xm_create_dialog P_ ((widget_instance*));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
121 static Widget make_menubar P_ ((widget_instance*));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
122 static void remove_grabs P_ ((Widget, XtPointer, XtPointer));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
123 static Widget make_popup_menu P_ ((widget_instance*));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
124 static Widget make_main P_ ((widget_instance*));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
125 void xm_destroy_instance P_ ((widget_instance*));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
126 void xm_popup_menu P_ ((Widget, XEvent *));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
127 static void set_min_dialog_size P_ ((Widget));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
128 static void do_call P_ ((Widget, XtPointer, enum do_call_type));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
129 static void xm_generic_callback P_ ((Widget, XtPointer, XtPointer));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
130 static void xm_nosel_callback P_ ((Widget, XtPointer, XtPointer));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
131 static void xm_pull_down_callback P_ ((Widget, XtPointer, XtPointer));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
132 static void xm_pop_down_callback P_ ((Widget, XtPointer, XtPointer));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
133 void xm_set_keyboard_focus P_ ((Widget, Widget));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
134 void xm_set_main_areas P_ ((Widget, Widget, Widget));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
135 static void xm_internal_update_other_instances P_ ((Widget, XtPointer,
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
136 XtPointer));
27333
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
137 static void xm_arm_callback P_ ((Widget, XtPointer, XtPointer));
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
138
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
139 #if 0
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
140 void xm_update_one_widget P_ ((widget_instance *, Widget, widget_value *,
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
141 Boolean));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
142 void xm_pop_instance P_ ((widget_instance*, Boolean));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
143 void xm_manage_resizing P_ ((Widget, Boolean));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
144 #endif
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
145
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
146
36940
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
147 #if 0
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
148
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
149 /* Print the complete X resource name of widget WIDGET to stderr.
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
150 This is sometimes handy to have available. */
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
151
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
152 void
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
153 x_print_complete_resource_name (widget)
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
154 Widget widget;
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
155 {
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
156 int i;
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
157 String names[100];
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
158
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
159 for (i = 0; i < 100 && widget != NULL; ++i)
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
160 {
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
161 names[i] = XtName (widget);
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
162 widget = XtParent (widget);
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
163 }
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
164
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
165 for (--i; i >= 1; --i)
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
166 fprintf (stderr, "%s.", names[i]);
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
167 fprintf (stderr, "%s\n", names[0]);
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
168 }
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
169
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
170 #endif /* 0 */
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
171
7e04c5d86fe6 (x_print_complete_resource_name) [0]: New function.
Gerd Moellmann <gerd@gnu.org>
parents: 36782
diff changeset
172
27333
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
173 static destroyed_instance *all_destroyed_instances = NULL;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
174
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175 static destroyed_instance*
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
176 make_destroyed_instance (name, type, widget, parent, pop_up_p)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
177 char* name;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
178 char* type;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
179 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
180 Widget parent;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
181 Boolean pop_up_p;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
183 destroyed_instance* instance =
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
184 (destroyed_instance*)malloc (sizeof (destroyed_instance));
8784
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
185 instance->name = safe_strdup (name);
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
186 instance->type = safe_strdup (type);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 instance->widget = widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 instance->parent = parent;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 instance->pop_up_p = pop_up_p;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 instance->next = NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191 return instance;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
193
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
195 free_destroyed_instance (instance)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
196 destroyed_instance* instance;
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 free (instance->name);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 free (instance->type);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 free (instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203 /* motif utility functions */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
204 Widget
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
205 first_child (widget)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
206 Widget widget;
5626
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 return ((CompositeWidget)widget)->composite.children [0];
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211 Boolean
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
212 lw_motif_widget_p (widget)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
213 Widget widget;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214 {
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
215 return
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
216 XtClass (widget) == xmDialogShellWidgetClass
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217 || XmIsPrimitive (widget) || XmIsManager (widget) || XmIsGadget (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218 }
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 static XmString
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
221 resource_motif_string (widget, name)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
222 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
223 char* name;
5626
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 XtResource resource;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
226 XmString result = 0;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
227
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228 resource.resource_name = name;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
229 resource.resource_class = XmCXmString;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
230 resource.resource_type = XmRXmString;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
231 resource.resource_size = sizeof (XmString);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232 resource.resource_offset = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
233 resource.default_type = XtRImmediate;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234 resource.default_addr = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236 XtGetSubresources (widget, (XtPointer)&result, "dialogString",
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237 "DialogString", &resource, 1, NULL, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
238 return result;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
241 /* 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
242 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
243
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244 static void
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
245 destroy_all_children (widget, first_child_to_destroy)
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
246 Widget widget;
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
247 int first_child_to_destroy;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 Widget* children;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
250 unsigned int number;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251 int i;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253 children = XtCompositeChildren (widget, &number);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 if (children)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255 {
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
256 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
257 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
258
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
259 /* 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
260 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
261 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
262 {
0706926a11cb (destroy_all_children): When freeing a cascade button, free its submenu too.
Richard M. Stallman <rms@gnu.org>
parents: 14877
diff changeset
263 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
264 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
265 /* 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
266 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
267 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
268 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
269 then submenu should remain unchanged. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
270 XtSetArg (al[0], XmNsubMenuId, &submenu);
14931
0706926a11cb (destroy_all_children): When freeing a cascade button, free its submenu too.
Richard M. Stallman <rms@gnu.org>
parents: 14877
diff changeset
271 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
272 if (submenu)
49460
9f4069f735c6 lwlib-Xm.c: Fixed memory leak for menus.
Jan Djärv <jan.h.d@swipnet.se>
parents: 44751
diff changeset
273 {
9f4069f735c6 lwlib-Xm.c: Fixed memory leak for menus.
Jan Djärv <jan.h.d@swipnet.se>
parents: 44751
diff changeset
274 destroy_all_children (submenu, 0);
9f4069f735c6 lwlib-Xm.c: Fixed memory leak for menus.
Jan Djärv <jan.h.d@swipnet.se>
parents: 44751
diff changeset
275 XtDestroyWidget (submenu);
9f4069f735c6 lwlib-Xm.c: Fixed memory leak for menus.
Jan Djärv <jan.h.d@swipnet.se>
parents: 44751
diff changeset
276 }
14931
0706926a11cb (destroy_all_children): When freeing a cascade button, free its submenu too.
Richard M. Stallman <rms@gnu.org>
parents: 14877
diff changeset
277 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
278 }
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
279
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280 XtFree ((char *) children);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283
27333
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
284
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
285
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
286 /* Callback XmNarmCallback and XmNdisarmCallback for buttons in a
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
287 menu. CLIENT_DATA contains a pointer to the widget_value
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
288 corresponding to widget W. CALL_DATA contains a
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
289 XmPushButtonCallbackStruct containing the reason why the callback
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
290 is called. */
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
291
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
292 static void
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
293 xm_arm_callback (w, client_data, call_data)
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
294 Widget w;
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
295 XtPointer client_data, call_data;
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
296 {
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
297 XmPushButtonCallbackStruct *cbs = (XmPushButtonCallbackStruct *) call_data;
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
298 widget_value *wv = (widget_value *) client_data;
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
299 widget_instance *instance;
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
300
34335
8a6f81835a8d (xm_arm_callback): Fix last change.
Gerd Moellmann <gerd@gnu.org>
parents: 34039
diff changeset
301 /* Get the id of the menu bar or popup menu this widget is in. */
36440
c94bea694181 (xm_arm_callback): Don't compare widgets with `None',
Gerd Moellmann <gerd@gnu.org>
parents: 36437
diff changeset
302 while (w != NULL)
34335
8a6f81835a8d (xm_arm_callback): Fix last change.
Gerd Moellmann <gerd@gnu.org>
parents: 34039
diff changeset
303 {
8a6f81835a8d (xm_arm_callback): Fix last change.
Gerd Moellmann <gerd@gnu.org>
parents: 34039
diff changeset
304 if (XmIsRowColumn (w))
8a6f81835a8d (xm_arm_callback): Fix last change.
Gerd Moellmann <gerd@gnu.org>
parents: 34039
diff changeset
305 {
8a6f81835a8d (xm_arm_callback): Fix last change.
Gerd Moellmann <gerd@gnu.org>
parents: 34039
diff changeset
306 unsigned char type = 0xff;
8a6f81835a8d (xm_arm_callback): Fix last change.
Gerd Moellmann <gerd@gnu.org>
parents: 34039
diff changeset
307
8a6f81835a8d (xm_arm_callback): Fix last change.
Gerd Moellmann <gerd@gnu.org>
parents: 34039
diff changeset
308 XtVaGetValues (w, XmNrowColumnType, &type, NULL);
8a6f81835a8d (xm_arm_callback): Fix last change.
Gerd Moellmann <gerd@gnu.org>
parents: 34039
diff changeset
309 if (type == XmMENU_BAR || type == XmMENU_POPUP)
8a6f81835a8d (xm_arm_callback): Fix last change.
Gerd Moellmann <gerd@gnu.org>
parents: 34039
diff changeset
310 break;
8a6f81835a8d (xm_arm_callback): Fix last change.
Gerd Moellmann <gerd@gnu.org>
parents: 34039
diff changeset
311 }
8a6f81835a8d (xm_arm_callback): Fix last change.
Gerd Moellmann <gerd@gnu.org>
parents: 34039
diff changeset
312
8a6f81835a8d (xm_arm_callback): Fix last change.
Gerd Moellmann <gerd@gnu.org>
parents: 34039
diff changeset
313 w = XtParent (w);
8a6f81835a8d (xm_arm_callback): Fix last change.
Gerd Moellmann <gerd@gnu.org>
parents: 34039
diff changeset
314 }
8a6f81835a8d (xm_arm_callback): Fix last change.
Gerd Moellmann <gerd@gnu.org>
parents: 34039
diff changeset
315
36440
c94bea694181 (xm_arm_callback): Don't compare widgets with `None',
Gerd Moellmann <gerd@gnu.org>
parents: 36437
diff changeset
316 if (w != NULL)
27333
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
317 {
34039
88c42020e441 (xm_arm_callback): Handle case that W is null;
Gerd Moellmann <gerd@gnu.org>
parents: 30571
diff changeset
318 instance = lw_get_widget_instance (w);
88c42020e441 (xm_arm_callback): Handle case that W is null;
Gerd Moellmann <gerd@gnu.org>
parents: 30571
diff changeset
319 if (instance && instance->info->highlight_cb)
88c42020e441 (xm_arm_callback): Handle case that W is null;
Gerd Moellmann <gerd@gnu.org>
parents: 30571
diff changeset
320 {
88c42020e441 (xm_arm_callback): Handle case that W is null;
Gerd Moellmann <gerd@gnu.org>
parents: 30571
diff changeset
321 call_data = cbs->reason == XmCR_DISARM ? NULL : wv;
88c42020e441 (xm_arm_callback): Handle case that W is null;
Gerd Moellmann <gerd@gnu.org>
parents: 30571
diff changeset
322 instance->info->highlight_cb (w, instance->info->id, call_data);
88c42020e441 (xm_arm_callback): Handle case that W is null;
Gerd Moellmann <gerd@gnu.org>
parents: 30571
diff changeset
323 }
27333
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
324 }
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
325 }
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
326
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
327
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
328
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
329 /* Update the label of widget WIDGET. WIDGET must be a Label widget
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
330 or a subclass of Label. WIDGET_INSTANCE is unused. VAL contains
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
331 the value to update.
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
332
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
333 Menus:
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
334
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
335 Emacs fills VAL->name with the text to display in the menu, and
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
336 sets VAL->value to null. Function make_menu_in_widget creates
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
337 widgets with VAL->name as resource name. This works because the
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
338 Label widget uses its resource name for display if no
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
339 XmNlabelString is set.
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
340
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
341 Dialogs:
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
342
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
343 VAL->name is again set to the resource name, but VAL->value is
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
344 not null, and contains the label string to display. */
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
345
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
347 xm_update_label (instance, widget, val)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
348 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
349 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
350 widget_value* val;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
352 XmString res_string = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353 XmString built_string = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354 XmString key_string = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
355 Arg al [256];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356 int ac;
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
357
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
358 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
360 if (val->value)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361 {
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
362 /* A label string is specified, i.e. we are in a dialog. First
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
363 see if it is overridden by something from the resource file. */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
364 res_string = resource_motif_string (widget, val->value);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366 if (res_string)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
367 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368 XtSetArg (al [ac], XmNlabelString, res_string); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
369 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
370 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
371 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372 built_string =
60670
68d57432d36d (xm_update_label, xm_update_list): Use the recommended
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53564
diff changeset
373 XmStringCreateLocalized (val->value);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
374 XtSetArg (al [ac], XmNlabelString, built_string); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
376
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377 XtSetArg (al [ac], XmNlabelType, XmSTRING); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
378 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
379
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380 if (val->key)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
381 {
60670
68d57432d36d (xm_update_label, xm_update_list): Use the recommended
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53564
diff changeset
382 key_string = XmStringCreateLocalized (val->key);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
383 XtSetArg (al [ac], XmNacceleratorText, key_string); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386 if (ac)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387 XtSetValues (widget, al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
388
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 if (built_string)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
390 XmStringFree (built_string);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392 if (key_string)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393 XmStringFree (key_string);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
395
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396 /* update of list */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
398 xm_update_list (instance, widget, val)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
399 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
400 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
401 widget_value* val;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403 widget_value* cur;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404 int i;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 XtRemoveAllCallbacks (widget, XmNsingleSelectionCallback);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 XtAddCallback (widget, XmNsingleSelectionCallback, xm_generic_callback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407 instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408 for (cur = val->contents, i = 0; cur; cur = cur->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409 if (cur->value)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 {
60670
68d57432d36d (xm_update_label, xm_update_list): Use the recommended
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53564
diff changeset
411 XmString xmstr = XmStringCreateLocalized (cur->value);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 i += 1;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413 XmListAddItem (widget, xmstr, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 if (cur->selected)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415 XmListSelectPos (widget, i, False);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416 XmStringFree (xmstr);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
419
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420 /* update of buttons */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
422 xm_update_pushbutton (instance, widget, val)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
423 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
424 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
425 widget_value* val;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 {
30571
aa1b8b4c369d Use NULL at the end of the
Gerd Moellmann <gerd@gnu.org>
parents: 29467
diff changeset
427 XtVaSetValues (widget, XmNalignment, XmALIGNMENT_CENTER, NULL);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428 XtRemoveAllCallbacks (widget, XmNactivateCallback);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429 XtAddCallback (widget, XmNactivateCallback, xm_generic_callback, instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430 }
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 static void
11862
10a973a88e87 (activate_button, xm_update_cascadebutton): Don't use prototype.
Karl Heuer <kwzh@gnu.org>
parents: 11435
diff changeset
433 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
434 widget_instance* instance;
10a973a88e87 (activate_button, xm_update_cascadebutton): Don't use prototype.
Karl Heuer <kwzh@gnu.org>
parents: 11435
diff changeset
435 Widget widget;
10a973a88e87 (activate_button, xm_update_cascadebutton): Don't use prototype.
Karl Heuer <kwzh@gnu.org>
parents: 11435
diff changeset
436 widget_value* val;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
437 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
438 /* Should also rebuild the menu by calling ...update_menu... */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
439 XtRemoveAllCallbacks (widget, XmNcascadingCallback);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
440 XtAddCallback (widget, XmNcascadingCallback, xm_pull_down_callback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
441 instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
442 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
443
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
444 /* update toggle and radiobox */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
445 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
446 xm_update_toggle (instance, widget, val)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
447 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
448 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
449 widget_value* val;
5626
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 XtRemoveAllCallbacks (widget, XmNvalueChangedCallback);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452 XtAddCallback (widget, XmNvalueChangedCallback,
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
453 xm_generic_callback, instance);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
454 XtVaSetValues (widget, XmNset, val->selected,
30571
aa1b8b4c369d Use NULL at the end of the
Gerd Moellmann <gerd@gnu.org>
parents: 29467
diff changeset
455 XmNalignment, XmALIGNMENT_BEGINNING, NULL);
5626
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 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
459 xm_update_radiobox (instance, widget, val)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
460 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
461 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
462 widget_value* val;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
463
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465 Widget toggle;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466 widget_value* cur;
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 /* update the callback */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469 XtRemoveAllCallbacks (widget, XmNentryCallback);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470 XtAddCallback (widget, XmNentryCallback, xm_generic_callback, instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
471
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472 /* first update all the toggles */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473 /* Energize kernel interface is currently bad. It sets the selected widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474 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
475 have to support both setting the selection with the selected slot
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476 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
477 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
478 for (cur = val->contents; cur; cur = cur->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480 toggle = XtNameToWidget (widget, cur->value);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481 if (toggle)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 {
36437
d45267642a42 (xm_update_radiobox, update_one_menu_entry)
Gerd Moellmann <gerd@gnu.org>
parents: 34335
diff changeset
483 XtSetSensitive (toggle, cur->enabled);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484 if (!val->value && cur->selected)
30571
aa1b8b4c369d Use NULL at the end of the
Gerd Moellmann <gerd@gnu.org>
parents: 29467
diff changeset
485 XtVaSetValues (toggle, XmNset, cur->selected, NULL);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
486 if (val->value && strcmp (val->value, cur->value))
30571
aa1b8b4c369d Use NULL at the end of the
Gerd Moellmann <gerd@gnu.org>
parents: 29467
diff changeset
487 XtVaSetValues (toggle, XmNset, False, NULL);
5626
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 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491 /* The selected was specified by the value slot */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 if (val->value)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 toggle = XtNameToWidget (widget, val->value);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 if (toggle)
30571
aa1b8b4c369d Use NULL at the end of the
Gerd Moellmann <gerd@gnu.org>
parents: 29467
diff changeset
496 XtVaSetValues (toggle, XmNset, True, NULL);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
500
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
501 /* update a popup menu, pulldown menu or a menubar */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
503 /* 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
504
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 static void
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
506 make_menu_in_widget (instance, widget, val, keep_first_children)
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
507 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
508 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
509 widget_value* val;
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
510 int keep_first_children;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 Widget* children = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 int num_children;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 int child_index;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515 widget_value* cur;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
516 Widget button = 0;
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
517 Widget title = 0;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518 Widget menu;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519 Arg al [256];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520 int ac;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521 Boolean menubar_p;
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
522 unsigned char type;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
523
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
524 Widget* old_children;
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
525 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
526
64488
e71cc2adddad * lwlib-Xm.c (make_menu_in_widget): Disable drag and drop for
Jan Djärv <jan.h.d@swipnet.se>
parents: 64083
diff changeset
527 /* Disable drag and drop for labels in menu bar. */
e71cc2adddad * lwlib-Xm.c (make_menu_in_widget): Disable drag and drop for
Jan Djärv <jan.h.d@swipnet.se>
parents: 64083
diff changeset
528 static char overrideTrans[] = "<Btn2Down>: Noop()";
e71cc2adddad * lwlib-Xm.c (make_menu_in_widget): Disable drag and drop for
Jan Djärv <jan.h.d@swipnet.se>
parents: 64083
diff changeset
529 XtTranslations override = XtParseTranslationTable (overrideTrans);
e71cc2adddad * lwlib-Xm.c (make_menu_in_widget): Disable drag and drop for
Jan Djärv <jan.h.d@swipnet.se>
parents: 64083
diff changeset
530
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
531 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
532
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
533 /* Allocate the children array */
36782
2f7bd108e82f (make_menu_in_widget): Remove code forcing LessTif to
Gerd Moellmann <gerd@gnu.org>
parents: 36780
diff changeset
534 for (num_children = 0, cur = val; cur; num_children++, cur = cur->next)
2f7bd108e82f (make_menu_in_widget): Remove code forcing LessTif to
Gerd Moellmann <gerd@gnu.org>
parents: 36780
diff changeset
535 ;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536 children = (Widget*)XtMalloc (num_children * sizeof (Widget));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
538 /* WIDGET should be a RowColumn. */
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
539 if (!XmIsRowColumn (widget))
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
540 abort ();
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
541
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
542 /* Determine whether WIDGET is a menu bar. */
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
543 type = -1;
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
544 XtSetArg (al[0], XmNrowColumnType, &type);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
545 XtGetValues (widget, al, 1);
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
546 if (type != XmMENU_BAR && type != XmMENU_PULLDOWN && type != XmMENU_POPUP)
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
547 abort ();
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
548 menubar_p = type == XmMENU_BAR;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
549
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
550 /* Add a callback to popups and pulldowns that is called when
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
551 it is made invisible again. */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
552 if (!menubar_p)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
553 XtAddCallback (XtParent (widget), XmNpopdownCallback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
554 xm_pop_down_callback, (XtPointer)instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
555
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
556 /* 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
557 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
558 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
559 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
560
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
561 /* 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
562 (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
563 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
564 abort ();
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
565
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
566 /* Create the rest. */
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
567 for (child_index = keep_first_children; cur; child_index++, cur = cur->next)
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
568 {
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
569 enum menu_separator separator;
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
570
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
571 ac = 0;
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
572 XtSetArg (al[ac], XmNsensitive, cur->enabled); ac++;
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
573 XtSetArg (al[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
574 XtSetArg (al[ac], XmNuserData, cur->call_data); ac++;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
575
9835
d2250d1b0f48 (make_menu_in_widget): Differentiate a separator entry ("--") from a
Paul Reilly <pmr@pajato.com>
parents: 9825
diff changeset
576 if (instance->pop_up_p && !cur->contents && !cur->call_data
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
577 && !lw_separator_p (cur->name, &separator, 1))
9224
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
578 {
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
579 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
580 XtSetArg (al[ac], XmNalignment, XmALIGNMENT_CENTER); ac++;
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
581 title = button = XmCreateLabel (widget, cur->name, al, ac);
9224
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
582 }
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
583 else if (lw_separator_p (cur->name, &separator, 1))
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
584 {
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
585 ac = 0;
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
586 XtSetArg (al[ac], XmNseparatorType, separator); ++ac;
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
587 button = XmCreateSeparator (widget, cur->name, al, ac);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
588 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
589 else if (!cur->contents)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
590 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591 if (menubar_p)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
592 button = XmCreateCascadeButton (widget, cur->name, al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
593 else if (!cur->call_data)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
594 button = XmCreateLabel (widget, cur->name, al, ac);
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
595 else if (cur->button_type == BUTTON_TYPE_TOGGLE
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
596 || cur->button_type == BUTTON_TYPE_RADIO)
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
597 {
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
598 XtSetArg (al[ac], XmNset, cur->selected); ++ac;
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
599 XtSetArg (al[ac], XmNvisibleWhenOff, True); ++ac;
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
600 XtSetArg (al[ac], XmNindicatorType,
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
601 (cur->button_type == BUTTON_TYPE_TOGGLE
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
602 ? XmN_OF_MANY : XmONE_OF_MANY));
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
603 ++ac;
25885
6a0fe1278e4d (make_menu_in_widget, update_one_menu_entry): Use
Gerd Moellmann <gerd@gnu.org>
parents: 25037
diff changeset
604 button = XmCreateToggleButton (widget, cur->name, al, ac);
27333
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
605 XtAddCallback (button, XmNarmCallback, xm_arm_callback, cur);
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
606 XtAddCallback (button, XmNdisarmCallback, xm_arm_callback, cur);
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
607 }
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608 else
27333
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
609 {
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
610 button = XmCreatePushButton (widget, cur->name, al, ac);
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
611 XtAddCallback (button, XmNarmCallback, xm_arm_callback, cur);
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
612 XtAddCallback (button, XmNdisarmCallback, xm_arm_callback, cur);
a5bceda5d689 (xm_arm_callback): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
613 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
614
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
615 xm_update_label (instance, button, cur);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
616
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
617 /* Add a callback that is called when the button is
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
618 selected. Toggle buttons don't support
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
619 XmNactivateCallback, we use XmNvalueChangedCallback in
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
620 that case. Don't add a callback to a simple label. */
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
621 if (cur->button_type)
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
622 xm_update_toggle (instance, button, cur);
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
623 else if (cur->call_data)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624 XtAddCallback (button, XmNactivateCallback, xm_generic_callback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
625 (XtPointer)instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
628 {
11435
efaaecd960ae (update_one_menu_entry, make_menu_in_widget):
Richard M. Stallman <rms@gnu.org>
parents: 11299
diff changeset
629 menu = XmCreatePulldownMenu (widget, cur->name, NULL, 0);
27422
5c5bb4b1ff45 (make_menu_in_widget): Don't add XmNpopdownCallback,
Gerd Moellmann <gerd@gnu.org>
parents: 27345
diff changeset
630
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
631 make_menu_in_widget (instance, menu, cur->contents, 0);
27422
5c5bb4b1ff45 (make_menu_in_widget): Don't add XmNpopdownCallback,
Gerd Moellmann <gerd@gnu.org>
parents: 27345
diff changeset
632 XtSetArg (al[ac], XmNsubMenuId, menu); ac++;
25885
6a0fe1278e4d (make_menu_in_widget, update_one_menu_entry): Use
Gerd Moellmann <gerd@gnu.org>
parents: 25037
diff changeset
633 button = XmCreateCascadeButton (widget, cur->name, al, ac);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
635 xm_update_label (instance, button, cur);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637 XtAddCallback (button, XmNcascadingCallback, xm_pull_down_callback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638 (XtPointer)instance);
64488
e71cc2adddad * lwlib-Xm.c (make_menu_in_widget): Disable drag and drop for
Jan Djärv <jan.h.d@swipnet.se>
parents: 64083
diff changeset
639 XtOverrideTranslations (button, override);
e71cc2adddad * lwlib-Xm.c (make_menu_in_widget): Disable drag and drop for
Jan Djärv <jan.h.d@swipnet.se>
parents: 64083
diff changeset
640
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
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
643 children[child_index] = button;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
646 /* Last entry is the help button. The original comment read "Has to
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
647 be done after managing the buttons otherwise the menubar is only
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
648 4 pixels high." This is no longer true, and to make
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
649 XmNmenuHelpWidget work, we need to set it before managing the
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
650 children.. --gerd. */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
651 if (button)
30571
aa1b8b4c369d Use NULL at the end of the
Gerd Moellmann <gerd@gnu.org>
parents: 29467
diff changeset
652 XtVaSetValues (widget, XmNmenuHelpWidget, button, NULL);
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
653
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
654 if (num_children)
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
655 XtManageChildren (children, num_children);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
656
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
657 XtFree ((char *) children);
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
658 if (old_children)
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
659 XtFree ((char *) old_children);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
660 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
663 update_one_menu_entry (instance, widget, val, deep_p)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
664 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
665 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
666 widget_value* val;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
667 Boolean deep_p;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
668 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
669 Arg al [256];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670 int ac;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671 Widget menu;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672 widget_value* contents;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
674 if (val->this_one_change == NO_CHANGE)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
675 return;
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 /* update the sensitivity and userdata */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
678 /* Common to all widget types */
36437
d45267642a42 (xm_update_radiobox, update_one_menu_entry)
Gerd Moellmann <gerd@gnu.org>
parents: 34335
diff changeset
679 XtSetSensitive (widget, val->enabled);
d45267642a42 (xm_update_radiobox, update_one_menu_entry)
Gerd Moellmann <gerd@gnu.org>
parents: 34335
diff changeset
680 XtVaSetValues (widget, XmNuserData, val->call_data, NULL);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
681
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
682 /* 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
683 if (val->this_one_change >= VISIBLE_CHANGE)
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
684 {
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
685 xm_update_label (instance, widget, val);
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
686 if (val->button_type)
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
687 xm_update_toggle (instance, widget, val);
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
688 }
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
689
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
690 /* update the pulldown/pullaside as needed */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
691 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
692 menu = NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
693 XtSetArg (al [ac], XmNsubMenuId, &menu); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
694 XtGetValues (widget, al, ac);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
695
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
696 contents = val->contents;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
697
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
698 if (!menu)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
699 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
700 if (contents)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
701 {
15853
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
702 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
703 Widget parent;
15853
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
704 Widget *widget_list;
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
705
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
706 parent = XtParent (widget);
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
707 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
708
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
709 /* 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
710 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
711 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
712 break;
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
713 if (i == old_num_children)
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
714 abort ();
15859
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
715 if (XmIsCascadeButton (widget_list[i]))
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
716 {
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
717 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
718 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
719 ac = 0;
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
720 XtSetArg (al [ac], XmNsubMenuId, menu); ac++;
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
721 XtSetValues (widget, al, ac);
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
722 }
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
723 else
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
724 {
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
725 Widget button;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
726
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
727 /* The current menuitem is a XmPushButtonGadget, it
15859
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
728 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
729 XtDestroyWidget (widget_list[i]);
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
730 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
731 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
732 ac = 0;
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
733 XtSetArg (al [ac], XmNsubMenuId, menu); ac++;
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
734 /* 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
735 conjunction with Emacs' event loop */
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
736 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
737 #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
738 /* 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
739 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
740 #endif
25885
6a0fe1278e4d (make_menu_in_widget, update_one_menu_entry): Use
Gerd Moellmann <gerd@gnu.org>
parents: 25037
diff changeset
741 button = XmCreateCascadeButton (parent, val->name, al, ac);
15859
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
742 xm_update_label (instance, button, val);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
743
15859
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
744 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
745 (XtPointer)instance);
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
746 XtManageChild (button);
2cb422e2d16c (update_one_menu_entry): Fix previous change:
Richard M. Stallman <rms@gnu.org>
parents: 15853
diff changeset
747 }
49460
9f4069f735c6 lwlib-Xm.c: Fixed memory leak for menus.
Jan Djärv <jan.h.d@swipnet.se>
parents: 44751
diff changeset
748
9f4069f735c6 lwlib-Xm.c: Fixed memory leak for menus.
Jan Djärv <jan.h.d@swipnet.se>
parents: 44751
diff changeset
749 if (widget_list)
9f4069f735c6 lwlib-Xm.c: Fixed memory leak for menus.
Jan Djärv <jan.h.d@swipnet.se>
parents: 44751
diff changeset
750 XtFree ((char*) widget_list);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
751 }
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 else if (!contents)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
754 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
755 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
756 XtSetArg (al [ac], XmNsubMenuId, NULL); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
757 XtSetValues (widget, al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
758 XtDestroyWidget (menu);
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 else if (deep_p && contents->change != NO_CHANGE)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
761 xm_update_menu (instance, menu, val, 1);
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
764 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
765 xm_update_menu (instance, widget, val, deep_p)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
766 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
767 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
768 widget_value* val;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
769 Boolean deep_p;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
770 {
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
771 Widget* children;
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
772 unsigned int num_children;
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
773 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
774 int i;
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
775 widget_value* cur;
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
776
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
777 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
778
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
779 /* Widget is a RowColumn widget whose contents have to be updated
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
780 * 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
781
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
782 /* 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
783 must completely replace. */
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
784 if (val->contents == 0)
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
785 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
786 else if (val->contents->change == STRUCTURAL_CHANGE)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
787 {
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
788 if (children)
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
789 {
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
790 for (i = 0, cur = val->contents;
15665
432750098147 (xm_update_menu): Fix loop termination test.
Karl Heuer <kwzh@gnu.org>
parents: 15630
diff changeset
791 (i < num_children
432750098147 (xm_update_menu): Fix loop termination test.
Karl Heuer <kwzh@gnu.org>
parents: 15630
diff changeset
792 && 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
793 i++, cur = cur->next)
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
794 {
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
795 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
796 break;
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
797 }
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
798
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
799 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
800 }
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
801 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
802 else
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
803 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
804
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
805 /* 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
806 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
807 if (children)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
808 {
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
809 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
810 {
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
811 if (!cur)
15853
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
812 {
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
813 num_children_to_keep = i;
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
814 break;
1ca5c3c9853a (update_one_menu_entry): When creating a pulldown
Richard M. Stallman <rms@gnu.org>
parents: 15816
diff changeset
815 }
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
816 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
817 || 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
818 continue;
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
819 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
820 cur = cur->next;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
821 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
822 }
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
823
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
824 /* 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
825 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
826 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
827 {
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
828 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
829 make_menu_in_widget (instance, widget, val->contents,
49460
9f4069f735c6 lwlib-Xm.c: Fixed memory leak for menus.
Jan Djärv <jan.h.d@swipnet.se>
parents: 44751
diff changeset
830 num_children_to_keep);
14877
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
831 }
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
832
62fc4d7a846f (destroy_all_children): New arg first_child_to_destroy.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
833 XtFree ((char *) children);
5626
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 /* update text widgets */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
838
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
839 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
840 xm_update_text (instance, widget, val)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
841 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
842 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
843 widget_value* val;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
844 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
845 XmTextSetString (widget, val->value ? val->value : "");
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
846 XtRemoveAllCallbacks (widget, XmNactivateCallback);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
847 XtAddCallback (widget, XmNactivateCallback, xm_generic_callback, instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
848 XtRemoveAllCallbacks (widget, XmNvalueChangedCallback);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
849 XtAddCallback (widget, XmNvalueChangedCallback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
850 xm_internal_update_other_instances, instance);
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 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
854 xm_update_text_field (instance, widget, val)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
855 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
856 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
857 widget_value* val;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
858 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
859 XmTextFieldSetString (widget, val->value ? val->value : "");
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
860 XtRemoveAllCallbacks (widget, XmNactivateCallback);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
861 XtAddCallback (widget, XmNactivateCallback, xm_generic_callback, instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
862 XtRemoveAllCallbacks (widget, XmNvalueChangedCallback);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
863 XtAddCallback (widget, XmNvalueChangedCallback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
864 xm_internal_update_other_instances, instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
865 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
866
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
867
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
868 /* update a motif widget */
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 void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
871 xm_update_one_widget (instance, widget, val, deep_p)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
872 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
873 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
874 widget_value* val;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
875 Boolean deep_p;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
876 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
877 WidgetClass class;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
878
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
879 /* Mark as not edited */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
880 val->edited = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
881
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
882 /* Common to all widget types */
36437
d45267642a42 (xm_update_radiobox, update_one_menu_entry)
Gerd Moellmann <gerd@gnu.org>
parents: 34335
diff changeset
883 XtSetSensitive (widget, val->enabled);
d45267642a42 (xm_update_radiobox, update_one_menu_entry)
Gerd Moellmann <gerd@gnu.org>
parents: 34335
diff changeset
884 XtVaSetValues (widget, XmNuserData, val->call_data, NULL);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
885
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
886 /* Common to all label like widgets */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
887 if (XtIsSubclass (widget, xmLabelWidgetClass))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
888 xm_update_label (instance, widget, val);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
889
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
890 class = XtClass (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
891 /* Class specific things */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
892 if (class == xmPushButtonWidgetClass ||
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
893 class == xmArrowButtonWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
894 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
895 xm_update_pushbutton (instance, widget, val);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
896 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
897 else if (class == xmCascadeButtonWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
898 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
899 xm_update_cascadebutton (instance, widget, val);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
900 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
901 else if (class == xmToggleButtonWidgetClass
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
902 || class == xmToggleButtonGadgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
903 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
904 xm_update_toggle (instance, widget, val);
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 else if (class == xmRowColumnWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
907 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
908 Boolean radiobox = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
909 int ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
910 Arg al [1];
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
911
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
912 XtSetArg (al [ac], XmNradioBehavior, &radiobox); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
913 XtGetValues (widget, al, ac);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
914
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
915 if (radiobox)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
916 xm_update_radiobox (instance, widget, val);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
917 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
918 xm_update_menu (instance, widget, val, deep_p);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
919 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
920 else if (class == xmTextWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
921 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
922 xm_update_text (instance, widget, val);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
923 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
924 else if (class == xmTextFieldWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
925 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
926 xm_update_text_field (instance, widget, val);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
927 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
928 else if (class == xmListWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
929 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
930 xm_update_list (instance, widget, val);
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 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
933
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
934 /* getting the value back */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
935 void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
936 xm_update_one_value (instance, widget, val)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
937 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
938 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
939 widget_value* val;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
940 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
941 WidgetClass class = XtClass (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
942 widget_value *old_wv;
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 /* copy the call_data slot into the "return" widget_value */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
945 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
946 if (!strcmp (val->name, old_wv->name))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
947 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
948 val->call_data = old_wv->call_data;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
949 break;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
950 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
951
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
952 if (class == xmToggleButtonWidgetClass || class == xmToggleButtonGadgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
953 {
30571
aa1b8b4c369d Use NULL at the end of the
Gerd Moellmann <gerd@gnu.org>
parents: 29467
diff changeset
954 XtVaGetValues (widget, XmNset, &val->selected, NULL);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
955 val->edited = True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
956 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
957 else if (class == xmTextWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
958 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
959 if (val->value)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
960 free (val->value);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
961 val->value = XmTextGetString (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
962 val->edited = True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
963 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
964 else if (class == xmTextFieldWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
965 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
966 if (val->value)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
967 free (val->value);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
968 val->value = XmTextFieldGetString (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
969 val->edited = True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
970 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
971 else if (class == xmRowColumnWidgetClass)
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 Boolean radiobox = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
974 int ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
975 Arg al [1];
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
976
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
977 XtSetArg (al [ac], XmNradioBehavior, &radiobox); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
978 XtGetValues (widget, al, ac);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
979
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
980 if (radiobox)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
981 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
982 CompositeWidget radio = (CompositeWidget)widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
983 int i;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
984 for (i = 0; i < radio->composite.num_children; i++)
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 int set = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
987 Widget toggle = radio->composite.children [i];
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
988
30571
aa1b8b4c369d Use NULL at the end of the
Gerd Moellmann <gerd@gnu.org>
parents: 29467
diff changeset
989 XtVaGetValues (toggle, XmNset, &set, NULL);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
990 if (set)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
991 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
992 if (val->value)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
993 free (val->value);
8784
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
994 val->value = safe_strdup (XtName (toggle));
5626
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 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
997 val->edited = True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
998 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
999 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1000 else if (class == xmListWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1001 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1002 int pos_cnt;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1003 int* pos_list;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1004 if (XmListGetSelectedPos (widget, &pos_list, &pos_cnt))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1005 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1006 int i;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1007 widget_value* cur;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1008 for (cur = val->contents, i = 0; cur; cur = cur->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1009 if (cur->value)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1010 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1011 int j;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1012 cur->selected = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1013 i += 1;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1014 for (j = 0; j < pos_cnt; j++)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1015 if (pos_list [j] == i)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1016 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1017 cur->selected = True;
8784
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1018 val->value = safe_strdup (cur->name);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1019 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1020 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1021 val->edited = 1;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1022 XtFree ((char *) pos_list);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1023 }
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 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1026
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1027
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1028 /* 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
1029 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
1030 This is used from the XmNdefaultAction callback of the List widgets to
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1031 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
1032 I could not find a way to do that with accelerators.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1033 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1034 static void
11862
10a973a88e87 (activate_button, xm_update_cascadebutton): Don't use prototype.
Karl Heuer <kwzh@gnu.org>
parents: 11435
diff changeset
1035 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
1036 Widget widget;
10a973a88e87 (activate_button, xm_update_cascadebutton): Don't use prototype.
Karl Heuer <kwzh@gnu.org>
parents: 11435
diff changeset
1037 XtPointer closure;
10a973a88e87 (activate_button, xm_update_cascadebutton): Don't use prototype.
Karl Heuer <kwzh@gnu.org>
parents: 11435
diff changeset
1038 XtPointer call_data;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1039 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1040 Widget button = (Widget)closure;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1041 XtCallCallbacks (button, XmNactivateCallback, NULL);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1042 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1043
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1044 /* creation functions */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1045
53564
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1046 /* Called for key press in dialogs. Used to pop down dialog on ESC. */
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1047 static void
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1048 dialog_key_cb (widget, closure, event, continue_to_dispatch)
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1049 Widget widget;
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1050 XtPointer closure;
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1051 XEvent *event;
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1052 Boolean *continue_to_dispatch;
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1053 {
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1054 KeySym sym = 0;
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1055 Modifiers modif_ret;
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1056
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1057 XtTranslateKeycode (event->xkey.display, event->xkey.keycode, 0,
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1058 &modif_ret, &sym);
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1059
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1060 if (sym == osfXK_Cancel)
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1061 {
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1062 Widget w = *((Widget *) closure);
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1063
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1064 while (w && ! XtIsShell (w))
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1065 w = XtParent (w);
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1066
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1067 if (XtIsShell (w)) XtPopdown (w);
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1068 }
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1069
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1070 *continue_to_dispatch = TRUE;
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1071 }
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1072
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1073 /* dialogs */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1074 static Widget
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1075 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
1076 radio_box, list, left_buttons, right_buttons)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1077 char* name;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1078 Widget parent;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1079 Boolean pop_up_p;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1080 char* shell_title;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1081 char* icon_name;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1082 Boolean text_input_slot;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1083 Boolean radio_box;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1084 Boolean list;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1085 int left_buttons;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1086 int right_buttons;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1087 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1088 Widget result;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1089 Widget form;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1090 Widget row;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1091 Widget icon;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1092 Widget icon_separator;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1093 Widget message;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1094 Widget value = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1095 Widget separator;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1096 Widget button = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1097 Widget children [16]; /* for the final XtManageChildren */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1098 int n_children;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1099 Arg al[64]; /* Arg List */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1100 int ac; /* Arg Count */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1101 int i;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1102
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1103 if (pop_up_p)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1104 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1105 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1106 XtSetArg(al[ac], XmNtitle, shell_title); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1107 XtSetArg(al[ac], XtNallowShellResize, True); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1108 XtSetArg(al[ac], XmNdeleteResponse, XmUNMAP); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1109 result = XmCreateDialogShell (parent, "dialog", al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1110 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1111 XtSetArg(al[ac], XmNautoUnmanage, FALSE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1112 /* XtSetArg(al[ac], XmNautoUnmanage, TRUE); ac++; */ /* ####is this ok? */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1113 XtSetArg(al[ac], XmNnavigationType, XmTAB_GROUP); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1114 form = XmCreateForm (result, shell_title, al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1115 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1116 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1117 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1118 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1119 XtSetArg(al[ac], XmNautoUnmanage, FALSE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1120 XtSetArg(al[ac], XmNnavigationType, XmTAB_GROUP); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1121 form = XmCreateForm (parent, shell_title, al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1122 result = form;
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
8884
b62d47fc7fc2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8784
diff changeset
1125 n_children = left_buttons + right_buttons + 1;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1126 ac = 0;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1127 XtSetArg(al[ac], XmNpacking, n_children == 3?
8884
b62d47fc7fc2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8784
diff changeset
1128 XmPACK_COLUMN: XmPACK_TIGHT); ac++;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1129 XtSetArg(al[ac], XmNorientation, n_children == 3?
8884
b62d47fc7fc2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8784
diff changeset
1130 XmVERTICAL: XmHORIZONTAL); ac++;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1131 XtSetArg(al[ac], XmNnumColumns, left_buttons + right_buttons + 1); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1132 XtSetArg(al[ac], XmNmarginWidth, 0); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1133 XtSetArg(al[ac], XmNmarginHeight, 0); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1134 XtSetArg(al[ac], XmNspacing, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1135 XtSetArg(al[ac], XmNadjustLast, False); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1136 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_CENTER); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1137 XtSetArg(al[ac], XmNisAligned, True); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1138 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1139 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1140 XtSetArg(al[ac], XmNbottomOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1141 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1142 XtSetArg(al[ac], XmNleftOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1143 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1144 XtSetArg(al[ac], XmNrightOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1145 row = XmCreateRowColumn (form, "row", al, ac);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1146
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1147 n_children = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1148 for (i = 0; i < left_buttons; i++)
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 char button_name [16];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1151 sprintf (button_name, "button%d", i + 1);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1152 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1153 if (i == 0)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1154 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1155 XtSetArg(al[ac], XmNhighlightThickness, 1); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1156 XtSetArg(al[ac], XmNshowAsDefault, TRUE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1157 }
8884
b62d47fc7fc2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8784
diff changeset
1158 XtSetArg(al[ac], XmNmarginWidth, 10); ac++;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1159 XtSetArg(al[ac], XmNnavigationType, XmTAB_GROUP); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1160 children [n_children] = XmCreatePushButton (row, button_name, al, ac);
53564
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1161 XtAddEventHandler (children [n_children],
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1162 KeyPressMask, False, dialog_key_cb, result);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1163
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1164 if (i == 0)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1165 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1166 button = children [n_children];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1167 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1168 XtSetArg(al[ac], XmNdefaultButton, button); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1169 XtSetValues (row, al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1170 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1171
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1172 n_children++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1173 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1174
14018
0a94cd2c51c4 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 12746
diff changeset
1175 /* invisible separator button */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1176 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1177 XtSetArg (al[ac], XmNmappedWhenManaged, FALSE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1178 children [n_children] = XmCreateLabel (row, "separator_button", al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1179 n_children++;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1180
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1181 for (i = 0; i < right_buttons; i++)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1182 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1183 char button_name [16];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1184 sprintf (button_name, "button%d", left_buttons + i + 1);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1185 ac = 0;
8884
b62d47fc7fc2 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 8784
diff changeset
1186 XtSetArg(al[ac], XmNmarginWidth, 10); ac++;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1187 XtSetArg(al[ac], XmNnavigationType, XmTAB_GROUP); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1188 children [n_children] = XmCreatePushButton (row, button_name, al, ac);
53564
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1189 XtAddEventHandler (children [n_children],
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1190 KeyPressMask, False, dialog_key_cb, result);
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1191
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1192 if (! button) button = children [n_children];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1193 n_children++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1194 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1195
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1196 XtManageChildren (children, n_children);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1197
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1198 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1199 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1200 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1201 XtSetArg(al[ac], XmNbottomOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1202 XtSetArg(al[ac], XmNbottomWidget, row); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1203 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1204 XtSetArg(al[ac], XmNleftOffset, 0); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1205 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1206 XtSetArg(al[ac], XmNrightOffset, 0); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1207 separator = XmCreateSeparator (form, "", al, ac);
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 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1210 XtSetArg(al[ac], XmNlabelType, XmPIXMAP); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1211 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1212 XtSetArg(al[ac], XmNtopOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1213 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_NONE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1214 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1215 XtSetArg(al[ac], XmNleftOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1216 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1217 icon = XmCreateLabel (form, icon_name, al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1218
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1219 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1220 XtSetArg(al[ac], XmNmappedWhenManaged, FALSE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1221 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_WIDGET); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1222 XtSetArg(al[ac], XmNtopOffset, 6); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1223 XtSetArg(al[ac], XmNtopWidget, icon); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1224 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1225 XtSetArg(al[ac], XmNbottomOffset, 6); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1226 XtSetArg(al[ac], XmNbottomWidget, separator); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1227 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_NONE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1228 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_NONE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1229 icon_separator = XmCreateLabel (form, "", al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1230
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1231 if (text_input_slot)
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 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1234 XtSetArg(al[ac], XmNcolumns, 50); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1235 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1236 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1237 XtSetArg(al[ac], XmNbottomOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1238 XtSetArg(al[ac], XmNbottomWidget, separator); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1239 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1240 XtSetArg(al[ac], XmNleftOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1241 XtSetArg(al[ac], XmNleftWidget, icon); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1242 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1243 XtSetArg(al[ac], XmNrightOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1244 value = XmCreateTextField (form, "value", al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1245 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1246 else if (radio_box)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1247 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1248 Widget radio_butt;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1249 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1250 XtSetArg(al[ac], XmNmarginWidth, 0); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1251 XtSetArg(al[ac], XmNmarginHeight, 0); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1252 XtSetArg(al[ac], XmNspacing, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1253 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_CENTER); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1254 XtSetArg(al[ac], XmNorientation, XmHORIZONTAL); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1255 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1256 XtSetArg(al[ac], XmNbottomOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1257 XtSetArg(al[ac], XmNbottomWidget, separator); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1258 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1259 XtSetArg(al[ac], XmNleftOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1260 XtSetArg(al[ac], XmNleftWidget, icon); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1261 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1262 XtSetArg(al[ac], XmNrightOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1263 value = XmCreateRadioBox (form, "radiobutton1", al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1264 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1265 i = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1266 radio_butt = XmCreateToggleButtonGadget (value, "radio1", al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1267 children [i++] = radio_butt;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1268 radio_butt = XmCreateToggleButtonGadget (value, "radio2", al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1269 children [i++] = radio_butt;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1270 radio_butt = XmCreateToggleButtonGadget (value, "radio3", al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1271 children [i++] = radio_butt;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1272 XtManageChildren (children, i);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1273 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1274 else if (list)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1275 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1276 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1277 XtSetArg(al[ac], XmNvisibleItemCount, 5); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1278 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_NONE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1279 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1280 XtSetArg(al[ac], XmNbottomOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1281 XtSetArg(al[ac], XmNbottomWidget, separator); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1282 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1283 XtSetArg(al[ac], XmNleftOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1284 XtSetArg(al[ac], XmNleftWidget, icon); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1285 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1286 XtSetArg(al[ac], XmNrightOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1287 value = XmCreateScrolledList (form, "list", al, ac);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1288
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1289 /* 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
1290 list activate the default button */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1291 XtAddCallback (value, XmNdefaultActionCallback, activate_button, button);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1292 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1293
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1294 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1295 XtSetArg(al[ac], XmNalignment, XmALIGNMENT_BEGINNING); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1296 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1297 XtSetArg(al[ac], XmNtopOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1298 XtSetArg(al[ac], XmNbottomAttachment, XmATTACH_WIDGET); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1299 XtSetArg(al[ac], XmNbottomOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1300 XtSetArg(al[ac], XmNbottomWidget,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1301 text_input_slot || radio_box || list ? value : separator); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1302 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_WIDGET); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1303 XtSetArg(al[ac], XmNleftOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1304 XtSetArg(al[ac], XmNleftWidget, icon); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1305 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1306 XtSetArg(al[ac], XmNrightOffset, 13); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1307 message = XmCreateLabel (form, "message", al, ac);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1308
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1309 if (list)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1310 XtManageChild (value);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1311
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1312 i = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1313 children [i] = row; i++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1314 children [i] = separator; i++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1315 if (text_input_slot || radio_box)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1316 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1317 children [i] = value; i++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1318 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1319 children [i] = message; i++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1320 children [i] = icon; i++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1321 children [i] = icon_separator; i++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1322 XtManageChildren (children, i);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1323
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1324 if (text_input_slot || list)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1325 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1326 XtInstallAccelerators (value, button);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1327 XtSetKeyboardFocus (result, value);
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 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1330 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1331 XtInstallAccelerators (form, button);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1332 XtSetKeyboardFocus (result, button);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1333 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1334
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1335 return result;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1336 }
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 static destroyed_instance*
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1339 find_matching_instance (instance)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1340 widget_instance* instance;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1341 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1342 destroyed_instance* cur;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1343 destroyed_instance* prev;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1344 char* type = instance->info->type;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1345 char* name = instance->info->name;
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 for (prev = NULL, cur = all_destroyed_instances;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1348 cur;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1349 prev = cur, cur = cur->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1350 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1351 if (!strcmp (cur->name, name)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1352 && !strcmp (cur->type, type)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1353 && cur->parent == instance->parent
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1354 && cur->pop_up_p == instance->pop_up_p)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1355 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1356 if (prev)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1357 prev->next = cur->next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1358 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1359 all_destroyed_instances = cur->next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1360 return cur;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1361 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1362 /* do some cleanup */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1363 else if (!cur->widget)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1364 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1365 if (prev)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1366 prev->next = cur->next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1367 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1368 all_destroyed_instances = cur->next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1369 free_destroyed_instance (cur);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1370 cur = prev ? prev : all_destroyed_instances;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1371 }
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 return NULL;
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1376 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1377 mark_dead_instance_destroyed (widget, closure, call_data)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1378 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1379 XtPointer closure;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1380 XtPointer call_data;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1381 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1382 destroyed_instance* instance = (destroyed_instance*)closure;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1383 instance->widget = NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1384 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1385
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1386 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1387 recenter_widget (widget)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1388 Widget widget;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1389 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1390 Widget parent = XtParent (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1391 Screen* screen = XtScreen (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1392 Dimension screen_width = WidthOfScreen (screen);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1393 Dimension screen_height = HeightOfScreen (screen);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1394 Dimension parent_width = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1395 Dimension parent_height = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1396 Dimension child_width = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1397 Dimension child_height = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1398 Position x;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1399 Position y;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1400
30571
aa1b8b4c369d Use NULL at the end of the
Gerd Moellmann <gerd@gnu.org>
parents: 29467
diff changeset
1401 XtVaGetValues (widget, XtNwidth, &child_width, XtNheight, &child_height, NULL);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1402 XtVaGetValues (parent, XtNwidth, &parent_width, XtNheight, &parent_height,
30571
aa1b8b4c369d Use NULL at the end of the
Gerd Moellmann <gerd@gnu.org>
parents: 29467
diff changeset
1403 NULL);
5626
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 x = (((Position)parent_width) - ((Position)child_width)) / 2;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1406 y = (((Position)parent_height) - ((Position)child_height)) / 2;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1407
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1408 XtTranslateCoords (parent, x, y, &x, &y);
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 if (x + child_width > screen_width)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1411 x = screen_width - child_width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1412 if (x < 0)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1413 x = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1414
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1415 if (y + child_height > screen_height)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1416 y = screen_height - child_height;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1417 if (y < 0)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1418 y = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1419
30571
aa1b8b4c369d Use NULL at the end of the
Gerd Moellmann <gerd@gnu.org>
parents: 29467
diff changeset
1420 XtVaSetValues (widget, XtNx, x, XtNy, y, NULL);
5626
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
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1424 recycle_instance (instance)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1425 destroyed_instance* instance;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1426 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1427 Widget widget = instance->widget;
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 /* widget is NULL if the parent was destroyed. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1430 if (widget)
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 Widget focus;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1433 Widget separator;
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 /* Remove the destroy callback as the instance is not in the list
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1436 anymore */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1437 XtRemoveCallback (instance->parent, XtNdestroyCallback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1438 mark_dead_instance_destroyed,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1439 (XtPointer)instance);
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 /* Give the focus to the initial item */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1442 focus = XtNameToWidget (widget, "*value");
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1443 if (!focus)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1444 focus = XtNameToWidget (widget, "*button1");
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1445 if (focus)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1446 XtSetKeyboardFocus (widget, focus);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1447
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1448 /* shrink the separator label back to their original size */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1449 separator = XtNameToWidget (widget, "*separator_button");
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1450 if (separator)
30571
aa1b8b4c369d Use NULL at the end of the
Gerd Moellmann <gerd@gnu.org>
parents: 29467
diff changeset
1451 XtVaSetValues (separator, XtNwidth, 5, XtNheight, 5, NULL);
5626
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 /* Center the dialog in its parent */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1454 recenter_widget (widget);
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 free_destroyed_instance (instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1457 return widget;
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1460 Widget
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1461 xm_create_dialog (instance)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1462 widget_instance* instance;
5626
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 char* name = instance->info->type;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1465 Widget parent = instance->parent;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1466 Widget widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1467 Boolean pop_up_p = instance->pop_up_p;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1468 char* shell_name = 0;
36437
d45267642a42 (xm_update_radiobox, update_one_menu_entry)
Gerd Moellmann <gerd@gnu.org>
parents: 34335
diff changeset
1469 char* icon_name = 0;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1470 Boolean text_input_slot = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1471 Boolean radio_box = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1472 Boolean list = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1473 int total_buttons;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1474 int left_buttons = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1475 int right_buttons = 1;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1476 destroyed_instance* dead_one;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1477
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1478 /* try to find a widget to recycle */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1479 dead_one = find_matching_instance (instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1480 if (dead_one)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1481 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1482 Widget recycled_widget = recycle_instance (dead_one);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1483 if (recycled_widget)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1484 return recycled_widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1485 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1486
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1487 switch (name [0]){
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1488 case 'E': case 'e':
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1489 icon_name = "dbox-error";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1490 shell_name = "Error";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1491 break;
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 case 'I': case 'i':
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1494 icon_name = "dbox-info";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1495 shell_name = "Information";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1496 break;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1497
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1498 case 'L': case 'l':
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1499 list = True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1500 icon_name = "dbox-question";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1501 shell_name = "Prompt";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1502 break;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1503
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1504 case 'P': case 'p':
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1505 text_input_slot = True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1506 icon_name = "dbox-question";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1507 shell_name = "Prompt";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1508 break;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1509
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1510 case 'Q': case 'q':
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1511 icon_name = "dbox-question";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1512 shell_name = "Question";
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1513 break;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1514 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1515
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1516 total_buttons = name [1] - '0';
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1517
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1518 if (name [3] == 'T' || name [3] == 't')
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1519 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1520 text_input_slot = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1521 radio_box = True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1522 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1523 else if (name [3])
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1524 right_buttons = name [4] - '0';
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1525
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1526 left_buttons = total_buttons - right_buttons;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1527
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1528 widget = make_dialog (name, parent, pop_up_p,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1529 shell_name, icon_name, text_input_slot, radio_box,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1530 list, left_buttons, right_buttons);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1531
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1532 XtAddCallback (widget, XmNpopdownCallback, xm_nosel_callback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1533 (XtPointer) instance);
53564
609ef1718642 Changes for lucid popup menus (keyboard traversal enabled) and dialogs
Jan Djärv <jan.h.d@swipnet.se>
parents: 52401
diff changeset
1534
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1535 return widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1536 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1537
15816
e1e9df8a862e (make_menubar): Turn off menu accelerator.
Richard M. Stallman <rms@gnu.org>
parents: 15665
diff changeset
1538 /* 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
1539 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
1540
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1541 static Widget
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1542 make_menubar (instance)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1543 widget_instance* instance;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1544 {
27345
15a661269a09 (make_menubar): Set XmNresizeHeight and XmNresizeWidth to False.
Gerd Moellmann <gerd@gnu.org>
parents: 27333
diff changeset
1545 Arg al[3];
15816
e1e9df8a862e (make_menubar): Turn off menu accelerator.
Richard M. Stallman <rms@gnu.org>
parents: 15665
diff changeset
1546 int ac;
e1e9df8a862e (make_menubar): Turn off menu accelerator.
Richard M. Stallman <rms@gnu.org>
parents: 15665
diff changeset
1547
e1e9df8a862e (make_menubar): Turn off menu accelerator.
Richard M. Stallman <rms@gnu.org>
parents: 15665
diff changeset
1548 ac = 0;
27345
15a661269a09 (make_menubar): Set XmNresizeHeight and XmNresizeWidth to False.
Gerd Moellmann <gerd@gnu.org>
parents: 27333
diff changeset
1549 XtSetArg(al[ac], XmNmenuAccelerator, 0); ++ac;
15a661269a09 (make_menubar): Set XmNresizeHeight and XmNresizeWidth to False.
Gerd Moellmann <gerd@gnu.org>
parents: 27333
diff changeset
1550 return XmCreateMenuBar (instance->parent, instance->info->name, al, ac);
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1553 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1554 remove_grabs (shell, closure, call_data)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1555 Widget shell;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1556 XtPointer closure;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1557 XtPointer call_data;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1558 {
11245
5fdf816307c6 (remove_grabs): Use type Widget for `menu'.
Richard M. Stallman <rms@gnu.org>
parents: 9835
diff changeset
1559 Widget menu = (Widget) closure;
5fdf816307c6 (remove_grabs): Use type Widget for `menu'.
Richard M. Stallman <rms@gnu.org>
parents: 9835
diff changeset
1560 XmRemoveFromPostFromList (menu, XtParent (XtParent (menu)));
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1561 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1562
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1563 static Widget
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1564 make_popup_menu (instance)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1565 widget_instance* instance;
5626
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 Widget parent = instance->parent;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1568 Window parent_window = parent->core.window;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1569 Widget result;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1570
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1571 /* 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
1572 parent->core.window = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1573 result = XmCreatePopupMenu (parent, instance->info->name, NULL, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1574 XtAddCallback (XtParent (result), XmNpopdownCallback, remove_grabs,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1575 (XtPointer)result);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1576 parent->core.window = parent_window;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1577 return result;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1578 }
25037
6293957eeb5c Add function prototypes.
Gerd Moellmann <gerd@gnu.org>
parents: 20471
diff changeset
1579
8784
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1580 static Widget
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1581 make_main (instance)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1582 widget_instance* instance;
8784
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1583 {
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1584 Widget parent = instance->parent;
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1585 Widget result;
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1586 Arg al[2];
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1587 int ac;
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1588
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1589 ac = 0;
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1590 XtSetArg (al[ac], XtNborderWidth, 0); ac++;
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1591 XtSetArg (al[ac], XmNspacing, 0); ac++;
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1592 result = XmCreateMainWindow (parent, instance->info->name, al, ac);
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1593 return result;
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1594 }
5626
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 /* Table of functions to create widgets */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1597
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1598 #ifdef ENERGIZE
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1599
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1600 /* interface with the XDesigner generated functions */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1601 typedef Widget (*widget_maker) (Widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1602 extern Widget create_project_p_sheet (Widget parent);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1603 extern Widget create_debugger_p_sheet (Widget parent);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1604 extern Widget create_breaklist_p_sheet (Widget parent);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1605 extern Widget create_le_browser_p_sheet (Widget parent);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1606 extern Widget create_class_browser_p_sheet (Widget parent);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1607 extern Widget create_call_browser_p_sheet (Widget parent);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1608 extern Widget create_build_dialog (Widget parent);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1609 extern Widget create_editmode_dialog (Widget parent);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1610 extern Widget create_search_dialog (Widget parent);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1611 extern Widget create_project_display_dialog (Widget parent);
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 Widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1614 make_one (widget_instance* instance, widget_maker fn)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1615 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1616 Widget result;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1617 Arg al [64];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1618 int ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1619
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1620 if (instance->pop_up_p)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1621 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1622 XtSetArg (al [ac], XmNallowShellResize, TRUE); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1623 result = XmCreateDialogShell (instance->parent, "dialog", NULL, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1624 XtAddCallback (result, XmNpopdownCallback, &xm_nosel_callback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1625 (XtPointer) instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1626 (*fn) (result);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1627 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1628 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1629 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1630 result = (*fn) (instance->parent);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1631 XtRealizeWidget (result);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1632 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1633 return result;
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1636 static Widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1637 make_project_p_sheet (widget_instance* instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1638 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1639 return make_one (instance, create_project_p_sheet);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1640 }
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 static Widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1643 make_debugger_p_sheet (widget_instance* instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1644 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1645 return make_one (instance, create_debugger_p_sheet);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1646 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1647
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1648 static Widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1649 make_breaklist_p_sheet (widget_instance* instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1650 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1651 return make_one (instance, create_breaklist_p_sheet);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1652 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1653
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1654 static Widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1655 make_le_browser_p_sheet (widget_instance* instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1656 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1657 return make_one (instance, create_le_browser_p_sheet);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1658 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1659
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1660 static Widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1661 make_class_browser_p_sheet (widget_instance* instance)
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 return make_one (instance, create_class_browser_p_sheet);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1664 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1665
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1666 static Widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1667 make_call_browser_p_sheet (widget_instance* instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1668 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1669 return make_one (instance, create_call_browser_p_sheet);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1670 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1671
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1672 static Widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1673 make_build_dialog (widget_instance* instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1674 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1675 return make_one (instance, create_build_dialog);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1676 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1677
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1678 static Widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1679 make_editmode_dialog (widget_instance* instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1680 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1681 return make_one (instance, create_editmode_dialog);
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1684 static Widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1685 make_search_dialog (widget_instance* instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1686 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1687 return make_one (instance, create_search_dialog);
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1690 static Widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1691 make_project_display_dialog (widget_instance* instance)
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 return make_one (instance, create_project_display_dialog);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1694 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1695
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1696 #endif /* ENERGIZE */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1697
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1698 widget_creation_entry
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1699 xm_creation_table [] =
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1700 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1701 {"menubar", make_menubar},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1702 {"popup", make_popup_menu},
8784
0166e4ab659a *** empty log message ***
Paul Reilly <pmr@pajato.com>
parents: 5626
diff changeset
1703 {"main", make_main},
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1704 #ifdef ENERGIZE
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1705 {"project_p_sheet", make_project_p_sheet},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1706 {"debugger_p_sheet", make_debugger_p_sheet},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1707 {"breaklist_psheet", make_breaklist_p_sheet},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1708 {"leb_psheet", make_le_browser_p_sheet},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1709 {"class_browser_psheet", make_class_browser_p_sheet},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1710 {"ctree_browser_psheet", make_call_browser_p_sheet},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1711 {"build", make_build_dialog},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1712 {"editmode", make_editmode_dialog},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1713 {"search", make_search_dialog},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1714 {"project_display", make_project_display_dialog},
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1715 #endif /* ENERGIZE */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1716 {NULL, NULL}
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1717 };
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 /* Destruction of instances */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1720 void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1721 xm_destroy_instance (instance)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1722 widget_instance* instance;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1723 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1724 Widget widget = instance->widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1725 /* recycle the dialog boxes */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1726 /* 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
1727 get reasonable layout after we modify its contents. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1728 if (0
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1729 && XtClass (widget) == xmDialogShellWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1730 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1731 destroyed_instance* dead_instance =
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1732 make_destroyed_instance (instance->info->name,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1733 instance->info->type,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1734 instance->widget,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1735 instance->parent,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1736 instance->pop_up_p);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1737 dead_instance->next = all_destroyed_instances;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1738 all_destroyed_instances = dead_instance;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1739 XtUnmanageChild (first_child (instance->widget));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1740 XFlush (XtDisplay (instance->widget));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1741 XtAddCallback (instance->parent, XtNdestroyCallback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1742 mark_dead_instance_destroyed, (XtPointer)dead_instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1743 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1744 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1745 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1746 /* This might not be necessary now that the nosel is attached to
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1747 popdown instead of destroy, but it can't hurt. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1748 XtRemoveCallback (instance->widget, XtNdestroyCallback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1749 xm_nosel_callback, (XtPointer)instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1750 XtDestroyWidget (instance->widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1751 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1752 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1753
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1754 /* popup utility */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1755 void
12746
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1756 xm_popup_menu (widget, event)
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1757 Widget widget;
12746
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1758 XEvent *event;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1759 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1760 XButtonPressedEvent dummy;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1761
12746
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1762 if (event == 0)
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1763 {
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1764 dummy.type = ButtonPress;
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1765 dummy.serial = 0;
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1766 dummy.send_event = 0;
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1767 dummy.display = XtDisplay (widget);
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1768 dummy.window = XtWindow (XtParent (widget));
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1769 dummy.time = 0;
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1770 dummy.button = 0;
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1771 XQueryPointer (dummy.display, dummy.window, &dummy.root,
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1772 &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
1773 &dummy.x, &dummy.y, &dummy.state);
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1774 event = (XEvent *) &dummy;
23cd08c6dd2a (xm_popup_menu): New arg `event'.
Richard M. Stallman <rms@gnu.org>
parents: 11862
diff changeset
1775 }
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1776
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1777 if (event->type == ButtonPress || event->type == ButtonRelease)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1778 {
36766
93e2f21c32bd (xm_popup_menu): Don't set XmNmenuPost unless
Gerd Moellmann <gerd@gnu.org>
parents: 36440
diff changeset
1779 /* Setting the menuPost resource only required by Motif 1.1 and
93e2f21c32bd (xm_popup_menu): Don't set XmNmenuPost unless
Gerd Moellmann <gerd@gnu.org>
parents: 36440
diff changeset
1780 LessTif 0.84 and earlier. With later versions of LessTif,
93e2f21c32bd (xm_popup_menu): Don't set XmNmenuPost unless
Gerd Moellmann <gerd@gnu.org>
parents: 36440
diff changeset
1781 setting menuPost is unnecessary and may cause problems, so
93e2f21c32bd (xm_popup_menu): Don't set XmNmenuPost unless
Gerd Moellmann <gerd@gnu.org>
parents: 36440
diff changeset
1782 don't do it. */
93e2f21c32bd (xm_popup_menu): Don't set XmNmenuPost unless
Gerd Moellmann <gerd@gnu.org>
parents: 36440
diff changeset
1783 #if XmVersion < 1002 || (defined LESSTIF_VERSION && LESSTIF_VERSION < 84)
93e2f21c32bd (xm_popup_menu): Don't set XmNmenuPost unless
Gerd Moellmann <gerd@gnu.org>
parents: 36440
diff changeset
1784 {
93e2f21c32bd (xm_popup_menu): Don't set XmNmenuPost unless
Gerd Moellmann <gerd@gnu.org>
parents: 36440
diff changeset
1785 /* This is so totally ridiculous: there's NO WAY to tell Motif
93e2f21c32bd (xm_popup_menu): Don't set XmNmenuPost unless
Gerd Moellmann <gerd@gnu.org>
parents: 36440
diff changeset
1786 that *any* button can select a menu item. Only one button
93e2f21c32bd (xm_popup_menu): Don't set XmNmenuPost unless
Gerd Moellmann <gerd@gnu.org>
parents: 36440
diff changeset
1787 can have that honor. */
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1788
36766
93e2f21c32bd (xm_popup_menu): Don't set XmNmenuPost unless
Gerd Moellmann <gerd@gnu.org>
parents: 36440
diff changeset
1789 char *trans = 0;
93e2f21c32bd (xm_popup_menu): Don't set XmNmenuPost unless
Gerd Moellmann <gerd@gnu.org>
parents: 36440
diff changeset
1790 if (event->xbutton.state & Button5Mask) trans = "<Btn5Down>";
93e2f21c32bd (xm_popup_menu): Don't set XmNmenuPost unless
Gerd Moellmann <gerd@gnu.org>
parents: 36440
diff changeset
1791 else if (event->xbutton.state & Button4Mask) trans = "<Btn4Down>";
93e2f21c32bd (xm_popup_menu): Don't set XmNmenuPost unless
Gerd Moellmann <gerd@gnu.org>
parents: 36440
diff changeset
1792 else if (event->xbutton.state & Button3Mask) trans = "<Btn3Down>";
93e2f21c32bd (xm_popup_menu): Don't set XmNmenuPost unless
Gerd Moellmann <gerd@gnu.org>
parents: 36440
diff changeset
1793 else if (event->xbutton.state & Button2Mask) trans = "<Btn2Down>";
93e2f21c32bd (xm_popup_menu): Don't set XmNmenuPost unless
Gerd Moellmann <gerd@gnu.org>
parents: 36440
diff changeset
1794 else if (event->xbutton.state & Button1Mask) trans = "<Btn1Down>";
93e2f21c32bd (xm_popup_menu): Don't set XmNmenuPost unless
Gerd Moellmann <gerd@gnu.org>
parents: 36440
diff changeset
1795 if (trans) XtVaSetValues (widget, XmNmenuPost, trans, NULL);
93e2f21c32bd (xm_popup_menu): Don't set XmNmenuPost unless
Gerd Moellmann <gerd@gnu.org>
parents: 36440
diff changeset
1796 }
93e2f21c32bd (xm_popup_menu): Don't set XmNmenuPost unless
Gerd Moellmann <gerd@gnu.org>
parents: 36440
diff changeset
1797 #endif
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1798
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1799 XmMenuPosition (widget, (XButtonPressedEvent *) event);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1800 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1801
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1802 XtManageChild (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1803 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1804
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1805 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1806 set_min_dialog_size (w)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1807 Widget w;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1808 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1809 short width;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1810 short height;
30571
aa1b8b4c369d Use NULL at the end of the
Gerd Moellmann <gerd@gnu.org>
parents: 29467
diff changeset
1811 XtVaGetValues (w, XmNwidth, &width, XmNheight, &height, NULL);
aa1b8b4c369d Use NULL at the end of the
Gerd Moellmann <gerd@gnu.org>
parents: 29467
diff changeset
1812 XtVaSetValues (w, XmNminWidth, width, XmNminHeight, height, NULL);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1813 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1814
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1815 void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1816 xm_pop_instance (instance, up)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1817 widget_instance* instance;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1818 Boolean up;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1819 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1820 Widget widget = instance->widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1821
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1822 if (XtClass (widget) == xmDialogShellWidgetClass)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1823 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1824 Widget widget_to_manage = first_child (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1825 if (up)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1826 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1827 XtManageChild (widget_to_manage);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1828 set_min_dialog_size (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1829 XtSetKeyboardFocus (instance->parent, widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1830 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1831 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1832 XtUnmanageChild (widget_to_manage);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1833 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1834 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1835 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1836 if (up)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1837 XtManageChild (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1838 else
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1839 XtUnmanageChild (widget);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1840 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1841 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1842
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1843
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1844 /* motif callback */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1845
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1846 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1847 do_call (widget, closure, type)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1848 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1849 XtPointer closure;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1850 enum do_call_type type;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1851 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1852 Arg al [256];
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1853 int ac;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1854 XtPointer user_data;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1855 widget_instance* instance = (widget_instance*)closure;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1856 Widget instance_widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1857 LWLIB_ID id;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1858
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1859 if (!instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1860 return;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1861 if (widget->core.being_destroyed)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1862 return;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1863
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1864 instance_widget = instance->widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1865 if (!instance_widget)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1866 return;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1867
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1868 id = instance->info->id;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1869 ac = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1870 user_data = NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1871 XtSetArg (al [ac], XmNuserData, &user_data); ac++;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1872 XtGetValues (widget, al, ac);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1873
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1874 switch (type)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1875 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1876 case pre_activate:
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1877 if (instance->info->pre_activate_cb)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1878 instance->info->pre_activate_cb (widget, id, user_data);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1879 break;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1880
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1881 case selection:
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1882 if (instance->info->selection_cb)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1883 instance->info->selection_cb (widget, id, user_data);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1884 break;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1885
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1886 case no_selection:
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1887 if (instance->info->selection_cb)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1888 instance->info->selection_cb (widget, id, (XtPointer) -1);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1889 break;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1890
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1891 case post_activate:
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1892 if (instance->info->post_activate_cb)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1893 instance->info->post_activate_cb (widget, id, user_data);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1894 break;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1895
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1896 default:
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1897 abort ();
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1898 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1899 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1900
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1901 /* Like lw_internal_update_other_instances except that it does not do
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1902 anything if its shell parent is not managed. This is to protect
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1903 lw_internal_update_other_instances to dereference freed memory
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1904 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
1905 list */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1906 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1907 xm_internal_update_other_instances (widget, closure, call_data)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1908 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1909 XtPointer closure;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1910 XtPointer call_data;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1911 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1912 Widget parent;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1913 for (parent = widget; parent; parent = XtParent (parent))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1914 if (XtIsShell (parent))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1915 break;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1916 else if (!XtIsManaged (parent))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1917 return;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1918 lw_internal_update_other_instances (widget, closure, call_data);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1919 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1920
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1921 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1922 xm_generic_callback (widget, closure, call_data)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1923 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1924 XtPointer closure;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1925 XtPointer call_data;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1926 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1927 lw_internal_update_other_instances (widget, closure, call_data);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1928 do_call (widget, closure, selection);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1929 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1930
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1931 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1932 xm_nosel_callback (widget, closure, call_data)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1933 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1934 XtPointer closure;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1935 XtPointer call_data;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1936 {
36780
85a9fd1b9e41 (make_menu_in_widget): Add an XmNpopdownCallback
Gerd Moellmann <gerd@gnu.org>
parents: 36768
diff changeset
1937 /* This callback is only called when a dialog box is dismissed with
85a9fd1b9e41 (make_menu_in_widget): Add an XmNpopdownCallback
Gerd Moellmann <gerd@gnu.org>
parents: 36768
diff changeset
1938 the wm's destroy button (WM_DELETE_WINDOW.) We want the dialog
85a9fd1b9e41 (make_menu_in_widget): Add an XmNpopdownCallback
Gerd Moellmann <gerd@gnu.org>
parents: 36768
diff changeset
1939 box to be destroyed in that case, not just unmapped, so that it
85a9fd1b9e41 (make_menu_in_widget): Add an XmNpopdownCallback
Gerd Moellmann <gerd@gnu.org>
parents: 36768
diff changeset
1940 releases its keyboard grabs. But there are problems with running
85a9fd1b9e41 (make_menu_in_widget): Add an XmNpopdownCallback
Gerd Moellmann <gerd@gnu.org>
parents: 36768
diff changeset
1941 our callbacks while the widget is in the process of being
85a9fd1b9e41 (make_menu_in_widget): Add an XmNpopdownCallback
Gerd Moellmann <gerd@gnu.org>
parents: 36768
diff changeset
1942 destroyed, so we set XmNdeleteResponse to XmUNMAP instead of
85a9fd1b9e41 (make_menu_in_widget): Add an XmNpopdownCallback
Gerd Moellmann <gerd@gnu.org>
parents: 36768
diff changeset
1943 XmDESTROY and then destroy it ourself after having run the
85a9fd1b9e41 (make_menu_in_widget): Add an XmNpopdownCallback
Gerd Moellmann <gerd@gnu.org>
parents: 36768
diff changeset
1944 callback. */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1945 do_call (widget, closure, no_selection);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1946 XtDestroyWidget (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1947 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1948
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1949 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1950 xm_pull_down_callback (widget, closure, call_data)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1951 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1952 XtPointer closure;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1953 XtPointer call_data;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1954 {
27422
5c5bb4b1ff45 (make_menu_in_widget): Don't add XmNpopdownCallback,
Gerd Moellmann <gerd@gnu.org>
parents: 27345
diff changeset
1955 Widget parent = XtParent (widget);
5c5bb4b1ff45 (make_menu_in_widget): Don't add XmNpopdownCallback,
Gerd Moellmann <gerd@gnu.org>
parents: 27345
diff changeset
1956
5c5bb4b1ff45 (make_menu_in_widget): Don't add XmNpopdownCallback,
Gerd Moellmann <gerd@gnu.org>
parents: 27345
diff changeset
1957 if (XmIsRowColumn (parent))
5c5bb4b1ff45 (make_menu_in_widget): Don't add XmNpopdownCallback,
Gerd Moellmann <gerd@gnu.org>
parents: 27345
diff changeset
1958 {
5c5bb4b1ff45 (make_menu_in_widget): Don't add XmNpopdownCallback,
Gerd Moellmann <gerd@gnu.org>
parents: 27345
diff changeset
1959 unsigned char type = 0xff;
5c5bb4b1ff45 (make_menu_in_widget): Don't add XmNpopdownCallback,
Gerd Moellmann <gerd@gnu.org>
parents: 27345
diff changeset
1960 XtVaGetValues (parent, XmNrowColumnType, &type, NULL);
5c5bb4b1ff45 (make_menu_in_widget): Don't add XmNpopdownCallback,
Gerd Moellmann <gerd@gnu.org>
parents: 27345
diff changeset
1961 if (type == XmMENU_BAR)
5c5bb4b1ff45 (make_menu_in_widget): Don't add XmNpopdownCallback,
Gerd Moellmann <gerd@gnu.org>
parents: 27345
diff changeset
1962 do_call (widget, closure, pre_activate);
5c5bb4b1ff45 (make_menu_in_widget): Don't add XmNpopdownCallback,
Gerd Moellmann <gerd@gnu.org>
parents: 27345
diff changeset
1963 }
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1964 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1965
27422
5c5bb4b1ff45 (make_menu_in_widget): Don't add XmNpopdownCallback,
Gerd Moellmann <gerd@gnu.org>
parents: 27345
diff changeset
1966
5c5bb4b1ff45 (make_menu_in_widget): Don't add XmNpopdownCallback,
Gerd Moellmann <gerd@gnu.org>
parents: 27345
diff changeset
1967 /* XmNpopdownCallback for MenuShell widgets. WIDGET is the MenuShell,
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 49460
diff changeset
1968 CLOSURE is a pointer to the widget_instance of the shell,
27422
5c5bb4b1ff45 (make_menu_in_widget): Don't add XmNpopdownCallback,
Gerd Moellmann <gerd@gnu.org>
parents: 27345
diff changeset
1969
36780
85a9fd1b9e41 (make_menu_in_widget): Add an XmNpopdownCallback
Gerd Moellmann <gerd@gnu.org>
parents: 36768
diff changeset
1970 Note that this callback is called for each cascade button in a
85a9fd1b9e41 (make_menu_in_widget): Add an XmNpopdownCallback
Gerd Moellmann <gerd@gnu.org>
parents: 36768
diff changeset
1971 menu, whether or not its submenu is visible. */
27422
5c5bb4b1ff45 (make_menu_in_widget): Don't add XmNpopdownCallback,
Gerd Moellmann <gerd@gnu.org>
parents: 27345
diff changeset
1972
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1973 static void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1974 xm_pop_down_callback (widget, closure, call_data)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1975 Widget widget;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1976 XtPointer closure;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1977 XtPointer call_data;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1978 {
9835
d2250d1b0f48 (make_menu_in_widget): Differentiate a separator entry ("--") from a
Paul Reilly <pmr@pajato.com>
parents: 9825
diff changeset
1979 widget_instance *instance = (widget_instance *) closure;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1980
36780
85a9fd1b9e41 (make_menu_in_widget): Add an XmNpopdownCallback
Gerd Moellmann <gerd@gnu.org>
parents: 36768
diff changeset
1981 if ((!instance->pop_up_p && XtParent (widget) == instance->widget)
85a9fd1b9e41 (make_menu_in_widget): Add an XmNpopdownCallback
Gerd Moellmann <gerd@gnu.org>
parents: 36768
diff changeset
1982 || XtParent (widget) == instance->parent)
27422
5c5bb4b1ff45 (make_menu_in_widget): Don't add XmNpopdownCallback,
Gerd Moellmann <gerd@gnu.org>
parents: 27345
diff changeset
1983 do_call (widget, closure, post_activate);
5c5bb4b1ff45 (make_menu_in_widget): Don't add XmNpopdownCallback,
Gerd Moellmann <gerd@gnu.org>
parents: 27345
diff changeset
1984 }
5c5bb4b1ff45 (make_menu_in_widget): Don't add XmNpopdownCallback,
Gerd Moellmann <gerd@gnu.org>
parents: 27345
diff changeset
1985
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1986
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1987 /* set the keyboard focus */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1988 void
11299
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1989 xm_set_keyboard_focus (parent, w)
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1990 Widget parent;
f82f4e93e523 (*): remove function prototypes.
Paul Reilly <pmr@pajato.com>
parents: 11245
diff changeset
1991 Widget w;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1992 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1993 XmProcessTraversal (w, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1994 XtSetKeyboardFocus (parent, w);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1995 }
9224
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1996
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1997 /* 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
1998 void
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
1999 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
2000 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
2001 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
2002 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
2003 {
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
2004 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
2005 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
2006 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
2007 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
2008 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
2009 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
2010 }
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
2011
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
2012 /* 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
2013 void
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
2014 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
2015 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
2016 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
2017 {
27998
e61be6a5e321 (xm_manage_resizing): Rewritten.
Gerd Moellmann <gerd@gnu.org>
parents: 27422
diff changeset
2018 XtVaSetValues (w, XtNallowShellResize, flag, NULL);
9224
b4563001d783 (make_menu_in_widget): Add support for displaying a title in pop up
Paul Reilly <pmr@pajato.com>
parents: 8884
diff changeset
2019 }
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
2020
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
2021 /* arch-tag: 73976f64-73b2-4600-aa13-d9ede20ee965
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
2022 (do not change this comment) */