annotate lwlib/lwlib.c @ 58195:c12b583f54b9

Fixed these problems: ** Clicking on partially visible lines fails From: David Kastrup <dak@gnu.org> Date: 27 Apr 2004 16:42:58 +0200 I had gnus display a mouse-highlighted line (a URL from browse-url) partially at the bottom of its window. If I click with middle mouse key on it, the window gets recentered while I hold the mouse key pressed. If I release it, the window returns into its old position (cursor in top row) and nothing happens, presumably because the click was not registered on the line itself, but on the magically recentered version. That is a nuisance. Recentering of even partially visible click targets should only happen if window-point moves there, but not at the time of the click. From the moment I hold down a key until it gets released, the displayed window portion should not change, with the sole exception of scrolling when dragging at the edge of the screen. (progn (setq line-spacing 4) (dotimes (i (window-height)) (insert "\n" (int-to-string i))) (forward-line -2) (recenter -1)) ** Can't drag modeline when mouse-autoselect-window is set From: Klaus Zeitler <kzeitler@lucent.com> Date: Mon, 11 Oct 2004 11:14:49 +0200 1. start emacs -q --no-site-file 2. set variable mouse-autoselect-window to t 3. split-window-vertically now I can drag the modeline only upwards but not downwards
author Kim F. Storm <storm@cua.dk>
date Sat, 13 Nov 2004 01:40:36 +0000
parents 695cf19ef79e
children 23a17af379b1 375f2633d815
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 /* A general interface to the widgets of different toolkits.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2 Copyright (C) 1992, 1993 Lucid, Inc.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4 This file is part of the Lucid Widget Library.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
6 The Lucid Widget Library is free software; you can redistribute it and/or
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 modify it under the terms of the GNU General Public License as published by
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 the Free Software Foundation; either version 2, or (at your option)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9 any later version.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 The Lucid Widget Library is distributed in the hope that it will be useful,
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 GNU General Public License for more details.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 along with GNU Emacs; see the file COPYING. If not, write to
14186
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 14163
diff changeset
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
ee40177f6c68 Update FSF's address in the preamble.
Erik Naggum <erik@naggum.no>
parents: 14163
diff changeset
19 Boston, MA 02111-1307, USA. */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 #ifdef NeXT
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 #undef __STRICT_BSD__ /* ick */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23 #endif
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24
26087
e0d966fb548f Add support for large files, plus some locale improvements.
Paul Eggert <eggert@twinsun.com>
parents: 25718
diff changeset
25 #ifdef HAVE_CONFIG_H
e0d966fb548f Add support for large files, plus some locale improvements.
Paul Eggert <eggert@twinsun.com>
parents: 25718
diff changeset
26 #include <config.h>
e0d966fb548f Add support for large files, plus some locale improvements.
Paul Eggert <eggert@twinsun.com>
parents: 25718
diff changeset
27 #endif
e0d966fb548f Add support for large files, plus some locale improvements.
Paul Eggert <eggert@twinsun.com>
parents: 25718
diff changeset
28
41765
27b70bc263d6 Include ../src/lisp.h. Don't declare xmalloc.
Richard M. Stallman <rms@gnu.org>
parents: 32040
diff changeset
29 #include "../src/lisp.h"
27b70bc263d6 Include ../src/lisp.h. Don't declare xmalloc.
Richard M. Stallman <rms@gnu.org>
parents: 32040
diff changeset
30
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31 #include <sys/types.h>
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 #include <stdio.h>
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
33 #include <ctype.h>
5627
7ff2d6076466 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5626
diff changeset
34 #include "lwlib-int.h"
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 #include "lwlib-utils.h"
5706
75570af32e92 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5627
diff changeset
36 #include <X11/StringDefs.h>
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38 #if defined (USE_LUCID)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 #include "lwlib-Xlw.h"
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 #endif
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 #if defined (USE_MOTIF)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 #include "lwlib-Xm.h"
6306
19fc40b33f52 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6305
diff changeset
43 #else /* not USE_MOTIF */
19fc40b33f52 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6305
diff changeset
44 #if defined (USE_LUCID)
19fc40b33f52 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6305
diff changeset
45 #define USE_XAW
19fc40b33f52 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6305
diff changeset
46 #endif /* not USE_MOTIF && USE_LUCID */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 #endif
6305
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
48 #if defined (USE_XAW)
21391
fb4644a9f761 Always declare xmalloc.
Andreas Schwab <schwab@suse.de>
parents: 15854
diff changeset
49 #include <X11/Xaw/Paned.h>
6305
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
50 #include "lwlib-Xaw.h"
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
51 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
53 #if !defined (USE_LUCID) && !defined (USE_MOTIF)
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
54 #error At least one of USE_LUCID or USE_MOTIF must be defined.
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 #endif
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56
8785
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
57 #ifndef max
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
58 #define max(x, y) ((x) > (y) ? (x) : (y))
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
59 #endif
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
60
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 /* List of all widgets managed by the library. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 static widget_info*
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 all_widget_info = NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64
12187
18d061c3d0dd (lwlib_toolkit_type): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11861
diff changeset
65 #ifdef USE_MOTIF
18d061c3d0dd (lwlib_toolkit_type): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11861
diff changeset
66 char *lwlib_toolkit_type = "motif";
18d061c3d0dd (lwlib_toolkit_type): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11861
diff changeset
67 #else
18d061c3d0dd (lwlib_toolkit_type): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11861
diff changeset
68 char *lwlib_toolkit_type = "lucid";
18d061c3d0dd (lwlib_toolkit_type): New variable.
Karl Heuer <kwzh@gnu.org>
parents: 11861
diff changeset
69 #endif
27997
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
70
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
71 static widget_value *merge_widget_value P_ ((widget_value *,
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
72 widget_value *,
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
73 int, int *));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
74 static void instantiate_widget_instance P_ ((widget_instance *));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
75 static int my_strcasecmp P_ ((char *, char *));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
76 static void safe_free_str P_ ((char *));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
77 static void free_widget_value_tree P_ ((widget_value *));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
78 static widget_value *copy_widget_value_tree P_ ((widget_value *,
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
79 change_type));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
80 static widget_info *allocate_widget_info P_ ((char *, char *, LWLIB_ID,
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
81 widget_value *,
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
82 lw_callback, lw_callback,
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
83 lw_callback, lw_callback));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
84 static void free_widget_info P_ ((widget_info *));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
85 static void mark_widget_destroyed P_ ((Widget, XtPointer, XtPointer));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
86 static widget_instance *allocate_widget_instance P_ ((widget_info *,
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
87 Widget, Boolean));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
88 static void free_widget_instance P_ ((widget_instance *));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
89 static widget_info *get_widget_info P_ ((LWLIB_ID, Boolean));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
90 static widget_instance *get_widget_instance P_ ((Widget, Boolean));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
91 static widget_instance *find_instance P_ ((LWLIB_ID, Widget, Boolean));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
92 static Boolean safe_strcmp P_ ((char *, char *));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
93 static Widget name_to_widget P_ ((widget_instance *, char *));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
94 static void set_one_value P_ ((widget_instance *, widget_value *, Boolean));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
95 static void update_one_widget_instance P_ ((widget_instance *, Boolean));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
96 static void update_all_widget_values P_ ((widget_info *, Boolean));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
97 static void initialize_widget_instance P_ ((widget_instance *));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
98 static widget_creation_function find_in_table P_ ((char *, widget_creation_entry *));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
99 static Boolean dialog_spec_p P_ ((char *));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
100 static void destroy_one_instance P_ ((widget_instance *));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
101 static void lw_pop_all_widgets P_ ((LWLIB_ID, Boolean));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
102 static Boolean get_one_value P_ ((widget_instance *, widget_value *));
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
103 static void show_one_widget_busy P_ ((Widget, Boolean));
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
104
21391
fb4644a9f761 Always declare xmalloc.
Andreas Schwab <schwab@suse.de>
parents: 15854
diff changeset
105 void
7515
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
106 lwlib_memset (address, value, length)
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
107 char *address;
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
108 int value;
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
109 size_t length;
7515
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
110 {
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
111 int i;
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
112
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
113 for (i = 0; i < length; i++)
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
114 address[i] = value;
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
115 }
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
116
21391
fb4644a9f761 Always declare xmalloc.
Andreas Schwab <schwab@suse.de>
parents: 15854
diff changeset
117 void
7515
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
118 lwlib_bcopy (from, to, length)
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
119 char *from;
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
120 char *to;
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
121 int length;
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
122 {
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
123 int i;
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
124
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
125 for (i = 0; i < length; i++)
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
126 to[i] = from[i];
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
127 }
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128 /* utility functions for widget_instance and widget_info */
7423
4a5d0d109242 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 6333
diff changeset
129 char *
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
130 safe_strdup (s)
29468
2d728b3d9f5f (P_): Use PROTOTYPES.
Dave Love <fx@gnu.org>
parents: 27997
diff changeset
131 const char *s;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
133 char *result;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
134 if (! s) return 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135 result = (char *) malloc (strlen (s) + 1);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136 if (! result)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137 return 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
138 strcpy (result, s);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139 return result;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
142 /* Like strcmp but ignore differences in case. */
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
143
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
144 static int
5853
4934e5381fb2 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 5724
diff changeset
145 my_strcasecmp (s1, s2)
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
146 char *s1, *s2;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
147 {
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
148 while (1)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
149 {
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
150 int c1 = *s1++;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
151 int c2 = *s2++;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
152 if (isupper (c1))
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
153 c1 = tolower (c1);
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
154 if (isupper (c2))
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
155 c2 = tolower (c2);
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
156 if (c1 != c2)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
157 return (c1 > c2 ? 1 : -1);
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
158 if (c1 == 0)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
159 return 0;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
160 }
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
161 }
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
162
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 static void
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
164 safe_free_str (s)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
165 char *s;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167 if (s) free (s);
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170 static widget_value *widget_value_free_list = 0;
5993
5feb28cb62c8 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5853
diff changeset
171 static int malloc_cpt = 0;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173 widget_value *
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
174 malloc_widget_value ()
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 widget_value *wv;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177 if (widget_value_free_list)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
178 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179 wv = widget_value_free_list;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180 widget_value_free_list = wv->free_list;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
181 wv->free_list = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
183 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
184 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
185 wv = (widget_value *) malloc (sizeof (widget_value));
5993
5feb28cb62c8 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5853
diff changeset
186 malloc_cpt++;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 }
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
188 lwlib_memset ((void*) wv, 0, sizeof (widget_value));
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 return wv;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191
14163
2422ceecd9d2 (instantiate_widget_instance): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 12744
diff changeset
192 /* this is analogous to free(). It frees only what was allocated
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
193 by malloc_widget_value(), and no substructures.
5626
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 void
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196 free_widget_value (wv)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197 widget_value *wv;
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 if (wv->free_list)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 abort ();
5993
5feb28cb62c8 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5853
diff changeset
201
5999
b135bb2b4bfe *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5993
diff changeset
202 if (malloc_cpt > 25)
5993
5feb28cb62c8 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5853
diff changeset
203 {
5feb28cb62c8 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5853
diff changeset
204 /* When the number of already allocated cells is too big,
5feb28cb62c8 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5853
diff changeset
205 We free it. */
5feb28cb62c8 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5853
diff changeset
206 free (wv);
5999
b135bb2b4bfe *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5993
diff changeset
207 malloc_cpt--;
5993
5feb28cb62c8 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5853
diff changeset
208 }
5feb28cb62c8 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5853
diff changeset
209 else
5feb28cb62c8 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5853
diff changeset
210 {
5feb28cb62c8 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5853
diff changeset
211 wv->free_list = widget_value_free_list;
5feb28cb62c8 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5853
diff changeset
212 widget_value_free_list = wv;
5feb28cb62c8 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5853
diff changeset
213 }
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
215
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
216 static void
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
217 free_widget_value_tree (wv)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
218 widget_value *wv;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220 if (!wv)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 return;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
223 if (wv->name) free (wv->name);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224 if (wv->value) free (wv->value);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
225 if (wv->key) free (wv->key);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
226
41765
27b70bc263d6 Include ../src/lisp.h. Don't declare xmalloc.
Richard M. Stallman <rms@gnu.org>
parents: 32040
diff changeset
227 wv->name = wv->value = wv->key = (char *) 0xDEADBEEF;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
229 if (wv->toolkit_data && wv->free_toolkit_data)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
230 {
14611
69fca906f068 (free_widget_value_tree, merge_widget_value):
Karl Heuer <kwzh@gnu.org>
parents: 14594
diff changeset
231 XtFree (wv->toolkit_data);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232 wv->toolkit_data = (void *) 0xDEADBEEF;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
233 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235 if (wv->contents && (wv->contents != (widget_value*)1))
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 free_widget_value_tree (wv->contents);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
238 wv->contents = (widget_value *) 0xDEADBEEF;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240 if (wv->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242 free_widget_value_tree (wv->next);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243 wv->next = (widget_value *) 0xDEADBEEF;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245 free_widget_value (wv);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248 static widget_value *
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
249 copy_widget_value_tree (val, change)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
250 widget_value* val;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
251 change_type change;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253 widget_value* copy;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
254
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255 if (!val)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256 return NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257 if (val == (widget_value *) 1)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
258 return val;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260 copy = malloc_widget_value ();
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261 copy->name = safe_strdup (val->name);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
262 copy->value = safe_strdup (val->value);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263 copy->key = safe_strdup (val->key);
41765
27b70bc263d6 Include ../src/lisp.h. Don't declare xmalloc.
Richard M. Stallman <rms@gnu.org>
parents: 32040
diff changeset
264 copy->help = val->help;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265 copy->enabled = val->enabled;
25036
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
266 copy->button_type = val->button_type;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267 copy->selected = val->selected;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
268 copy->edited = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269 copy->change = change;
14879
70f79ccb9875 (merge_widget_value): Set the this_one_change field.
Richard M. Stallman <rms@gnu.org>
parents: 14663
diff changeset
270 copy->this_one_change = change;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271 copy->contents = copy_widget_value_tree (val->contents, change);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272 copy->call_data = val->call_data;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273 copy->next = copy_widget_value_tree (val->next, change);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274 copy->toolkit_data = NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275 copy->free_toolkit_data = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276 return copy;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
278
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279 static widget_info *
27335
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
280 allocate_widget_info (type, name, id, val, pre_activate_cb,
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
281 selection_cb, post_activate_cb, highlight_cb)
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
282 char* type;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
283 char* name;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
284 LWLIB_ID id;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
285 widget_value* val;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
286 lw_callback pre_activate_cb;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
287 lw_callback selection_cb;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
288 lw_callback post_activate_cb;
27335
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
289 lw_callback highlight_cb;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 widget_info* info = (widget_info*)malloc (sizeof (widget_info));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
292 info->type = safe_strdup (type);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 info->name = safe_strdup (name);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294 info->id = id;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 info->val = copy_widget_value_tree (val, STRUCTURAL_CHANGE);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296 info->busy = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297 info->pre_activate_cb = pre_activate_cb;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 info->selection_cb = selection_cb;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
299 info->post_activate_cb = post_activate_cb;
27335
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
300 info->highlight_cb = highlight_cb;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301 info->instances = NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
302
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
303 info->next = all_widget_info;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
304 all_widget_info = info;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
305
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306 return info;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309 static void
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
310 free_widget_info (info)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
311 widget_info* info;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
313 safe_free_str (info->type);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
314 safe_free_str (info->name);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
315 free_widget_value_tree (info->val);
7515
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
316 lwlib_memset ((void*)info, 0xDEADBEEF, sizeof (widget_info));
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
317 free (info);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
318 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
319
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
320 static void
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
321 mark_widget_destroyed (widget, closure, call_data)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
322 Widget widget;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
323 XtPointer closure;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
324 XtPointer call_data;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
325 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
326 widget_instance* instance = (widget_instance*)closure;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
327
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
328 /* be very conservative */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
329 if (instance->widget == widget)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
330 instance->widget = NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
331 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
332
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
333 /* The messy #ifdef PROTOTYPES here and elsewhere are prompted by a
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
334 flood of warnings about argument promotion from proprietary ISO C
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
335 compilers. (etags still only makes one entry for each function.) */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336 static widget_instance *
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
337 #ifdef PROTOTYPES
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
338 allocate_widget_instance (widget_info* info, Widget parent, Boolean pop_up_p)
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
339 #else
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
340 allocate_widget_instance (info, parent, pop_up_p)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
341 widget_info* info;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
342 Widget parent;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
343 Boolean pop_up_p;
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
344 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346 widget_instance* instance =
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347 (widget_instance*)malloc (sizeof (widget_instance));
27335
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
348 bzero (instance, sizeof *instance);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
349 instance->parent = parent;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350 instance->pop_up_p = pop_up_p;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351 instance->info = info;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
352 instance->next = info->instances;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353 info->instances = instance;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354
14163
2422ceecd9d2 (instantiate_widget_instance): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 12744
diff changeset
355 instantiate_widget_instance (instance);
5626
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 XtAddCallback (instance->widget, XtNdestroyCallback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
358 mark_widget_destroyed, (XtPointer)instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359 return instance;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
360 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362 static void
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
363 free_widget_instance (instance)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
364 widget_instance* instance;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 {
7515
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
366 lwlib_memset ((void*)instance, 0xDEADBEEF, sizeof (widget_instance));
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
367 free (instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368 }
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 static widget_info *
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
371 #ifdef PROTOTYPES
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
372 get_widget_info (LWLIB_ID id, Boolean remove_p)
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
373 #else
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
374 get_widget_info (id, remove_p)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
375 LWLIB_ID id;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
376 Boolean remove_p;
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
377 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
378 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
379 widget_info* info;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380 widget_info* prev;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
381 for (prev = NULL, info = all_widget_info;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
382 info;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
383 prev = info, info = info->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384 if (info->id == id)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386 if (remove_p)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
388 if (prev)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 prev->next = info->next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
390 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391 all_widget_info = info->next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393 return info;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
395 return NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397
6305
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
398 /* Internal function used by the library dependent implementation to get the
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
399 widget_value for a given widget in an instance */
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
400 widget_info *
6333
f3fe542e8cd7 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6306
diff changeset
401 lw_get_widget_info (id)
f3fe542e8cd7 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 6306
diff changeset
402 LWLIB_ID id;
6305
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
403 {
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
404 return get_widget_info (id, 0);
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
405 }
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
406
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407 static widget_instance *
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
408 #ifdef PROTOTYPES
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
409 get_widget_instance (Widget widget, Boolean remove_p)
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
410 #else
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
411 get_widget_instance (widget, remove_p)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
412 Widget widget;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
413 Boolean remove_p;
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
414 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416 widget_info* info;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417 widget_instance* instance;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418 widget_instance* prev;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
419 for (info = all_widget_info; info; info = info->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420 for (prev = NULL, instance = info->instances;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421 instance;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422 prev = instance, instance = instance->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423 if (instance->widget == widget)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425 if (remove_p)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427 if (prev)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428 prev->next = instance->next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430 info->instances = instance->next;
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 return instance;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
433 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
434 return (widget_instance *) 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
435 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436
27335
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
437 /* Value is a pointer to the widget_instance corresponding to
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
438 WIDGET, or null if WIDGET is not a lwlib widget. */
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
439
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
440 widget_instance *
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
441 lw_get_widget_instance (widget)
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
442 Widget widget;
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
443 {
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
444 return get_widget_instance (widget, False);
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
445 }
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
446
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
447 static widget_instance*
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
448 #ifdef PROTOTYPES
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
449 find_instance (LWLIB_ID id, Widget parent, Boolean pop_up_p)
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
450 #else
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
451 find_instance (id, parent, pop_up_p)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
452 LWLIB_ID id;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
453 Widget parent;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
454 Boolean pop_up_p;
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
455 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
456 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
457 widget_info* info = get_widget_info (id, False);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458 widget_instance* instance;
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 if (info)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
461 for (instance = info->instances; instance; instance = instance->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 if (instance->parent == parent && instance->pop_up_p == pop_up_p)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463 return instance;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465 return NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469 /* utility function for widget_value */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470 static Boolean
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
471 safe_strcmp (s1, s2)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
472 char* s1;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
473 char* s2;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475 if (!!s1 ^ !!s2) return True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476 return (s1 && s2) ? strcmp (s1, s2) : s1 ? False : !!s2;
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480 #if 0
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481 # define EXPLAIN(name, oc, nc, desc, a1, a2) \
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 printf ("Change: \"%s\"\tmax(%s=%d,%s=%d)\t%s %d %d\n", \
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483 name, \
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484 (oc == NO_CHANGE ? "none" : \
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
485 (oc == INVISIBLE_CHANGE ? "invisible" : \
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
486 (oc == VISIBLE_CHANGE ? "visible" : \
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487 (oc == STRUCTURAL_CHANGE ? "structural" : "???")))), \
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
488 oc, \
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489 (nc == NO_CHANGE ? "none" : \
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490 (nc == INVISIBLE_CHANGE ? "invisible" : \
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491 (nc == VISIBLE_CHANGE ? "visible" : \
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 (nc == STRUCTURAL_CHANGE ? "structural" : "???")))), \
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493 nc, desc, a1, a2)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 #else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 # define EXPLAIN(name, oc, nc, desc, a1, a2)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
496 #endif
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499 static widget_value *
27997
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
500 merge_widget_value (val1, val2, level, change_p)
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
501 widget_value* val1;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
502 widget_value* val2;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
503 int level;
27997
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
504 int *change_p;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 {
14879
70f79ccb9875 (merge_widget_value): Set the this_one_change field.
Richard M. Stallman <rms@gnu.org>
parents: 14663
diff changeset
506 change_type change, this_one_change;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507 widget_value* merged_next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508 widget_value* merged_contents;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510 if (!val1)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 if (val2)
27997
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
513 {
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
514 *change_p = 1;
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
515 return copy_widget_value_tree (val2, STRUCTURAL_CHANGE);
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
516 }
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
517 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518 return NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520 if (!val2)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521 {
27997
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
522 *change_p = 1;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
523 free_widget_value_tree (val1);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
524 return NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
525 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
526
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
527 change = NO_CHANGE;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
528
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
529 if (safe_strcmp (val1->name, val2->name))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
530 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
531 EXPLAIN (val1->name, change, STRUCTURAL_CHANGE, "name change",
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
532 val1->name, val2->name);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
533 change = max (change, STRUCTURAL_CHANGE);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
534 safe_free_str (val1->name);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
535 val1->name = safe_strdup (val2->name);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537 if (safe_strcmp (val1->value, val2->value))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
538 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
539 EXPLAIN (val1->name, change, VISIBLE_CHANGE, "value change",
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
540 val1->value, val2->value);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
541 change = max (change, VISIBLE_CHANGE);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
542 safe_free_str (val1->value);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
543 val1->value = safe_strdup (val2->value);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
544 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
545 if (safe_strcmp (val1->key, val2->key))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
546 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
547 EXPLAIN (val1->name, change, VISIBLE_CHANGE, "key change",
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
548 val1->key, val2->key);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
549 change = max (change, VISIBLE_CHANGE);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
550 safe_free_str (val1->key);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
551 val1->key = safe_strdup (val2->key);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
552 }
41765
27b70bc263d6 Include ../src/lisp.h. Don't declare xmalloc.
Richard M. Stallman <rms@gnu.org>
parents: 32040
diff changeset
553 if (! EQ (val1->help, val2->help))
27335
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
554 {
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
555 EXPLAIN (val1->name, change, VISIBLE_CHANGE, "help change",
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
556 val1->help, val2->help);
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
557 change = max (change, VISIBLE_CHANGE);
41765
27b70bc263d6 Include ../src/lisp.h. Don't declare xmalloc.
Richard M. Stallman <rms@gnu.org>
parents: 32040
diff changeset
558 val1->help = val2->help;
27335
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
559 }
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
560 if (val1->enabled != val2->enabled)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562 EXPLAIN (val1->name, change, VISIBLE_CHANGE, "enablement change",
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
563 val1->enabled, val2->enabled);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
564 change = max (change, VISIBLE_CHANGE);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
565 val1->enabled = val2->enabled;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
566 }
25036
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
567 if (val1->button_type != val2->button_type)
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
568 {
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
569 EXPLAIN (val1->name, change, VISIBLE_CHANGE, "button type change",
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
570 val1->button_type, val2->button_type);
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
571 change = max (change, VISIBLE_CHANGE);
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
572 val1->button_type = val2->button_type;
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
573 }
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574 if (val1->selected != val2->selected)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
575 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
576 EXPLAIN (val1->name, change, VISIBLE_CHANGE, "selection change",
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577 val1->selected, val2->selected);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
578 change = max (change, VISIBLE_CHANGE);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
579 val1->selected = val2->selected;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
580 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
581 if (val1->call_data != val2->call_data)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
582 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
583 EXPLAIN (val1->name, change, INVISIBLE_CHANGE, "call-data change",
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
584 val1->call_data, val2->call_data);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
585 change = max (change, INVISIBLE_CHANGE);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
586 val1->call_data = val2->call_data;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
587 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
588
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
589 if (level > 0)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
590 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591 merged_contents =
27997
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
592 merge_widget_value (val1->contents, val2->contents, level - 1,
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
593 change_p);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
594
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
595 if (val1->contents && !merged_contents)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
596 {
14163
2422ceecd9d2 (instantiate_widget_instance): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 12744
diff changeset
597 /* This used to say INVISIBLE_CHANGE,
2422ceecd9d2 (instantiate_widget_instance): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 12744
diff changeset
598 but it is visible and vitally important when
2422ceecd9d2 (instantiate_widget_instance): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 12744
diff changeset
599 the contents of the menu bar itself are entirely deleted.
2422ceecd9d2 (instantiate_widget_instance): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 12744
diff changeset
600
2422ceecd9d2 (instantiate_widget_instance): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 12744
diff changeset
601 But maybe it doesn't matter. This fails to fix the bug. */
2422ceecd9d2 (instantiate_widget_instance): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 12744
diff changeset
602 EXPLAIN (val1->name, change, STRUCTURAL_CHANGE, "(contents gone)",
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
603 0, 0);
14163
2422ceecd9d2 (instantiate_widget_instance): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 12744
diff changeset
604 change = max (change, STRUCTURAL_CHANGE);
5626
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 if (merged_contents && merged_contents->change != NO_CHANGE)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
607 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608 EXPLAIN (val1->name, change, INVISIBLE_CHANGE, "(contents change)",
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609 0, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
610 change = max (change, INVISIBLE_CHANGE);
15854
184808f2a73c (merge_widget_value): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 15790
diff changeset
611 #if 0 /* This was replaced by the August 9 1996 change in lwlib-Xm.c. */
15790
fb5e87397205 (merge_widget_value) [USE_MOTIF]: Pass along the change flag from
Richard M. Stallman <rms@gnu.org>
parents: 15630
diff changeset
612 #ifdef USE_MOTIF
fb5e87397205 (merge_widget_value) [USE_MOTIF]: Pass along the change flag from
Richard M. Stallman <rms@gnu.org>
parents: 15630
diff changeset
613 change = max (merged_contents->change, change);
fb5e87397205 (merge_widget_value) [USE_MOTIF]: Pass along the change flag from
Richard M. Stallman <rms@gnu.org>
parents: 15630
diff changeset
614 #endif
15854
184808f2a73c (merge_widget_value): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 15790
diff changeset
615 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
616 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
617
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
618 val1->contents = merged_contents;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
619 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
620
14879
70f79ccb9875 (merge_widget_value): Set the this_one_change field.
Richard M. Stallman <rms@gnu.org>
parents: 14663
diff changeset
621 this_one_change = change;
70f79ccb9875 (merge_widget_value): Set the this_one_change field.
Richard M. Stallman <rms@gnu.org>
parents: 14663
diff changeset
622
27997
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
623 merged_next = merge_widget_value (val1->next, val2->next, level, change_p);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
625 if (val1->next && !merged_next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627 EXPLAIN (val1->name, change, STRUCTURAL_CHANGE, "(following gone)",
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
628 0, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629 change = max (change, STRUCTURAL_CHANGE);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
630 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
631 else if (merged_next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
632 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
633 if (merged_next->change)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634 EXPLAIN (val1->name, change, merged_next->change, "(following change)",
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
635 0, 0);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636 change = max (change, merged_next->change);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
639 val1->next = merged_next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
640
14879
70f79ccb9875 (merge_widget_value): Set the this_one_change field.
Richard M. Stallman <rms@gnu.org>
parents: 14663
diff changeset
641 val1->this_one_change = this_one_change;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
642 val1->change = change;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
643
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644 if (change > NO_CHANGE && val1->toolkit_data)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 {
27997
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
646 *change_p = 1;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647 if (val1->free_toolkit_data)
14611
69fca906f068 (free_widget_value_tree, merge_widget_value):
Karl Heuer <kwzh@gnu.org>
parents: 14594
diff changeset
648 XtFree (val1->toolkit_data);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649 val1->toolkit_data = NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
651
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652 return val1;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
653 }
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
656 /* modifying the widgets */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
657 static Widget
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
658 name_to_widget (instance, name)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
659 widget_instance* instance;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
660 char* name;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662 Widget widget = NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
663
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
664 if (!instance->widget)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
665 return NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
666
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
667 if (!strcmp (XtName (instance->widget), name))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
668 widget = instance->widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
669 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671 int length = strlen (name) + 2;
7515
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
672 char* real_name = (char *) xmalloc (length);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673 real_name [0] = '*';
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
674 strcpy (real_name + 1, name);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
675
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
676 widget = XtNameToWidget (instance->widget, real_name);
7515
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
677
d31babe815e7 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 7423
diff changeset
678 free (real_name);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
679 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
680 return widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
681 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
682
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
683 static void
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
684 #ifdef PROTOTYPES
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
685 set_one_value (widget_instance* instance, widget_value* val, Boolean deep_p)
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
686 #else
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
687 set_one_value (instance, val, deep_p)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
688 widget_instance* instance;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
689 widget_value* val;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
690 Boolean deep_p;
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
691 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
692 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
693 Widget widget = name_to_widget (instance, val->name);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
694
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
695 if (widget)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
696 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
697 #if defined (USE_LUCID)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
698 if (lw_lucid_widget_p (instance->widget))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
699 xlw_update_one_widget (instance, widget, val, deep_p);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
700 #endif
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
701 #if defined (USE_MOTIF)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
702 if (lw_motif_widget_p (instance->widget))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
703 xm_update_one_widget (instance, widget, val, deep_p);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
704 #endif
6305
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
705 #if defined (USE_XAW)
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
706 if (lw_xaw_widget_p (instance->widget))
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
707 xaw_update_one_widget (instance, widget, val, deep_p);
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
708 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
709 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
710 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
711
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
712 static void
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
713 #ifdef PROTOTYPES
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
714 update_one_widget_instance (widget_instance* instance, Boolean deep_p)
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
715 #else
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
716 update_one_widget_instance (instance, deep_p)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
717 widget_instance* instance;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
718 Boolean deep_p;
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
719 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
720 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
721 widget_value *val;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
722
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
723 if (!instance->widget)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
724 /* the widget was destroyed */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
725 return;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
726
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
727 for (val = instance->info->val; val; val = val->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
728 if (val->change != NO_CHANGE)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
729 set_one_value (instance, val, deep_p);
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
732 static void
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
733 #ifdef PROTOTYPES
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
734 update_all_widget_values (widget_info* info, Boolean deep_p)
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
735 #else
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
736 update_all_widget_values (info, deep_p)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
737 widget_info* info;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
738 Boolean deep_p;
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
739 #endif
5626
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 widget_instance* instance;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
742 widget_value* val;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
743
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
744 for (instance = info->instances; instance; instance = instance->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
745 update_one_widget_instance (instance, deep_p);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
746
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
747 for (val = info->val; val; val = val->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
748 val->change = NO_CHANGE;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
749 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
750
27997
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
751 int
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
752 #ifdef PROTOTYPES
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
753 lw_modify_all_widgets (LWLIB_ID id, widget_value* val, Boolean deep_p)
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
754 #else
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
755 lw_modify_all_widgets (id, val, deep_p)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
756 LWLIB_ID id;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
757 widget_value* val;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
758 Boolean deep_p;
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
759 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
760 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
761 widget_info* info = get_widget_info (id, False);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
762 widget_value* new_val;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
763 widget_value* next_new_val;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
764 widget_value* cur;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
765 widget_value* prev;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
766 widget_value* next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
767 int found;
27997
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
768 int change_p = 0;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
769
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
770 if (!info)
29468
2d728b3d9f5f (P_): Use PROTOTYPES.
Dave Love <fx@gnu.org>
parents: 27997
diff changeset
771 return 0;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
772
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
773 for (new_val = val; new_val; new_val = new_val->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
774 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
775 next_new_val = new_val->next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
776 new_val->next = NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
777 found = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
778 for (prev = NULL, cur = info->val; cur; prev = cur, cur = cur->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
779 if (!strcmp (cur->name, new_val->name))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
780 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
781 found = True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
782 next = cur->next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
783 cur->next = NULL;
27997
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
784 cur = merge_widget_value (cur, new_val, deep_p ? 1000 : 1,
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
785 &change_p);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
786 if (prev)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
787 prev->next = cur ? cur : next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
788 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
789 info->val = cur ? cur : next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
790 if (cur)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
791 cur->next = next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
792 break;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
793 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
794 if (!found)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
795 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
796 /* Could not find it, add it */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
797 if (prev)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
798 prev->next = copy_widget_value_tree (new_val, STRUCTURAL_CHANGE);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
799 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
800 info->val = copy_widget_value_tree (new_val, STRUCTURAL_CHANGE);
27997
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
801 change_p = 1;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
802 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
803 new_val->next = next_new_val;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
804 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
805
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
806 update_all_widget_values (info, deep_p);
27997
7ff6dc4c3775 (lw_modify_all_widgets): Return non-zero if widget
Gerd Moellmann <gerd@gnu.org>
parents: 27756
diff changeset
807 return change_p;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
808 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
809
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
810
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
811 /* creating the widgets */
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 static void
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
814 initialize_widget_instance (instance)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
815 widget_instance* instance;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
816 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
817 widget_value* val;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
818
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
819 for (val = instance->info->val; val; val = val->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
820 val->change = STRUCTURAL_CHANGE;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
821
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
822 update_one_widget_instance (instance, True);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
823
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
824 for (val = instance->info->val; val; val = val->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
825 val->change = NO_CHANGE;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
826 }
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 widget_creation_function
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
830 find_in_table (type, table)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
831 char* type;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
832 widget_creation_entry* table;
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 widget_creation_entry* cur;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
835 for (cur = table; cur->type; cur++)
5853
4934e5381fb2 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 5724
diff changeset
836 if (!my_strcasecmp (type, cur->type))
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
837 return cur->function;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
838 return NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
839 }
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 static Boolean
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
842 dialog_spec_p (name)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
843 char* name;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
844 {
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
845 /* return True if name matches [EILPQeilpq][1-9][Bb] or
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
846 [EILPQeilpq][1-9][Bb][Rr][1-9] */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
847 if (!name)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
848 return False;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
849
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
850 switch (name [0])
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
851 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
852 case 'E': case 'I': case 'L': case 'P': case 'Q':
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
853 case 'e': case 'i': case 'l': case 'p': case 'q':
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
854 if (name [1] >= '0' && name [1] <= '9')
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 if (name [2] != 'B' && name [2] != 'b')
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
857 return False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
858 if (!name [3])
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
859 return True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
860 if ((name [3] == 'T' || name [3] == 't') && !name [4])
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
861 return True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
862 if ((name [3] == 'R' || name [3] == 'r')
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
863 && name [4] >= '0' && name [4] <= '9' && !name [5])
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
864 return True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
865 return False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
866 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
867 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
868 return False;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
869
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
870 default:
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
871 return False;
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 }
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 static void
14163
2422ceecd9d2 (instantiate_widget_instance): Renamed from
Richard M. Stallman <rms@gnu.org>
parents: 12744
diff changeset
876 instantiate_widget_instance (instance)
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
877 widget_instance* instance;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
878 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
879 widget_creation_function function = NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
880
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
881 #if defined (USE_LUCID)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
882 if (!function)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
883 function = find_in_table (instance->info->type, xlw_creation_table);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
884 #endif
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
885 #if defined(USE_MOTIF)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
886 if (!function)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
887 function = find_in_table (instance->info->type, xm_creation_table);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
888 #endif
6305
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
889 #if defined (USE_XAW)
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
890 if (!function)
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
891 function = find_in_table (instance->info->type, xaw_creation_table);
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
892 #endif
5626
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 if (!function)
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 if (dialog_spec_p (instance->info->type))
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 #if defined (USE_LUCID)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
899 /* not yet */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
900 #endif
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
901 #if defined(USE_MOTIF)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
902 if (!function)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
903 function = xm_create_dialog;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
904 #endif
6305
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
905 #if defined (USE_XAW)
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
906 if (!function)
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
907 function = xaw_create_dialog;
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
908 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
909 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
910 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
911
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
912 if (!function)
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 printf ("No creation function for widget type %s\n",
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
915 instance->info->type);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
916 abort ();
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
917 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
918
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
919 instance->widget = (*function) (instance);
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 if (!instance->widget)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
922 abort ();
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
923
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
924 /* XtRealizeWidget (instance->widget);*/
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
925 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
926
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
927 void
27335
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
928 lw_register_widget (type, name, id, val, pre_activate_cb,
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
929 selection_cb, post_activate_cb, highlight_cb)
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
930 char* type;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
931 char* name;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
932 LWLIB_ID id;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
933 widget_value* val;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
934 lw_callback pre_activate_cb;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
935 lw_callback selection_cb;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
936 lw_callback post_activate_cb;
27335
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
937 lw_callback highlight_cb;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
938 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
939 if (!get_widget_info (id, False))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
940 allocate_widget_info (type, name, id, val, pre_activate_cb, selection_cb,
27335
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
941 post_activate_cb, highlight_cb);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
942 }
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 Widget
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
945 #ifdef PROTOTYPES
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
946 lw_get_widget (LWLIB_ID id, Widget parent, Boolean pop_up_p)
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
947 #else
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
948 lw_get_widget (id, parent, pop_up_p)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
949 LWLIB_ID id;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
950 Widget parent;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
951 Boolean pop_up_p;
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
952 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
953 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
954 widget_instance* instance;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
955
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
956 instance = find_instance (id, parent, pop_up_p);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
957 return instance ? instance->widget : NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
958 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
959
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
960 Widget
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
961 #ifdef PROTOTYPES
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
962 lw_make_widget (LWLIB_ID id, Widget parent, Boolean pop_up_p)
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
963 #else
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
964 lw_make_widget (id, parent, pop_up_p)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
965 LWLIB_ID id;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
966 Widget parent;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
967 Boolean pop_up_p;
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
968 #endif
5626
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 widget_instance* instance;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
971 widget_info* info;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
972
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
973 instance = find_instance (id, parent, pop_up_p);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
974 if (!instance)
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 info = get_widget_info (id, False);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
977 if (!info)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
978 return NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
979 instance = allocate_widget_instance (info, parent, pop_up_p);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
980 initialize_widget_instance (instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
981 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
982 if (!instance->widget)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
983 abort ();
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
984 return instance->widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
985 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
986
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
987 Widget
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
988 #ifdef PROTOTYPES
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
989 lw_create_widget (char* type, char* name, LWLIB_ID id, widget_value* val,
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
990 Widget parent, Boolean pop_up_p,
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
991 lw_callback pre_activate_cb, lw_callback selection_cb,
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
992 lw_callback post_activate_cb, lw_callback highlight_cb)
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
993 #else
27335
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
994 lw_create_widget (type, name, id, val, parent, pop_up_p, pre_activate_cb,
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
995 selection_cb, post_activate_cb, highlight_cb)
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
996 char* type;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
997 char* name;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
998 LWLIB_ID id;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
999 widget_value* val;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1000 Widget parent;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1001 Boolean pop_up_p;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1002 lw_callback pre_activate_cb;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1003 lw_callback selection_cb;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1004 lw_callback post_activate_cb;
27335
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
1005 lw_callback highlight_cb;
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
1006 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1007 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1008 lw_register_widget (type, name, id, val, pre_activate_cb, selection_cb,
27335
314e947f85ea (copy_widget_value_tree): Copy help string.
Gerd Moellmann <gerd@gnu.org>
parents: 26087
diff changeset
1009 post_activate_cb, highlight_cb);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1010 return lw_make_widget (id, parent, pop_up_p);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1011 }
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
1012
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1013
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1014 /* destroying the widgets */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1015 static void
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1016 destroy_one_instance (instance)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1017 widget_instance* instance;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1018 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1019 /* Remove the destroy callback on the widget; that callback will try to
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1020 dereference the instance object (to set its widget slot to 0, since the
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1021 widget is dead.) Since the instance is now dead, we don't have to worry
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1022 about the fact that its widget is dead too.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1023
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1024 This happens in the Phase2Destroy of the widget, so this callback would
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1025 not have been run until arbitrarily long after the instance was freed.
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1026 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1027 if (instance->widget)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1028 XtRemoveCallback (instance->widget, XtNdestroyCallback,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1029 mark_widget_destroyed, (XtPointer)instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1030
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1031 if (instance->widget)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1032 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1033 /* The else are pretty tricky here, including the empty statement
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1034 at the end because it would be very bad to destroy a widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1035 twice. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1036 #if defined (USE_LUCID)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1037 if (lw_lucid_widget_p (instance->widget))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1038 xlw_destroy_instance (instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1039 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1040 #endif
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1041 #if defined (USE_MOTIF)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1042 if (lw_motif_widget_p (instance->widget))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1043 xm_destroy_instance (instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1044 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1045 #endif
6305
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1046 #if defined (USE_XAW)
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1047 if (lw_xaw_widget_p (instance->widget))
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1048 xaw_destroy_instance (instance);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
1049 else
6305
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1050 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1051 /* do not remove the empty statement */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1052 ;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1053 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1054
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1055 free_widget_instance (instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1056 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1057
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1058 void
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1059 lw_destroy_widget (w)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1060 Widget w;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1061 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1062 widget_instance* instance = get_widget_instance (w, True);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
1063
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1064 if (instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1065 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1066 widget_info *info = instance->info;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1067 /* instance has already been removed from the list; free it */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1068 destroy_one_instance (instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1069 /* if there are no instances left, free the info too */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1070 if (!info->instances)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1071 lw_destroy_all_widgets (info->id);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1072 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1073 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1074
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1075 void
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1076 lw_destroy_all_widgets (id)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1077 LWLIB_ID id;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1078 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1079 widget_info* info = get_widget_info (id, True);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1080 widget_instance* instance;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1081 widget_instance* next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1082
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1083 if (info)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1084 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1085 for (instance = info->instances; instance; )
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1086 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1087 next = instance->next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1088 destroy_one_instance (instance);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1089 instance = next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1090 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1091 free_widget_info (info);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1092 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1093 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1094
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1095 void
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1096 lw_destroy_everything ()
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1097 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1098 while (all_widget_info)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1099 lw_destroy_all_widgets (all_widget_info->id);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1100 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1101
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1102 void
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1103 lw_destroy_all_pop_ups ()
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1104 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1105 widget_info* info;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1106 widget_info* next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1107 widget_instance* instance;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1108
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1109 for (info = all_widget_info; info; info = next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1110 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1111 next = info->next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1112 instance = info->instances;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1113 if (instance && instance->pop_up_p)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1114 lw_destroy_all_widgets (info->id);
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 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1117
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1118 #ifdef USE_MOTIF
11861
5bb6ba042015 Don't use prototype.
Karl Heuer <kwzh@gnu.org>
parents: 11714
diff changeset
1119 extern Widget first_child (/* Widget */); /* garbage */
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1120 #endif
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1121
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1122 Widget
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1123 lw_raise_all_pop_up_widgets ()
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1124 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1125 widget_info* info;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1126 widget_instance* instance;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1127 Widget result = NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1128
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1129 for (info = all_widget_info; info; info = info->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1130 for (instance = info->instances; instance; instance = instance->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1131 if (instance->pop_up_p)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1132 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1133 Widget widget = instance->widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1134 if (widget)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1135 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1136 if (XtIsManaged (widget)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1137 #ifdef USE_MOTIF
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1138 /* What a complete load of crap!!!!
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1139 When a dialogShell is on the screen, it is not managed!
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1140 */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1141 || (lw_motif_widget_p (instance->widget) &&
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1142 XtIsManaged (first_child (widget)))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1143 #endif
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1144 )
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1145 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1146 if (!result)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1147 result = widget;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1148 XMapRaised (XtDisplay (widget), XtWindow (widget));
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1149 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1150 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1151 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1152 return result;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1153 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1154
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1155 static void
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
1156 #ifdef PROTOTYPES
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
1157 lw_pop_all_widgets (LWLIB_ID id, Boolean up)
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
1158 #else
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1159 lw_pop_all_widgets (id, up)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1160 LWLIB_ID id;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1161 Boolean up;
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
1162 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1163 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1164 widget_info* info = get_widget_info (id, False);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1165 widget_instance* instance;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1166
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1167 if (info)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1168 for (instance = info->instances; instance; instance = instance->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1169 if (instance->pop_up_p && instance->widget)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1170 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1171 #if defined (USE_LUCID)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1172 if (lw_lucid_widget_p (instance->widget))
6305
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1173 {
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1174 XtRealizeWidget (instance->widget);
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1175 xlw_pop_instance (instance, up);
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1176 }
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1177 #endif
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1178 #if defined (USE_MOTIF)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1179 if (lw_motif_widget_p (instance->widget))
6305
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1180 {
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1181 XtRealizeWidget (instance->widget);
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1182 xm_pop_instance (instance, up);
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1183 }
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1184 #endif
6305
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1185 #if defined (USE_XAW)
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1186 if (lw_xaw_widget_p (instance->widget))
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1187 {
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1188 XtRealizeWidget (XtParent (instance->widget));
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1189 XtRealizeWidget (instance->widget);
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1190 xaw_pop_instance (instance, up);
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1191 }
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1192 #endif
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1193 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1194 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1195
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1196 void
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1197 lw_pop_up_all_widgets (id)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1198 LWLIB_ID id;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1199 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1200 lw_pop_all_widgets (id, True);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1201 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1202
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1203 void
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1204 lw_pop_down_all_widgets (id)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1205 LWLIB_ID id;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1206 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1207 lw_pop_all_widgets (id, False);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1208 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1209
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1210 void
12744
0c5625e91a11 (lw_popup_menu): New arg event, passed along.
Richard M. Stallman <rms@gnu.org>
parents: 12187
diff changeset
1211 lw_popup_menu (widget, event)
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1212 Widget widget;
12744
0c5625e91a11 (lw_popup_menu): New arg event, passed along.
Richard M. Stallman <rms@gnu.org>
parents: 12187
diff changeset
1213 XEvent *event;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1214 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1215 #if defined (USE_LUCID)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1216 if (lw_lucid_widget_p (widget))
12744
0c5625e91a11 (lw_popup_menu): New arg event, passed along.
Richard M. Stallman <rms@gnu.org>
parents: 12187
diff changeset
1217 xlw_popup_menu (widget, event);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1218 #endif
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1219 #if defined (USE_MOTIF)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1220 if (lw_motif_widget_p (widget))
12744
0c5625e91a11 (lw_popup_menu): New arg event, passed along.
Richard M. Stallman <rms@gnu.org>
parents: 12187
diff changeset
1221 xm_popup_menu (widget, event);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1222 #endif
6305
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1223 #if defined (USE_XAW)
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1224 if (lw_xaw_widget_p (widget))
12744
0c5625e91a11 (lw_popup_menu): New arg event, passed along.
Richard M. Stallman <rms@gnu.org>
parents: 12187
diff changeset
1225 xaw_popup_menu (widget, event);
6305
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1226 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1227 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1228
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1229 /* get the values back */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1230 static Boolean
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1231 get_one_value (instance, val)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1232 widget_instance* instance;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1233 widget_value* val;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1234 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1235 Widget widget = name_to_widget (instance, val->name);
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
1236
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1237 if (widget)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1238 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1239 #if defined (USE_LUCID)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1240 if (lw_lucid_widget_p (instance->widget))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1241 xlw_update_one_value (instance, widget, val);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1242 #endif
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1243 #if defined (USE_MOTIF)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1244 if (lw_motif_widget_p (instance->widget))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1245 xm_update_one_value (instance, widget, val);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1246 #endif
6305
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1247 #if defined (USE_XAW)
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1248 if (lw_xaw_widget_p (instance->widget))
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1249 xaw_update_one_value (instance, widget, val);
65beaa9aa1e4 *** empty log message ***
Fred Pierresteguy <F.Pierresteguy@frcl.bull.fr>
parents: 5999
diff changeset
1250 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1251 return True;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1252 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1253 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1254 return False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1255 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1256
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1257 Boolean
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1258 lw_get_some_values (id, val_out)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1259 LWLIB_ID id;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1260 widget_value* val_out;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1261 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1262 widget_info* info = get_widget_info (id, False);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1263 widget_instance* instance;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1264 widget_value* val;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1265 Boolean result = False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1266
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1267 if (!info)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1268 return False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1269
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1270 instance = info->instances;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1271 if (!instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1272 return False;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1273
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1274 for (val = val_out; val; val = val->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1275 if (get_one_value (instance, val))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1276 result = True;
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 return result;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1279 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1280
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1281 widget_value*
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1282 lw_get_all_values (id)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1283 LWLIB_ID id;
5626
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 widget_info* info = get_widget_info (id, False);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1286 widget_value* val = info->val;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1287 if (lw_get_some_values (id, val))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1288 return val;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1289 else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1290 return NULL;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1291 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1292
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1293 /* internal function used by the library dependent implementation to get the
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1294 widget_value for a given widget in an instance */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1295 widget_value*
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1296 lw_get_widget_value_for_widget (instance, w)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1297 widget_instance* instance;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1298 Widget w;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1299 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1300 char* name = XtName (w);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1301 widget_value* cur;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1302 for (cur = instance->info->val; cur; cur = cur->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1303 if (!strcmp (cur->name, name))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1304 return cur;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1305 return NULL;
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1308 /* update other instances value when one thing changed */
14594
37d38d8040a1 (lw_internal_update_other_instances): Move static var
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
1309
37d38d8040a1 (lw_internal_update_other_instances): Move static var
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
1310 /* To forbid recursive calls */
37d38d8040a1 (lw_internal_update_other_instances): Move static var
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
1311 static Boolean lwlib_updating;
37d38d8040a1 (lw_internal_update_other_instances): Move static var
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
1312
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
1313 /* This function can be used as a an XtCallback for the widgets that get
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1314 modified to update other instances of the widgets. Closure should be the
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1315 widget_instance. */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1316 void
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1317 lw_internal_update_other_instances (widget, closure, call_data)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1318 Widget widget;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1319 XtPointer closure;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1320 XtPointer call_data;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1321 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1322 widget_instance* instance = (widget_instance*)closure;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1323 char* name = XtName (widget);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1324 widget_info* info;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1325 widget_instance* cur;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1326 widget_value* val;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1327
14594
37d38d8040a1 (lw_internal_update_other_instances): Move static var
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
1328 /* Avoid possibly infinite recursion. */
37d38d8040a1 (lw_internal_update_other_instances): Move static var
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
1329 if (lwlib_updating)
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1330 return;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1331
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1332 /* protect against the widget being destroyed */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1333 if (XtWidgetBeingDestroyedP (widget))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1334 return;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1335
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1336 /* Return immediately if there are no other instances */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1337 info = instance->info;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1338 if (!info->instances->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1339 return;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1340
14594
37d38d8040a1 (lw_internal_update_other_instances): Move static var
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
1341 lwlib_updating = True;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1342
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1343 for (val = info->val; val && strcmp (val->name, name); val = val->next);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1344
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1345 if (val && get_one_value (instance, val))
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1346 for (cur = info->instances; cur; cur = cur->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1347 if (cur != instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1348 set_one_value (cur, val, True);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1349
14594
37d38d8040a1 (lw_internal_update_other_instances): Move static var
Karl Heuer <kwzh@gnu.org>
parents: 14186
diff changeset
1350 lwlib_updating = False;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1351 }
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1354 /* get the id */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1355
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1356 LWLIB_ID
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1357 lw_get_widget_id (w)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1358 Widget w;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1359 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1360 widget_instance* instance = get_widget_instance (w, False);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1361
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1362 return instance ? instance->info->id : 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1363 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1364
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1365 /* set the keyboard focus */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1366 void
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1367 lw_set_keyboard_focus (parent, w)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1368 Widget parent;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1369 Widget w;
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1370 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1371 #if defined (USE_MOTIF)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1372 xm_set_keyboard_focus (parent, w);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1373 #else
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1374 XtSetKeyboardFocus (parent, w);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1375 #endif
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1376 }
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 /* Show busy */
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1379 static void
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
1380 #ifdef PROTOTYPES
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
1381 show_one_widget_busy (Widget w, Boolean flag)
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
1382 #else
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1383 show_one_widget_busy (w, flag)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1384 Widget w;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1385 Boolean flag;
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
1386 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1387 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1388 Pixel foreground = 0;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1389 Pixel background = 1;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1390 Widget widget_to_invert = XtNameToWidget (w, "*sheet");
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1391 if (!widget_to_invert)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1392 widget_to_invert = w;
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
1393
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1394 XtVaGetValues (widget_to_invert,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1395 XtNforeground, &foreground,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1396 XtNbackground, &background,
30571
aa1b8b4c369d Use NULL at the end of the
Gerd Moellmann <gerd@gnu.org>
parents: 29468
diff changeset
1397 NULL);
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1398 XtVaSetValues (widget_to_invert,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1399 XtNforeground, background,
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1400 XtNbackground, foreground,
30571
aa1b8b4c369d Use NULL at the end of the
Gerd Moellmann <gerd@gnu.org>
parents: 29468
diff changeset
1401 NULL);
5626
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
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1404 void
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
1405 #ifdef PROTOTYPES
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
1406 lw_show_busy (Widget w, Boolean busy)
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
1407 #else
5724
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1408 lw_show_busy (w, busy)
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1409 Widget w;
02a4aeb69cae *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 5706
diff changeset
1410 Boolean busy;
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
1411 #endif
5626
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1412 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1413 widget_instance* instance = get_widget_instance (w, False);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1414 widget_info* info;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1415 widget_instance* next;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1416
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1417 if (instance)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1418 {
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1419 info = instance->info;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1420 if (info->busy != busy)
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 for (next = info->instances; next; next = next->next)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1423 if (next->widget)
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1424 show_one_widget_busy (next->widget, busy);
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1425 info->busy = busy;
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1426 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1427 }
93bb7e0935ba Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1428 }
8785
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1429
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1430 /* This hack exists because Lucid/Athena need to execute the strange
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1431 function below to support geometry management. */
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1432 void
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
1433 #ifdef PROTOTYPES
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
1434 lw_refigure_widget (Widget w, Boolean doit)
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
1435 #else
8785
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1436 lw_refigure_widget (w, doit)
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1437 Widget w;
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1438 Boolean doit;
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
1439 #endif
8785
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1440 {
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48480
diff changeset
1441 #if defined (USE_XAW)
8785
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1442 XawPanedSetRefigureMode (w, doit);
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1443 #endif
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1444 #if defined (USE_MOTIF)
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1445 if (doit)
11714
b62d02709ec7 (lw_refigure_widget) [USE_MOTIF]: Fix backward if.
Richard M. Stallman <rms@gnu.org>
parents: 11676
diff changeset
1446 XtManageChild (w);
8785
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1447 else
11714
b62d02709ec7 (lw_refigure_widget) [USE_MOTIF]: Fix backward if.
Richard M. Stallman <rms@gnu.org>
parents: 11676
diff changeset
1448 XtUnmanageChild (w);
8785
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1449 #endif
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1450 }
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1451
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1452 /* Toolkit independent way of determining if an event window is in the
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1453 menubar. */
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1454 Boolean
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1455 lw_window_is_in_menubar (win, menubar_widget)
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1456 Window win;
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1457 Widget menubar_widget;
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1458 {
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1459 return menubar_widget
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1460 #if defined (USE_LUCID)
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1461 && XtWindow (menubar_widget) == win;
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1462 #endif
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1463 #if defined (USE_MOTIF)
14663
d9cafe0ebb7d (lw_window_is_in_menubar) [USE_MOTIF]:
Richard M. Stallman <rms@gnu.org>
parents: 14611
diff changeset
1464 && ((XtWindow (menubar_widget) == win)
d9cafe0ebb7d (lw_window_is_in_menubar) [USE_MOTIF]:
Richard M. Stallman <rms@gnu.org>
parents: 14611
diff changeset
1465 || (XtWindowToWidget (XtDisplay (menubar_widget), win)
d9cafe0ebb7d (lw_window_is_in_menubar) [USE_MOTIF]:
Richard M. Stallman <rms@gnu.org>
parents: 14611
diff changeset
1466 && (XtParent (XtWindowToWidget (XtDisplay (menubar_widget), win))
d9cafe0ebb7d (lw_window_is_in_menubar) [USE_MOTIF]:
Richard M. Stallman <rms@gnu.org>
parents: 14611
diff changeset
1467 == menubar_widget)));
8785
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1468 #endif
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1469 }
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1470
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1471 /* Motif hack to set the main window areas. */
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1472 void
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1473 lw_set_main_areas (parent, menubar, work_area)
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1474 Widget parent;
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1475 Widget menubar;
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1476 Widget work_area;
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1477 {
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1478 #if defined (USE_MOTIF)
9093
f8546f467db6 (lw_set_main_areas): Move call to XmMainSetAreas() to `lwlib-Xm.c'.
Paul Reilly <pmr@pajato.com>
parents: 8785
diff changeset
1479 xm_set_main_areas (parent, menubar, work_area);
8785
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1480 #endif
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1481 }
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1482
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1483 /* Manage resizing for Motif. This disables resizing when the menubar
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1484 is about to be modified. */
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1485 void
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
1486 #ifdef PROTOTYPES
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
1487 lw_allow_resizing (Widget w, Boolean flag)
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
1488 #else
8785
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1489 lw_allow_resizing (w, flag)
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1490 Widget w;
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1491 Boolean flag;
48480
9d09b87e8f3a Remove obsolete USE_OLIT code.
Dave Love <fx@gnu.org>
parents: 44917
diff changeset
1492 #endif
8785
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1493 {
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1494 #if defined (USE_MOTIF)
9226
fc3f748ccf9e (lw_set_main_areas): Use xm_set_main_areas().
Paul Reilly <pmr@pajato.com>
parents: 9093
diff changeset
1495 xm_manage_resizing (w, flag);
8785
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1496 #endif
04ad11fb0a0f entered into RCS
Paul Reilly <pmr@pajato.com>
parents: 7515
diff changeset
1497 }
25036
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1498
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1499
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1500 /* Value is non-zero if LABEL is a menu separator. If it is, *TYPE is
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1501 set to an appropriate enumerator of type enum menu_separator.
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1502 MOTIF_P non-zero means map separator types not supported by Motif
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1503 to similar ones that are supported. */
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1504
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1505 int
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1506 lw_separator_p (label, type, motif_p)
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1507 char *label;
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1508 enum menu_separator *type;
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1509 int motif_p;
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1510 {
32040
02773dbde247 (lw_separator_p): Init separator_p (bug with "-- some text").
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30571
diff changeset
1511 int separator_p = 0;
25036
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1512
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1513 if (strlen (label) >= 3
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1514 && bcmp (label, "--:", 3) == 0)
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1515 {
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1516 static struct separator_table
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1517 {
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1518 char *name;
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1519 enum menu_separator type;
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1520 }
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1521 separator_names[] =
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1522 {
42120
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1523 {"space", SEPARATOR_NO_LINE},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1524 {"noLine", SEPARATOR_NO_LINE},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1525 {"singleLine", SEPARATOR_SINGLE_LINE},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1526 {"doubleLine", SEPARATOR_DOUBLE_LINE},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1527 {"singleDashedLine", SEPARATOR_SINGLE_DASHED_LINE},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1528 {"doubleDashedLine", SEPARATOR_DOUBLE_DASHED_LINE},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1529 {"shadowEtchedIn", SEPARATOR_SHADOW_ETCHED_IN},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1530 {"shadowEtchedOut", SEPARATOR_SHADOW_ETCHED_OUT},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1531 {"shadowEtchedInDash", SEPARATOR_SHADOW_ETCHED_IN_DASH},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1532 {"shadowEtchedOutDash", SEPARATOR_SHADOW_ETCHED_OUT_DASH},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1533 {"shadowDoubleEtchedIn", SEPARATOR_SHADOW_DOUBLE_ETCHED_IN},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1534 {"shadowDoubleEtchedOut", SEPARATOR_SHADOW_DOUBLE_ETCHED_OUT},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1535 {"shadowDoubleEtchedInDash", SEPARATOR_SHADOW_DOUBLE_ETCHED_IN_DASH},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1536 {"shadowDoubleEtchedOutDash", SEPARATOR_SHADOW_DOUBLE_ETCHED_OUT_DASH},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1537 {0,0}
25036
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1538 };
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1539
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1540 int i;
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1541
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1542 label += 3;
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1543 for (i = 0; separator_names[i].name; ++i)
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1544 if (strcmp (label, separator_names[i].name) == 0)
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1545 {
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1546 separator_p = 1;
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1547 *type = separator_names[i].type;
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1548
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1549 /* If separator type is not supported under Motif,
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1550 use a similar one. */
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1551 if (motif_p && *type >= SEPARATOR_SHADOW_DOUBLE_ETCHED_IN)
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1552 *type -= 4;
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1553 break;
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1554 }
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1555 }
25562
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1556 else if (strlen (label) > 3
25718
096f3085e905 (lw_separator_p): Check for new-style separators
Gerd Moellmann <gerd@gnu.org>
parents: 25627
diff changeset
1557 && bcmp (label, "--", 2) == 0
096f3085e905 (lw_separator_p): Check for new-style separators
Gerd Moellmann <gerd@gnu.org>
parents: 25627
diff changeset
1558 && label[2] != '-')
25562
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1559 {
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1560 /* Alternative, more Emacs-style names. */
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1561 static struct separator_table
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1562 {
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1563 char *name;
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1564 enum menu_separator type;
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1565 }
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1566 separator_names[] =
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1567 {
42120
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1568 {"space", SEPARATOR_NO_LINE},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1569 {"no-line", SEPARATOR_NO_LINE},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1570 {"single-line", SEPARATOR_SINGLE_LINE},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1571 {"double-line", SEPARATOR_DOUBLE_LINE},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1572 {"single-dashed-line", SEPARATOR_SINGLE_DASHED_LINE},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1573 {"double-dashed-line", SEPARATOR_DOUBLE_DASHED_LINE},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1574 {"shadow-etched-in", SEPARATOR_SHADOW_ETCHED_IN},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1575 {"shadow-etched-out", SEPARATOR_SHADOW_ETCHED_OUT},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1576 {"shadow-etched-in-dash", SEPARATOR_SHADOW_ETCHED_IN_DASH},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1577 {"shadow-etched-out-dash", SEPARATOR_SHADOW_ETCHED_OUT_DASH},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1578 {"shadow-double-etched-in", SEPARATOR_SHADOW_DOUBLE_ETCHED_IN},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1579 {"shadow-double-etched-out", SEPARATOR_SHADOW_DOUBLE_ETCHED_OUT},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1580 {"shadow-double-etched-in-dash", SEPARATOR_SHADOW_DOUBLE_ETCHED_IN_DASH},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1581 {"shadow-double-etched-out-dash",SEPARATOR_SHADOW_DOUBLE_ETCHED_OUT_DASH},
87f989b9dad5 (separator_names): Add missing braces around initializers.
Pavel Janík <Pavel@Janik.cz>
parents: 41765
diff changeset
1582 {0,0}
25562
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1583 };
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1584
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1585 int i;
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1586
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1587 label += 2;
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1588 for (i = 0; separator_names[i].name; ++i)
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1589 if (strcmp (label, separator_names[i].name) == 0)
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1590 {
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1591 separator_p = 1;
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1592 *type = separator_names[i].type;
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1593
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1594 /* If separator type is not supported under Motif,
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1595 use a similar one. */
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1596 if (motif_p && *type >= SEPARATOR_SHADOW_DOUBLE_ETCHED_IN)
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1597 *type -= 4;
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1598 break;
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1599 }
374f4e51615c (lw_separator_p): Add alternative separator type names.
Gerd Moellmann <gerd@gnu.org>
parents: 25036
diff changeset
1600 }
25036
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1601 else
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1602 {
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1603 /* Old-style separator, maybe. It's a separator if it contains
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1604 only dashes. */
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1605 while (*label == '-')
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1606 ++label;
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1607 separator_p = *label == 0;
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1608 *type = SEPARATOR_SHADOW_ETCHED_IN;
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1609 }
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1610
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1611 return separator_p;
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1612 }
b0ecf4f48090 (lw_separator_p): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21391
diff changeset
1613
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
1614 /* arch-tag: 3d730f36-a441-4a71-9971-48ef3b5a4d9f
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
1615 (do not change this comment) */