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.
7 This file is part of SXEmacs
9 SXEmacs is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
14 SXEmacs is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
23 /* Split out of window.h and window.c
24 by Kirill Katsnelson <kkm@kis.ru>, May 1998 */
26 #ifdef WINDOW_SLOT_DECLARATION
27 #define WINDOW_SLOT_ARRAY(slot, size, compare) WINDOW_SLOT (slot[size], compare)
29 #define WINDOW_SLOT_ARRAY(slot, size, compare) do { \
31 for (wsaidx = 0; wsaidx < size; wsaidx++) \
33 WINDOW_SLOT (slot[wsaidx], compare); \
38 #define EQUAL_WRAPPED(x,y) internal_equal ((x), (y), 0)
40 /*** Non-specifier vars of window and window config ***/
42 /* Non-nil means window is marked as dedicated. */
43 WINDOW_SLOT(dedicated, EQ);
45 /*** specifier values cached in the struct window ***/
47 /* Display-table to use for displaying chars in this window. */
48 WINDOW_SLOT(display_table, EQUAL_WRAPPED);
49 /* Thickness of modeline shadow, in pixels. If negative, draw
51 WINDOW_SLOT(modeline_shadow_thickness, EQ);
52 /* Non-nil means to display a modeline for the buffer. */
53 WINDOW_SLOT(has_modeline_p, EQ);
54 /* Thickness of vertical divider shadow, in pixels. If negative, draw as
56 WINDOW_SLOT(vertical_divider_shadow_thickness, EQ);
57 /* Divider surface width (not counting 3-d borders) */
58 WINDOW_SLOT(vertical_divider_line_width, EQ);
59 /* Spacing between outer edge of divider border and window edge */
60 WINDOW_SLOT(vertical_divider_spacing, EQ);
61 /* Whether vertical dividers are always displayed */
62 WINDOW_SLOT(vertical_divider_always_visible_p, EQ);
64 #ifdef HAVE_SCROLLBARS
65 /* Width of vertical scrollbars. */
66 WINDOW_SLOT(scrollbar_width, EQ);
67 /* Height of horizontal scrollbars. */
68 WINDOW_SLOT(scrollbar_height, EQ);
69 /* Whether the scrollbars are visible */
70 WINDOW_SLOT(horizontal_scrollbar_visible_p, EQ);
71 WINDOW_SLOT(vertical_scrollbar_visible_p, EQ);
72 /* Scrollbar positions */
73 WINDOW_SLOT(scrollbar_on_left_p, EQ);
74 WINDOW_SLOT(scrollbar_on_top_p, EQ);
75 /* Pointer to use for vertical and horizontal scrollbars. */
76 WINDOW_SLOT(scrollbar_pointer, EQ);
77 #endif /* HAVE_SCROLLBARS */
79 /* Toolbar specification for each of the four positions.
80 This is not a size hog because the value here is not copied,
81 and will be shared with the specs in the specifier. */
82 WINDOW_SLOT_ARRAY(toolbar, 4, EQUAL_WRAPPED);
83 /* Toolbar size for each of the four positions. */
84 WINDOW_SLOT_ARRAY(toolbar_size, 4, EQUAL_WRAPPED);
85 /* Toolbar border width for each of the four positions. */
86 WINDOW_SLOT_ARRAY(toolbar_border_width, 4, EQUAL_WRAPPED);
87 /* Toolbar visibility status for each of the four positions. */
88 WINDOW_SLOT_ARRAY(toolbar_visible_p, 4, EQUAL_WRAPPED);
89 /* Caption status of toolbar. */
90 WINDOW_SLOT(toolbar_buttons_captioned_p, EQ);
91 /* The following five don't really need to be cached except
92 that we need to know when they've changed. */
93 WINDOW_SLOT(default_toolbar, EQUAL_WRAPPED);
94 WINDOW_SLOT(default_toolbar_width, EQ);
95 WINDOW_SLOT(default_toolbar_height, EQ);
96 WINDOW_SLOT(default_toolbar_visible_p, EQ);
97 WINDOW_SLOT(default_toolbar_border_width, EQ);
98 #endif /* HAVE_TOOLBARS */
100 /* Gutter specification for each of the four positions.
101 This is not a size hog because the value here is not copied,
102 and will be shared with the specs in the specifier. */
103 WINDOW_SLOT_ARRAY(gutter, 4, EQUAL_WRAPPED);
104 /* Real (pre-calculated) gutter specification for each of the four positions.
105 This is not a specifier, it is calculated by the specifier change
107 WINDOW_SLOT_ARRAY(real_gutter, 4, EQUAL_WRAPPED);
108 /* Gutter size for each of the four positions. */
109 WINDOW_SLOT_ARRAY(gutter_size, 4, EQUAL_WRAPPED);
110 /* Real (pre-calculated) gutter size for each of the four positions.
111 This is not a specifier, it is calculated by the specifier change
113 WINDOW_SLOT_ARRAY(real_gutter_size, 4, EQUAL_WRAPPED);
114 /* Gutter border width for each of the four positions. */
115 WINDOW_SLOT_ARRAY(gutter_border_width, 4, EQUAL_WRAPPED);
116 /* Gutter visibility status for each of the four positions. */
117 WINDOW_SLOT_ARRAY(gutter_visible_p, 4, EQUAL_WRAPPED);
118 /* The following five don't really need to be cached except
119 that we need to know when they've changed. */
120 WINDOW_SLOT(default_gutter, EQUAL_WRAPPED);
121 WINDOW_SLOT(default_gutter_width, EQ);
122 WINDOW_SLOT(default_gutter_height, EQ);
123 WINDOW_SLOT(default_gutter_visible_p, EQ);
124 WINDOW_SLOT(default_gutter_border_width, EQ);
126 WINDOW_SLOT(left_margin_width, EQ);
127 WINDOW_SLOT(right_margin_width, EQ);
128 WINDOW_SLOT(minimum_line_ascent, EQ);
129 WINDOW_SLOT(minimum_line_descent, EQ);
130 WINDOW_SLOT(use_left_overflow, EQ);
131 WINDOW_SLOT(use_right_overflow, EQ);
133 /* Visibility of menubar. */
134 WINDOW_SLOT(menubar_visible_p, EQ);
135 #endif /* HAVE_MENUBARS */
136 WINDOW_SLOT(text_cursor_visible_p, EQ);
140 #undef WINDOW_SLOT_DECLARATION
142 #undef WINDOW_SLOT_ARRAY