(U-0002105A): New character.
[chise/xemacs-chise.git.1] / src / winslots.h
1 /* Definitions of marked slots in windows and window configs
2    Copyright (C) 1985, 1986, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
3    Copyright (C) 1994, 1995 Board of Trustees, University of Illinois.
4    Copyright (C) 1995, 1996 Ben Wing.
5    Copyright (C) 1996 Chuck Thompson.
6
7 This file is part of XEmacs.
8
9 XEmacs is free software; you can redistribute it and/or modify it
10 under the terms of the GNU General Public License as published by the
11 Free Software Foundation; either version 2, or (at your option) any
12 later version.
13
14 XEmacs is distributed in the hope that it will be useful, but WITHOUT
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
17 for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with XEmacs; see the file COPYING.  If not, write to
21 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
22 Boston, MA 02111-1307, USA.  */
23
24 /* Split out of window.h and window.c
25    by Kirill Katsnelson <kkm@kis.ru>, May 1998 */
26
27 #ifdef WINDOW_SLOT_DECLARATION
28 #define WINDOW_SLOT_ARRAY(slot, size, compare) WINDOW_SLOT (slot[size], compare)
29 #else
30 #define WINDOW_SLOT_ARRAY(slot, size, compare) do {     \
31   int wsaidx;                                           \
32   for (wsaidx = 0; wsaidx < size; wsaidx++)             \
33     {                                                   \
34       WINDOW_SLOT (slot[wsaidx], compare);              \
35     }                                                   \
36 } while (0);
37 #endif
38
39 #define EQUAL_WRAPPED(x,y) internal_equal ((x), (y), 0)
40
41   /*** Non-specifier vars of window and window config ***/
42
43   /* Non-nil means window is marked as dedicated.  */
44   WINDOW_SLOT (dedicated, EQ);
45
46   /*** specifier values cached in the struct window ***/
47
48   /* Display-table to use for displaying chars in this window. */
49   WINDOW_SLOT (display_table, EQUAL_WRAPPED);
50   /* Thickness of modeline shadow, in pixels.  If negative, draw
51      as recessed. */
52   WINDOW_SLOT (modeline_shadow_thickness, EQ);
53   /* Non-nil means to display a modeline for the buffer. */
54   WINDOW_SLOT (has_modeline_p, EQ);
55   /* Thickness of vertical divider shadow, in pixels.  If negative, draw as
56      recessed. */
57   WINDOW_SLOT (vertical_divider_shadow_thickness, EQ);
58   /* Divider surface width (not counting 3-d borders) */
59   WINDOW_SLOT (vertical_divider_line_width, EQ);
60   /* Spacing between outer edge of divider border and window edge */
61   WINDOW_SLOT (vertical_divider_spacing, EQ);
62   /* Whether vertical dividers are always displayed */
63   WINDOW_SLOT (vertical_divider_always_visible_p, EQ);
64
65 #ifdef HAVE_SCROLLBARS
66   /* Width of vertical scrollbars. */
67   WINDOW_SLOT (scrollbar_width, EQ);
68   /* Height of horizontal scrollbars. */
69   WINDOW_SLOT (scrollbar_height, EQ);
70   /* Whether the scrollbars are visible */
71   WINDOW_SLOT (horizontal_scrollbar_visible_p, EQ);
72   WINDOW_SLOT (vertical_scrollbar_visible_p, EQ);
73   /* Scrollbar positions */
74   WINDOW_SLOT (scrollbar_on_left_p, EQ);
75   WINDOW_SLOT (scrollbar_on_top_p, EQ);
76   /* Pointer to use for vertical and horizontal scrollbars. */
77   WINDOW_SLOT (scrollbar_pointer, EQ);
78 #endif /* HAVE_SCROLLBARS */
79 #ifdef HAVE_TOOLBARS
80   /* Toolbar specification for each of the four positions.
81      This is not a size hog because the value here is not copied,
82      and will be shared with the specs in the specifier. */
83   WINDOW_SLOT_ARRAY (toolbar, 4, EQUAL_WRAPPED);
84   /* Toolbar size for each of the four positions. */
85   WINDOW_SLOT_ARRAY (toolbar_size, 4, EQUAL_WRAPPED);
86   /* Toolbar border width for each of the four positions. */
87   WINDOW_SLOT_ARRAY (toolbar_border_width, 4, EQUAL_WRAPPED);
88   /* Toolbar visibility status for each of the four positions. */
89   WINDOW_SLOT_ARRAY (toolbar_visible_p, 4, EQUAL_WRAPPED);
90   /* Caption status of toolbar. */
91   WINDOW_SLOT (toolbar_buttons_captioned_p, EQ);
92   /* The following five don't really need to be cached except
93      that we need to know when they've changed. */
94   WINDOW_SLOT (default_toolbar, EQUAL_WRAPPED);
95   WINDOW_SLOT (default_toolbar_width, EQ);
96   WINDOW_SLOT (default_toolbar_height, EQ);
97   WINDOW_SLOT (default_toolbar_visible_p, EQ);
98   WINDOW_SLOT (default_toolbar_border_width, EQ);
99 #endif /* HAVE_TOOLBARS */
100
101   /* Gutter specification for each of the four positions.
102      This is not a size hog because the value here is not copied,
103      and will be shared with the specs in the specifier. */
104   WINDOW_SLOT_ARRAY (gutter, 4, EQUAL_WRAPPED);
105   /* Real (pre-calculated) gutter specification for each of the four positions.
106      This is not a specifier, it is calculated by the specifier change
107      functions. */
108   WINDOW_SLOT_ARRAY (real_gutter, 4, EQUAL_WRAPPED);
109   /* Gutter size for each of the four positions. */
110   WINDOW_SLOT_ARRAY (gutter_size, 4, EQUAL_WRAPPED);
111   /* Real (pre-calculated) gutter size for each of the four positions.
112      This is not a specifier, it is calculated by the specifier change
113      functions. */
114   WINDOW_SLOT_ARRAY (real_gutter_size, 4, EQUAL_WRAPPED);
115   /* Gutter border width for each of the four positions. */
116   WINDOW_SLOT_ARRAY (gutter_border_width, 4, EQUAL_WRAPPED);
117   /* Gutter visibility status for each of the four positions. */
118   WINDOW_SLOT_ARRAY (gutter_visible_p, 4, EQUAL_WRAPPED);
119   /* The following five don't really need to be cached except
120      that we need to know when they've changed. */
121   WINDOW_SLOT (default_gutter, EQUAL_WRAPPED);
122   WINDOW_SLOT (default_gutter_width, EQ);
123   WINDOW_SLOT (default_gutter_height, EQ);
124   WINDOW_SLOT (default_gutter_visible_p, EQ);
125   WINDOW_SLOT (default_gutter_border_width, EQ);
126 /* margins */
127   WINDOW_SLOT (left_margin_width, EQ);
128   WINDOW_SLOT (right_margin_width, EQ);
129   WINDOW_SLOT (minimum_line_ascent, EQ);
130   WINDOW_SLOT (minimum_line_descent, EQ);
131   WINDOW_SLOT (use_left_overflow, EQ);
132   WINDOW_SLOT (use_right_overflow, EQ);
133 #ifdef HAVE_MENUBARS
134   /* Visibility of menubar. */
135   WINDOW_SLOT (menubar_visible_p, EQ);
136 #endif /* HAVE_MENUBARS */
137   WINDOW_SLOT (text_cursor_visible_p, EQ);
138
139   /* Hara-kiri */
140 #undef EQUAL_WRAPPED
141 #undef WINDOW_SLOT_DECLARATION
142 #undef WINDOW_SLOT
143 #undef WINDOW_SLOT_ARRAY