comparison src/frame.h @ 10208:9e8f603bcff4

(struct frame): New field buffer_predicate. Move all the Lisp_Object fields to the top.
author Richard M. Stallman <rms@gnu.org>
date Wed, 21 Dec 1994 22:27:25 +0000
parents 8b5ae8d2eefc
children e4a6f55757a9
comparison
equal deleted inserted replaced
10207:e6618f52efe9 10208:9e8f603bcff4
41 41
42 struct frame 42 struct frame
43 { 43 {
44 EMACS_INT size; 44 EMACS_INT size;
45 struct Lisp_Vector *next; 45 struct Lisp_Vector *next;
46
47 /* All Lisp_Object components must come first.
48 Only EMACS_INT values can be intermixed with them.
49 That ensures they are all aligned normally. */
50
51 /* Name of this frame: a Lisp string. See also `explicit_name'. */
52 Lisp_Object name;
53
54 /* The frame which should receive keystrokes that occur in this
55 frame, or nil if they should go to the frame itself. This is
56 usually nil, but if the frame is minibufferless, we can use this
57 to redirect keystrokes to a surrogate minibuffer frame when
58 needed.
59
60 Note that a value of nil is different than having the field point
61 to the frame itself. Whenever the Fselect_frame function is used
62 to shift from one frame to the other, any redirections to the
63 original frame are shifted to the newly selected frame; if
64 focus_frame is nil, Fselect_frame will leave it alone. */
65 Lisp_Object focus_frame;
66
67 /* This frame's root window. Every frame has one.
68 If the frame has only a minibuffer window, this is it.
69 Otherwise, if the frame has a minibuffer window, this is its sibling. */
70 Lisp_Object root_window;
71
72 /* This frame's selected window.
73 Each frame has its own window hierarchy
74 and one of the windows in it is selected within the frame.
75 The selected window of the selected frame is Emacs's selected window. */
76 Lisp_Object selected_window;
77
78 /* This frame's minibuffer window.
79 Most frames have their own minibuffer windows,
80 but only the selected frame's minibuffer window
81 can actually appear to exist. */
82 Lisp_Object minibuffer_window;
83
84 /* Parameter alist of this frame.
85 These are the parameters specified when creating the frame
86 or modified with modify-frame-parameters. */
87 Lisp_Object param_alist;
88
89 /* List of scroll bars on this frame.
90 Actually, we don't specify exactly what is stored here at all; the
91 scroll bar implementation code can use it to store anything it likes.
92 This field is marked by the garbage collector. It is here
93 instead of in the `display' structure so that the garbage
94 collector doesn't need to look inside the window-system-dependent
95 structure. */
96 Lisp_Object scroll_bars;
97 Lisp_Object condemned_scroll_bars;
98
99 /* List of elements to display in the menu bar.
100 The elements have the form (KEY STRING . nil) to start;
101 when they are displayed, the hpos of the left edge goes in the cddr. */
102 Lisp_Object menu_bar_items;
103
104 /* Alist of elements (FACE-NAME . FACE-VECTOR-DATA). */
105 Lisp_Object face_alist;
106
107 /* A vector that records the entire structure of this frame's menu bar.
108 For the format of the data, see extensive comments in xmenu.c.
109 Only the X toolkit version uses this. */
110 Lisp_Object menu_bar_vector;
111 /* Number of elements in the vector that have meaningful data. */
112 EMACS_INT menu_bar_items_used;
113
114 /* Predicate for selecting buffers for other-buffer. */
115 Lisp_Object buffer_predicate;
116
117 /* Beyond here, there should be no more Lisp_Object components. */
118
46 119
47 /* glyphs as they appear on the frame */ 120 /* glyphs as they appear on the frame */
48 struct frame_glyphs *current_glyphs; 121 struct frame_glyphs *current_glyphs;
49 122
50 /* glyphs we'd like to appear on the frame */ 123 /* glyphs we'd like to appear on the frame */
82 EMACS_INT width; 155 EMACS_INT width;
83 156
84 /* New height and width for pending size change. 0 if no change pending. */ 157 /* New height and width for pending size change. 0 if no change pending. */
85 int new_height, new_width; 158 int new_height, new_width;
86 159
87 /* Name of this frame: a Lisp string. See also `explicit_name'. */
88 Lisp_Object name;
89
90 /* The frame which should receive keystrokes that occur in this
91 frame, or nil if they should go to the frame itself. This is
92 usually nil, but if the frame is minibufferless, we can use this
93 to redirect keystrokes to a surrogate minibuffer frame when
94 needed.
95
96 Note that a value of nil is different than having the field point
97 to the frame itself. Whenever the Fselect_frame function is used
98 to shift from one frame to the other, any redirections to the
99 original frame are shifted to the newly selected frame; if
100 focus_frame is nil, Fselect_frame will leave it alone. */
101 Lisp_Object focus_frame;
102
103 /* This frame's root window. Every frame has one.
104 If the frame has only a minibuffer window, this is it.
105 Otherwise, if the frame has a minibuffer window, this is its sibling. */
106 Lisp_Object root_window;
107
108 /* This frame's selected window.
109 Each frame has its own window hierarchy
110 and one of the windows in it is selected within the frame.
111 The selected window of the selected frame is Emacs's selected window. */
112 Lisp_Object selected_window;
113
114 /* This frame's minibuffer window.
115 Most frames have their own minibuffer windows,
116 but only the selected frame's minibuffer window
117 can actually appear to exist. */
118 Lisp_Object minibuffer_window;
119
120 /* Parameter alist of this frame.
121 These are the parameters specified when creating the frame
122 or modified with modify-frame-parameters. */
123 Lisp_Object param_alist;
124
125 /* List of scroll bars on this frame.
126 Actually, we don't specify exactly what is stored here at all; the
127 scroll bar implementation code can use it to store anything it likes.
128 This field is marked by the garbage collector. It is here
129 instead of in the `display' structure so that the garbage
130 collector doesn't need to look inside the window-system-dependent
131 structure. */
132 Lisp_Object scroll_bars;
133 Lisp_Object condemned_scroll_bars;
134
135 /* List of elements to display in the menu bar.
136 The elements have the form (KEY STRING . nil) to start;
137 when they are displayed, the hpos of the left edge goes in the cddr. */
138 Lisp_Object menu_bar_items;
139
140 /* Alist of elements (FACE-NAME . FACE-VECTOR-DATA). */
141 Lisp_Object face_alist;
142
143 /* The output method says how the contents of this frame 160 /* The output method says how the contents of this frame
144 are displayed. It could be using termcap, or using an X window. */ 161 are displayed. It could be using termcap, or using an X window. */
145 enum output_method output_method; 162 enum output_method output_method;
146 163
147 /* A structure of auxiliary data used for displaying the contents. 164 /* A structure of auxiliary data used for displaying the contents.
231 char *message_buf; 248 char *message_buf;
232 249
233 /* Nonnegative if current redisplay should not do scroll computation 250 /* Nonnegative if current redisplay should not do scroll computation
234 for lines beyond a certain vpos. This is the vpos. */ 251 for lines beyond a certain vpos. This is the vpos. */
235 int scroll_bottom_vpos; 252 int scroll_bottom_vpos;
236
237 /* A vector that records the entire structure of this frame's menu bar.
238 For the format of the data, see extensive comments in xmenu.c.
239 Only the X toolkit version uses this. */
240 Lisp_Object menu_bar_vector;
241 /* Number of elements in the vector that have meaningful data. */
242 int menu_bar_items_used;
243 253
244 /* Width of the scroll bar, in pixels and in characters. 254 /* Width of the scroll bar, in pixels and in characters.
245 scroll_bar_cols tracks scroll_bar_pixel_width if the latter is positive; 255 scroll_bar_cols tracks scroll_bar_pixel_width if the latter is positive;
246 a zero value in scroll_bar_pixel_width means to compute the actual width 256 a zero value in scroll_bar_pixel_width means to compute the actual width
247 on the fly, using scroll_bar_cols and the current font width. */ 257 on the fly, using scroll_bar_cols and the current font width. */