annotate lwlib/lwlib-Xm.c @ 112438:11f1b4757236

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