annotate src/frame.h @ 19670:4383d4a532de

Comment change.
author Richard M. Stallman <rms@gnu.org>
date Tue, 02 Sep 1997 05:05:37 +0000
parents 60053e19d485
children dc5e4b1ce93c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
1 /* Define frame-object for GNU Emacs.
7307
cd81dba38a49 Update copyright.
Karl Heuer <kwzh@gnu.org>
parents: 7094
diff changeset
2 Copyright (C) 1993, 1994 Free Software Foundation, Inc.
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
3
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
4 This file is part of GNU Emacs.
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
5
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
6 GNU Emacs is free software; you can redistribute it and/or modify
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
8 the Free Software Foundation; either version 2, or (at your option)
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9 any later version.
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11 GNU Emacs is distributed in the hope that it will be useful,
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14 GNU General Public License for more details.
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
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: 13568
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: 13568
diff changeset
19 Boston, MA 02111-1307, USA. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20
1776
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
21
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
22 /* Miscellanea. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
23
1776
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
24 /* Nonzero means don't assume anything about current
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
25 contents of actual terminal frame */
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
26 extern int frame_garbaged;
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
27
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
28 /* Nonzero means FRAME_MESSAGE_BUF (selected_frame) is being used by
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
29 print. */
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
30 extern int message_buf_print;
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
31
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
32
16051
ccf489f8596e Removed support for !MULTI_FRAME.
Karl Heuer <kwzh@gnu.org>
parents: 15390
diff changeset
33 /* The structure representing a frame. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
34
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
35 enum output_method
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16429
diff changeset
36 { output_termcap, output_x_window, output_msdos_raw, output_w32 };
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
37
16270
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
38 enum vertical_scroll_bar_type
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
39 { vertical_scroll_bar_none, vertical_scroll_bar_left, vertical_scroll_bar_right };
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
40
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
41 struct frame
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42 {
8826
9f5965fe4f6b (struct frame, selected_frame, last_nonminibuf_frame): Use EMACS_INT.
Richard M. Stallman <rms@gnu.org>
parents: 8233
diff changeset
43 EMACS_INT size;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44 struct Lisp_Vector *next;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45
10208
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
46 /* All Lisp_Object components must come first.
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
47 Only EMACS_INT values can be intermixed with them.
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
48 That ensures they are all aligned normally. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49
14215
f258b4fd44c0 (struct frame): New field `title'.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
50 /* Name of this frame: a Lisp string. It is used for looking up resources,
f258b4fd44c0 (struct frame): New field `title'.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
51 as well as for the title in some cases. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52 Lisp_Object name;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53
12274
f3383ea95b06 (struct frame): New field icon_name.
Richard M. Stallman <rms@gnu.org>
parents: 11493
diff changeset
54 /* The name to use for the icon, the last time
f3383ea95b06 (struct frame): New field icon_name.
Richard M. Stallman <rms@gnu.org>
parents: 11493
diff changeset
55 it was refreshed. nil means not explicitly specified. */
f3383ea95b06 (struct frame): New field icon_name.
Richard M. Stallman <rms@gnu.org>
parents: 11493
diff changeset
56 Lisp_Object icon_name;
f3383ea95b06 (struct frame): New field icon_name.
Richard M. Stallman <rms@gnu.org>
parents: 11493
diff changeset
57
14215
f258b4fd44c0 (struct frame): New field `title'.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
58 /* This is the frame title specified explicitly, if any.
f258b4fd44c0 (struct frame): New field `title'.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
59 Usually it is nil. */
f258b4fd44c0 (struct frame): New field `title'.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
60 Lisp_Object title;
f258b4fd44c0 (struct frame): New field `title'.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
61
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3518
diff changeset
62 /* The frame which should receive keystrokes that occur in this
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
63 frame, or nil if they should go to the frame itself. This is
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
64 usually nil, but if the frame is minibufferless, we can use this
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
65 to redirect keystrokes to a surrogate minibuffer frame when
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
66 needed.
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
67
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
68 Note that a value of nil is different than having the field point
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
69 to the frame itself. Whenever the Fselect_frame function is used
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
70 to shift from one frame to the other, any redirections to the
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
71 original frame are shifted to the newly selected frame; if
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
72 focus_frame is nil, Fselect_frame will leave it alone. */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
73 Lisp_Object focus_frame;
357
1ad871406b12 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 261
diff changeset
74
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
75 /* This frame's root window. Every frame has one.
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
76 If the frame has only a minibuffer window, this is it.
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
77 Otherwise, if the frame has a minibuffer window, this is its sibling. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78 Lisp_Object root_window;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
79
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
80 /* This frame's selected window.
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
81 Each frame has its own window hierarchy
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
82 and one of the windows in it is selected within the frame.
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
83 The selected window of the selected frame is Emacs's selected window. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
84 Lisp_Object selected_window;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
86 /* This frame's minibuffer window.
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
87 Most frames have their own minibuffer windows,
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
88 but only the selected frame's minibuffer window
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89 can actually appear to exist. */
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90 Lisp_Object minibuffer_window;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
92 /* Parameter alist of this frame.
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
93 These are the parameters specified when creating the frame
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
94 or modified with modify-frame-parameters. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
95 Lisp_Object param_alist;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
96
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
97 /* List of scroll bars on this frame.
1776
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
98 Actually, we don't specify exactly what is stored here at all; the
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
99 scroll bar implementation code can use it to store anything it likes.
1776
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
100 This field is marked by the garbage collector. It is here
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
101 instead of in the `display' structure so that the garbage
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
102 collector doesn't need to look inside the window-system-dependent
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
103 structure. */
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
104 Lisp_Object scroll_bars;
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
105 Lisp_Object condemned_scroll_bars;
1776
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
106
15098
a3c8776451ce Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 14215
diff changeset
107 /* Vector describing the items to display in the menu bar.
a3c8776451ce Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 14215
diff changeset
108 Each item has four elements in this vector.
a3c8776451ce Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 14215
diff changeset
109 They are KEY, STRING, SUBMAP, and HPOS.
a3c8776451ce Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 14215
diff changeset
110 (HPOS is not used in when the X toolkit is in use.)
a3c8776451ce Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 14215
diff changeset
111 There are four additional elements of nil at the end, to terminate. */
2148
9b8040c3f320 (FRAME_MENU_BAR_ITEMS): New macro (two versions).
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
112 Lisp_Object menu_bar_items;
9b8040c3f320 (FRAME_MENU_BAR_ITEMS): New macro (two versions).
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
113
2396
80bed5e0c8aa (struct frame): New field face_alist.
Richard M. Stallman <rms@gnu.org>
parents: 2252
diff changeset
114 /* Alist of elements (FACE-NAME . FACE-VECTOR-DATA). */
80bed5e0c8aa (struct frame): New field face_alist.
Richard M. Stallman <rms@gnu.org>
parents: 2252
diff changeset
115 Lisp_Object face_alist;
80bed5e0c8aa (struct frame): New field face_alist.
Richard M. Stallman <rms@gnu.org>
parents: 2252
diff changeset
116
10208
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
117 /* A vector that records the entire structure of this frame's menu bar.
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
118 For the format of the data, see extensive comments in xmenu.c.
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
119 Only the X toolkit version uses this. */
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
120 Lisp_Object menu_bar_vector;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
121 /* Number of elements in the vector that have meaningful data. */
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
122 EMACS_INT menu_bar_items_used;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
123
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
124 /* Predicate for selecting buffers for other-buffer. */
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
125 Lisp_Object buffer_predicate;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
126
17222
60053e19d485 (struct frame): New field buffer_list.
Richard M. Stallman <rms@gnu.org>
parents: 17033
diff changeset
127 /* List of buffers viewed in this frame, for other-buffer. */
60053e19d485 (struct frame): New field buffer_list.
Richard M. Stallman <rms@gnu.org>
parents: 17033
diff changeset
128 Lisp_Object buffer_list;
60053e19d485 (struct frame): New field buffer_list.
Richard M. Stallman <rms@gnu.org>
parents: 17033
diff changeset
129
60053e19d485 (struct frame): New field buffer_list.
Richard M. Stallman <rms@gnu.org>
parents: 17033
diff changeset
130 /* beyond here, there should be no more Lisp_Object components. */
10208
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
131
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
132
11493
7a15a07093c2 (struct frame): New member namebuf.
Karl Heuer <kwzh@gnu.org>
parents: 11351
diff changeset
133 /* A buffer to hold the frame's name. We can't use the Lisp string's
7a15a07093c2 (struct frame): New member namebuf.
Karl Heuer <kwzh@gnu.org>
parents: 11351
diff changeset
134 pointer (`name', above) because it might get relocated. */
7a15a07093c2 (struct frame): New member namebuf.
Karl Heuer <kwzh@gnu.org>
parents: 11351
diff changeset
135 char *namebuf;
7a15a07093c2 (struct frame): New member namebuf.
Karl Heuer <kwzh@gnu.org>
parents: 11351
diff changeset
136
10208
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
137 /* glyphs as they appear on the frame */
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
138 struct frame_glyphs *current_glyphs;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
139
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
140 /* glyphs we'd like to appear on the frame */
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
141 struct frame_glyphs *desired_glyphs;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
142
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
143 /* See do_line_insertion_deletion_costs for info on these arrays. */
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
144 /* Cost of inserting 1 line on this frame */
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
145 int *insert_line_cost;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
146 /* Cost of deleting 1 line on this frame */
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
147 int *delete_line_cost;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
148 /* Cost of inserting n lines on this frame */
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
149 int *insert_n_lines_cost;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
150 /* Cost of deleting n lines on this frame */
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
151 int *delete_n_lines_cost;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
152
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
153 /* glyphs for the mode line */
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
154 struct frame_glyphs *temp_glyphs;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
155
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
156 /* Intended cursor position of this frame.
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
157 Measured in characters, counting from upper left corner
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
158 within the frame. */
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
159 int cursor_x;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
160 int cursor_y;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
161
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
162 /* Actual cursor position of this frame, and the character under it.
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
163 (Not used for terminal frames.) */
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
164 int phys_cursor_x;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
165 int phys_cursor_y;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
166 /* This is handy for undrawing the cursor, because current_glyphs is
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
167 not always accurate when in do_scrolling. */
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
168 GLYPH phys_cursor_glyph;
16429
66d1b1af0991 (struct frame): New field phys_cursor_on.
Richard M. Stallman <rms@gnu.org>
parents: 16336
diff changeset
169 /* Nonzero means the cursor is displayed. */
66d1b1af0991 (struct frame): New field phys_cursor_on.
Richard M. Stallman <rms@gnu.org>
parents: 16336
diff changeset
170 int phys_cursor_on;
10208
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
171
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
172 /* Size of this frame, in units of characters. */
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
173 EMACS_INT height;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
174 EMACS_INT width;
16336
91846d76268d (struct frame): New field window_width.
Richard M. Stallman <rms@gnu.org>
parents: 16270
diff changeset
175 EMACS_INT window_width;
10208
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
176
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
177 /* New height and width for pending size change. 0 if no change pending. */
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
178 int new_height, new_width;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
179
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
180 /* The output method says how the contents of this frame
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181 are displayed. It could be using termcap, or using an X window. */
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 enum output_method output_method;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184 /* A structure of auxiliary data used for displaying the contents.
12665
427a3d6560bf (struct frame): Rename `display' member to `output_data'.
Richard M. Stallman <rms@gnu.org>
parents: 12543
diff changeset
185 struct x_output is used for X window frames;
13411
58efb2561888 (output_method): New method: output_win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 12665
diff changeset
186 it is defined in xterm.h.
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16429
diff changeset
187 struct w32_output is used for W32 window frames;
13411
58efb2561888 (output_method): New method: output_win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 12665
diff changeset
188 it is defined in w32term.h. */
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16429
diff changeset
189 union output_data { struct x_output *x; struct w32_output *w32; int nothing; } output_data;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190
11005
3155b56586e9 (struct frame): New member kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10665
diff changeset
191 #ifdef MULTI_KBOARD
3155b56586e9 (struct frame): New member kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10665
diff changeset
192 /* A pointer to the kboard structure associated with this frame.
3155b56586e9 (struct frame): New member kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10665
diff changeset
193 For termcap frames, this points to initial_kboard. For X frames,
3155b56586e9 (struct frame): New member kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10665
diff changeset
194 it will be the same as display.x->display_info->kboard. */
11351
beecf2972ed3 (struct frame): Use `struct kboard', not KBOARD.
Richard M. Stallman <rms@gnu.org>
parents: 11005
diff changeset
195 struct kboard *kboard;
11005
3155b56586e9 (struct frame): New member kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10665
diff changeset
196 #endif
3155b56586e9 (struct frame): New member kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10665
diff changeset
197
2148
9b8040c3f320 (FRAME_MENU_BAR_ITEMS): New macro (two versions).
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
198 /* Number of lines of menu bar. */
9b8040c3f320 (FRAME_MENU_BAR_ITEMS): New macro (two versions).
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
199 int menu_bar_lines;
9b8040c3f320 (FRAME_MENU_BAR_ITEMS): New macro (two versions).
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
200
13411
58efb2561888 (output_method): New method: output_win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 12665
diff changeset
201 #if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI)
5657
ac0f9da25111 (struct frame): New field external_menu_bar.
Richard M. Stallman <rms@gnu.org>
parents: 3649
diff changeset
202 /* Nonzero means using a menu bar that comes from the X toolkit. */
ac0f9da25111 (struct frame): New field external_menu_bar.
Richard M. Stallman <rms@gnu.org>
parents: 3649
diff changeset
203 int external_menu_bar;
ac0f9da25111 (struct frame): New field external_menu_bar.
Richard M. Stallman <rms@gnu.org>
parents: 3649
diff changeset
204 #endif
ac0f9da25111 (struct frame): New field external_menu_bar.
Richard M. Stallman <rms@gnu.org>
parents: 3649
diff changeset
205
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
206 /* Nonzero if last attempt at redisplay on this frame was preempted. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207 char display_preempted;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208
1653
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
209 /* visible is nonzero if the frame is currently displayed; we check
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
210 it to see if we should bother updating the frame's contents.
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
211 DON'T SET IT DIRECTLY; instead, use FRAME_SET_VISIBLE.
1653
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
212
1776
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
213 Note that, since invisible frames aren't updated, whenever a
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
214 frame becomes visible again, it must be marked as garbaged. The
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
215 FRAME_SAMPLE_VISIBILITY macro takes care of this.
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
216
1653
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
217 iconified is nonzero if the frame is currently iconified.
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
218
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
219 Asynchronous input handlers should NOT change these directly;
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
220 instead, they should change async_visible or async_iconified, and
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
221 let the FRAME_SAMPLE_VISIBILITY macro set visible and iconified
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
222 at the next redisplay.
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223
1653
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
224 These should probably be considered read-only by everyone except
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
225 FRAME_SAMPLE_VISIBILITY.
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
226
6183
242d3fed9285 Fix typo in comment.
Karl Heuer <kwzh@gnu.org>
parents: 5657
diff changeset
227 These two are mutually exclusive. They might both be zero, if the
1653
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
228 frame has been made invisible without an icon. */
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
229 char visible, iconified;
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
230
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
231 /* Asynchronous input handlers change these, and
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
232 FRAME_SAMPLE_VISIBILITY copies them into visible and iconified.
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
233 See FRAME_SAMPLE_VISIBILITY, below. */
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
234 #ifdef __STDC__
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
235 volatile
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
236 #endif
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
237 char async_visible, async_iconified;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
238
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
239 /* Nonzero if this frame should be redrawn. */
1653
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
240 #ifdef __STDC__
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
241 volatile
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
242 #endif
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
243 char garbaged;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
244
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
245 /* True if frame actually has a minibuffer window on it.
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
246 0 if using a minibuffer window that isn't on this frame. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
247 char has_minibuffer;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
248
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
249 /* 0 means, if this frame has just one window,
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
250 show no modeline for that window. */
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
251 char wants_modeline;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
252
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
253 /* Non-zero if the hardware device this frame is displaying on can
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
254 support scroll bars. */
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
255 char can_have_scroll_bars;
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
256
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
257 /* If can_have_scroll_bars is non-zero, this is non-zero if we should
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
258 actually display them on this frame. */
16270
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
259 enum vertical_scroll_bar_type vertical_scroll_bar_type;
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
260
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
261 /* Non-0 means raise this frame to the top of the heap when selected. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
262 char auto_raise;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
263
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
264 /* Non-0 means lower this frame to the bottom of the stack when left. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
265 char auto_lower;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
266
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
267 /* True if frame's root window can't be split. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268 char no_split;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
269
998
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 984
diff changeset
270 /* If this is set, then Emacs won't change the frame name to indicate
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 984
diff changeset
271 the current buffer, etcetera. If the user explicitly sets the frame
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 984
diff changeset
272 name, this gets set. If the user sets the name to Qnil, this is
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 984
diff changeset
273 cleared. */
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 984
diff changeset
274 char explicit_name;
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 984
diff changeset
275
10665
4e7da2fc451b (struct frame): New field window_sizes_changed.
Richard M. Stallman <rms@gnu.org>
parents: 10288
diff changeset
276 /* Nonzero if size of some window on this frame has changed. */
4e7da2fc451b (struct frame): New field window_sizes_changed.
Richard M. Stallman <rms@gnu.org>
parents: 10288
diff changeset
277 char window_sizes_changed;
4e7da2fc451b (struct frame): New field window_sizes_changed.
Richard M. Stallman <rms@gnu.org>
parents: 10288
diff changeset
278
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
279 /* Storage for messages to this frame. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
280 char *message_buf;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
281
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
282 /* Nonnegative if current redisplay should not do scroll computation
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
283 for lines beyond a certain vpos. This is the vpos. */
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
284 int scroll_bottom_vpos;
7094
b473ea5a3473 (struct frame): New fields menu_bar_vector and menu_bar_items_used.
Richard M. Stallman <rms@gnu.org>
parents: 6183
diff changeset
285
9164
fbdd7a2e62f4 (scroll_bar_pixel_width, scroll_bar_cols): Update comment.
Karl Heuer <kwzh@gnu.org>
parents: 8948
diff changeset
286 /* Width of the scroll bar, in pixels and in characters.
fbdd7a2e62f4 (scroll_bar_pixel_width, scroll_bar_cols): Update comment.
Karl Heuer <kwzh@gnu.org>
parents: 8948
diff changeset
287 scroll_bar_cols tracks scroll_bar_pixel_width if the latter is positive;
fbdd7a2e62f4 (scroll_bar_pixel_width, scroll_bar_cols): Update comment.
Karl Heuer <kwzh@gnu.org>
parents: 8948
diff changeset
288 a zero value in scroll_bar_pixel_width means to compute the actual width
fbdd7a2e62f4 (scroll_bar_pixel_width, scroll_bar_cols): Update comment.
Karl Heuer <kwzh@gnu.org>
parents: 8948
diff changeset
289 on the fly, using scroll_bar_cols and the current font width. */
8948
5f79babaa7d2 (FRAME_SCROLL_BAR_PIXEL_WIDTH): New macro, supersedes
Karl Heuer <kwzh@gnu.org>
parents: 8900
diff changeset
290 int scroll_bar_pixel_width;
5f79babaa7d2 (FRAME_SCROLL_BAR_PIXEL_WIDTH): New macro, supersedes
Karl Heuer <kwzh@gnu.org>
parents: 8900
diff changeset
291 int scroll_bar_cols;
10120
8b5ae8d2eefc (struct frame): New field cost_calculation_baud_rate.
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
292
8b5ae8d2eefc (struct frame): New field cost_calculation_baud_rate.
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
293 /* The baud rate that was used to calculate costs for this frame. */
8b5ae8d2eefc (struct frame): New field cost_calculation_baud_rate.
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
294 int cost_calculation_baud_rate;
12543
13aa3e939a4d (struct frame): New field `mouse_moved'.
Karl Heuer <kwzh@gnu.org>
parents: 12274
diff changeset
295
17033
ffd6878cae02 (struct frame): New member `fontset_data'.
Karl Heuer <kwzh@gnu.org>
parents: 16588
diff changeset
296 /* A pointer to the data structure containing all information of
ffd6878cae02 (struct frame): New member `fontset_data'.
Karl Heuer <kwzh@gnu.org>
parents: 16588
diff changeset
297 fontsets associated with this frame. See the comments in
ffd6878cae02 (struct frame): New member `fontset_data'.
Karl Heuer <kwzh@gnu.org>
parents: 16588
diff changeset
298 fontset.h for more detail. */
ffd6878cae02 (struct frame): New member `fontset_data'.
Karl Heuer <kwzh@gnu.org>
parents: 16588
diff changeset
299 struct fontset_data *fontset_data;
ffd6878cae02 (struct frame): New member `fontset_data'.
Karl Heuer <kwzh@gnu.org>
parents: 16588
diff changeset
300
12543
13aa3e939a4d (struct frame): New field `mouse_moved'.
Karl Heuer <kwzh@gnu.org>
parents: 12274
diff changeset
301 /* Nonzero if the mouse has moved on this display
13aa3e939a4d (struct frame): New field `mouse_moved'.
Karl Heuer <kwzh@gnu.org>
parents: 12274
diff changeset
302 since the last time we checked. */
13aa3e939a4d (struct frame): New field `mouse_moved'.
Karl Heuer <kwzh@gnu.org>
parents: 12274
diff changeset
303 char mouse_moved;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
304 };
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
305
16051
ccf489f8596e Removed support for !MULTI_FRAME.
Karl Heuer <kwzh@gnu.org>
parents: 15390
diff changeset
306 #ifdef MULTI_KBOARD
11005
3155b56586e9 (struct frame): New member kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10665
diff changeset
307 #define FRAME_KBOARD(f) ((f)->kboard)
3155b56586e9 (struct frame): New member kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10665
diff changeset
308 #else
3155b56586e9 (struct frame): New member kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10665
diff changeset
309 #define FRAME_KBOARD(f) (&the_only_kboard)
3155b56586e9 (struct frame): New member kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10665
diff changeset
310 #endif
3155b56586e9 (struct frame): New member kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10665
diff changeset
311
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
312 typedef struct frame *FRAME_PTR;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
313
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
314 #define XFRAME(p) ((struct frame *) XPNTR (p))
10288
e4a6f55757a9 (XSETFRAME): Use pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10208
diff changeset
315 #define XSETFRAME(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_FRAME))
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
316
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
317 #define WINDOW_FRAME(w) (w)->frame
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
318
13411
58efb2561888 (output_method): New method: output_win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 12665
diff changeset
319 #define FRAME_X_P(f) ((f)->output_method == output_x_window)
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16429
diff changeset
320 #define FRAME_W32_P(f) ((f)->output_method == output_w32)
15390
d01198d2bc40 (FRAME_MSDOS_P): A new macro for MSDOS frames.
Richard M. Stallman <rms@gnu.org>
parents: 15098
diff changeset
321 #define FRAME_MSDOS_P(f) ((f)->output_method == output_msdos_raw)
13411
58efb2561888 (output_method): New method: output_win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 12665
diff changeset
322
58efb2561888 (output_method): New method: output_win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 12665
diff changeset
323 /* FRAME_WINDOW_P tests whether the frame is a window, and is
58efb2561888 (output_method): New method: output_win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 12665
diff changeset
324 defined to be the predicate for the window system being used. */
58efb2561888 (output_method): New method: output_win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 12665
diff changeset
325 #ifdef HAVE_X_WINDOWS
58efb2561888 (output_method): New method: output_win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 12665
diff changeset
326 #define FRAME_WINDOW_P(f) FRAME_X_P (f)
58efb2561888 (output_method): New method: output_win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 12665
diff changeset
327 #endif
58efb2561888 (output_method): New method: output_win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 12665
diff changeset
328 #ifdef HAVE_NTGUI
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16429
diff changeset
329 #define FRAME_WINDOW_P(f) FRAME_W32_P (f)
13411
58efb2561888 (output_method): New method: output_win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 12665
diff changeset
330 #endif
13568
01ec2620dd87 (FRAME_WINDOW_P): Always define it one way or another.
Richard M. Stallman <rms@gnu.org>
parents: 13411
diff changeset
331 #ifndef FRAME_WINDOW_P
01ec2620dd87 (FRAME_WINDOW_P): Always define it one way or another.
Richard M. Stallman <rms@gnu.org>
parents: 13411
diff changeset
332 #define FRAME_WINDOW_P(f) (0)
01ec2620dd87 (FRAME_WINDOW_P): Always define it one way or another.
Richard M. Stallman <rms@gnu.org>
parents: 13411
diff changeset
333 #endif
13411
58efb2561888 (output_method): New method: output_win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 12665
diff changeset
334
12665
427a3d6560bf (struct frame): Rename `display' member to `output_data'.
Richard M. Stallman <rms@gnu.org>
parents: 12543
diff changeset
335 #define FRAME_LIVE_P(f) ((f)->output_data.nothing != 0)
979
268c7b5da35b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 765
diff changeset
336 #define FRAME_TERMCAP_P(f) ((f)->output_method == output_termcap)
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
337 #define FRAME_MINIBUF_ONLY_P(f) \
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
338 EQ (FRAME_ROOT_WINDOW (f), FRAME_MINIBUF_WINDOW (f))
979
268c7b5da35b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 765
diff changeset
339 #define FRAME_HAS_MINIBUF_P(f) ((f)->has_minibuffer)
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
340 #define FRAME_CURRENT_GLYPHS(f) (f)->current_glyphs
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
341 #define FRAME_DESIRED_GLYPHS(f) (f)->desired_glyphs
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
342 #define FRAME_TEMP_GLYPHS(f) (f)->temp_glyphs
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
343 #define FRAME_HEIGHT(f) (f)->height
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
344 #define FRAME_WIDTH(f) (f)->width
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
345 #define FRAME_NEW_HEIGHT(f) (f)->new_height
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
346 #define FRAME_NEW_WIDTH(f) (f)->new_width
2148
9b8040c3f320 (FRAME_MENU_BAR_ITEMS): New macro (two versions).
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
347 #define FRAME_MENU_BAR_LINES(f) (f)->menu_bar_lines
13411
58efb2561888 (output_method): New method: output_win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 12665
diff changeset
348 #if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI)
5657
ac0f9da25111 (struct frame): New field external_menu_bar.
Richard M. Stallman <rms@gnu.org>
parents: 3649
diff changeset
349 #define FRAME_EXTERNAL_MENU_BAR(f) (f)->external_menu_bar
8233
5b063488f2f8 (FRAME_EXTERNAL_MENU_BAR) [!USE_X_TOOLKIT]: Give zero.
Richard M. Stallman <rms@gnu.org>
parents: 7307
diff changeset
350 #else
5b063488f2f8 (FRAME_EXTERNAL_MENU_BAR) [!USE_X_TOOLKIT]: Give zero.
Richard M. Stallman <rms@gnu.org>
parents: 7307
diff changeset
351 #define FRAME_EXTERNAL_MENU_BAR(f) 0
5b063488f2f8 (FRAME_EXTERNAL_MENU_BAR) [!USE_X_TOOLKIT]: Give zero.
Richard M. Stallman <rms@gnu.org>
parents: 7307
diff changeset
352 #endif
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
353 #define FRAME_CURSOR_X(f) (f)->cursor_x
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
354 #define FRAME_CURSOR_Y(f) (f)->cursor_y
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
355 #define FRAME_VISIBLE_P(f) ((f)->visible != 0)
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
356 #define FRAME_SET_VISIBLE(f,p) \
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
357 ((f)->async_visible = (p), FRAME_SAMPLE_VISIBILITY (f))
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
358 #define SET_FRAME_GARBAGED(f) (frame_garbaged = 1, f->garbaged = 1)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
359 #define FRAME_GARBAGED_P(f) (f)->garbaged
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
360 #define FRAME_NO_SPLIT_P(f) (f)->no_split
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
361 #define FRAME_WANTS_MODELINE_P(f) (f)->wants_modeline
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
362 #define FRAME_ICONIFIED_P(f) (f)->iconified
10665
4e7da2fc451b (struct frame): New field window_sizes_changed.
Richard M. Stallman <rms@gnu.org>
parents: 10288
diff changeset
363 #define FRAME_WINDOW_SIZES_CHANGED(f) (f)->window_sizes_changed
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
364 #define FRAME_MINIBUF_WINDOW(f) (f)->minibuffer_window
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
365 #define FRAME_ROOT_WINDOW(f) (f)->root_window
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
366 #define FRAME_SELECTED_WINDOW(f) (f)->selected_window
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
367 #define SET_GLYPHS_FRAME(glyphs,frame) ((glyphs)->frame = (frame))
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
368 #define FRAME_INSERT_COST(f) (f)->insert_line_cost
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
369 #define FRAME_DELETE_COST(f) (f)->delete_line_cost
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
370 #define FRAME_INSERTN_COST(f) (f)->insert_n_lines_cost
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
371 #define FRAME_DELETEN_COST(f) (f)->delete_n_lines_cost
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
372 #define FRAME_MESSAGE_BUF(f) (f)->message_buf
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
373 #define FRAME_SCROLL_BOTTOM_VPOS(f) (f)->scroll_bottom_vpos
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
374 #define FRAME_FOCUS_FRAME(f) (f)->focus_frame
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
375 #define FRAME_CAN_HAVE_SCROLL_BARS(f) ((f)->can_have_scroll_bars)
16270
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
376 #define FRAME_VERTICAL_SCROLL_BAR_TYPE(f) ((f)->vertical_scroll_bar_type)
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
377 #define FRAME_HAS_VERTICAL_SCROLL_BARS(f) \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
378 ((f)->vertical_scroll_bar_type != vertical_scroll_bar_none)
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
379 #define FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT(f) \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
380 ((f)->vertical_scroll_bar_type == vertical_scroll_bar_left)
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
381 #define FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT(f) \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
382 ((f)->vertical_scroll_bar_type == vertical_scroll_bar_right)
8948
5f79babaa7d2 (FRAME_SCROLL_BAR_PIXEL_WIDTH): New macro, supersedes
Karl Heuer <kwzh@gnu.org>
parents: 8900
diff changeset
383 #define FRAME_SCROLL_BAR_PIXEL_WIDTH(f) ((f)->scroll_bar_pixel_width)
5f79babaa7d2 (FRAME_SCROLL_BAR_PIXEL_WIDTH): New macro, supersedes
Karl Heuer <kwzh@gnu.org>
parents: 8900
diff changeset
384 #define FRAME_SCROLL_BAR_COLS(f) ((f)->scroll_bar_cols)
16270
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
385 #define FRAME_LEFT_SCROLL_BAR_WIDTH(f) \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
386 (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT (f) \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
387 ? FRAME_SCROLL_BAR_COLS (f) \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
388 : 0)
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
389 #define FRAME_SCROLL_BAR_WIDTH(f) \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
390 (FRAME_HAS_VERTICAL_SCROLL_BARS (f) \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
391 ? FRAME_SCROLL_BAR_COLS (f) \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
392 : 0)
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
393 #define FRAME_WINDOW_WIDTH_ARG(f, width) \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
394 ((width) + FRAME_SCROLL_BAR_WIDTH (f))
16336
91846d76268d (struct frame): New field window_width.
Richard M. Stallman <rms@gnu.org>
parents: 16270
diff changeset
395 #define FRAME_WINDOW_WIDTH(f) ((f)->window_width)
91846d76268d (struct frame): New field window_width.
Richard M. Stallman <rms@gnu.org>
parents: 16270
diff changeset
396 #define SET_FRAME_WIDTH(f,val) ((f)->width = (val), (f)->window_width = FRAME_WINDOW_WIDTH_ARG (f, (f)->width))
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
397 #define FRAME_SCROLL_BARS(f) ((f)->scroll_bars)
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
398 #define FRAME_CONDEMNED_SCROLL_BARS(f) ((f)->condemned_scroll_bars)
2148
9b8040c3f320 (FRAME_MENU_BAR_ITEMS): New macro (two versions).
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
399 #define FRAME_MENU_BAR_ITEMS(f) ((f)->menu_bar_items)
10120
8b5ae8d2eefc (struct frame): New field cost_calculation_baud_rate.
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
400 #define FRAME_COST_BAUD_RATE(f) ((f)->cost_calculation_baud_rate)
17033
ffd6878cae02 (struct frame): New member `fontset_data'.
Karl Heuer <kwzh@gnu.org>
parents: 16588
diff changeset
401 #define FRAME_FONTSET_DATA(f) ((f)->fontset_data)
ffd6878cae02 (struct frame): New member `fontset_data'.
Karl Heuer <kwzh@gnu.org>
parents: 16588
diff changeset
402
ffd6878cae02 (struct frame): New member `fontset_data'.
Karl Heuer <kwzh@gnu.org>
parents: 16588
diff changeset
403 /* Return the size of message_buf of the frame F. We multiply the
ffd6878cae02 (struct frame): New member `fontset_data'.
Karl Heuer <kwzh@gnu.org>
parents: 16588
diff changeset
404 width of the frame by 4 because multi-byte form may require at most
ffd6878cae02 (struct frame): New member `fontset_data'.
Karl Heuer <kwzh@gnu.org>
parents: 16588
diff changeset
405 4-byte for a character. */
ffd6878cae02 (struct frame): New member `fontset_data'.
Karl Heuer <kwzh@gnu.org>
parents: 16588
diff changeset
406 #define FRAME_MESSAGE_BUF_SIZE(f) (((int) (f)->width) * 4)
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
407
1653
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
408 /* Emacs's redisplay code could become confused if a frame's
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
409 visibility changes at arbitrary times. For example, if a frame is
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
410 visible while the desired glyphs are being built, but becomes
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
411 invisible before they are updated, then some rows of the
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
412 desired_glyphs will be left marked as enabled after redisplay is
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
413 complete, which should never happen. The next time the frame
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
414 becomes visible, redisplay will probably barf.
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
415
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
416 Currently, there are no similar situations involving iconified, but
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
417 the principle is the same.
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
418
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
419 So instead of having asynchronous input handlers directly set and
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
420 clear the frame's visibility and iconification flags, they just set
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
421 the async_visible and async_iconified flags; the redisplay code
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
422 calls the FRAME_SAMPLE_VISIBILITY macro before doing any redisplay,
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
423 which sets visible and iconified from their asynchronous
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
424 counterparts.
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
425
1776
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
426 Synchronous code must use the FRAME_SET_VISIBLE macro.
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
427
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
428 Also, if a frame used to be invisible, but has just become visible,
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
429 it must be marked as garbaged, since redisplay hasn't been keeping
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
430 up its contents. */
1653
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
431 #define FRAME_SAMPLE_VISIBILITY(f) \
1776
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
432 (((f)->async_visible && ! (f)->visible) ? SET_FRAME_GARBAGED (f) : 0, \
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
433 (f)->visible = (f)->async_visible, \
1653
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
434 (f)->iconified = (f)->async_iconified)
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
435
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
436 #define CHECK_FRAME(x, i) \
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 385
diff changeset
437 { \
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
438 if (! FRAMEP (x)) \
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
439 x = wrong_type_argument (Qframep, (x)); \
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 385
diff changeset
440 }
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 385
diff changeset
441
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
442 #define CHECK_LIVE_FRAME(x, i) \
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 385
diff changeset
443 { \
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
444 if (! FRAMEP (x) \
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
445 || ! FRAME_LIVE_P (XFRAME (x))) \
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1776
diff changeset
446 x = wrong_type_argument (Qframe_live_p, (x)); \
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 385
diff changeset
447 }
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 385
diff changeset
448
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
449 /* FOR_EACH_FRAME (LIST_VAR, FRAME_VAR) followed by a statement is a
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
450 `for' loop which iterates over the elements of Vframe_list. The
2252
9793d8654e23 * frame.h (FOR_EACH_FRAME): Change the definition so that
Jim Blandy <jimb@redhat.com>
parents: 2199
diff changeset
451 loop will set FRAME_VAR, a Lisp_Object, to each frame in
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
452 Vframe_list in succession and execute the statement. LIST_VAR
2252
9793d8654e23 * frame.h (FOR_EACH_FRAME): Change the definition so that
Jim Blandy <jimb@redhat.com>
parents: 2199
diff changeset
453 should be a Lisp_Object too; it is used to iterate through the
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
454 Vframe_list.
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
455
16051
ccf489f8596e Removed support for !MULTI_FRAME.
Karl Heuer <kwzh@gnu.org>
parents: 15390
diff changeset
456 This macro is a holdover from a time when multiple frames weren't always
ccf489f8596e Removed support for !MULTI_FRAME.
Karl Heuer <kwzh@gnu.org>
parents: 15390
diff changeset
457 supported. An alternate definition of the macro would expand to
ccf489f8596e Removed support for !MULTI_FRAME.
Karl Heuer <kwzh@gnu.org>
parents: 15390
diff changeset
458 something which executes the statement once. */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
459 #define FOR_EACH_FRAME(list_var, frame_var) \
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
460 for ((list_var) = Vframe_list; \
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
461 (CONSP (list_var) \
2252
9793d8654e23 * frame.h (FOR_EACH_FRAME): Change the definition so that
Jim Blandy <jimb@redhat.com>
parents: 2199
diff changeset
462 && (frame_var = XCONS (list_var)->car, 1)); \
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
463 list_var = XCONS (list_var)->cdr)
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
464
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
465
3649
e52308087b66 (Qicon): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
466 extern Lisp_Object Qframep, Qframe_live_p, Qicon;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
467
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
468 extern struct frame *selected_frame;
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
469 extern struct frame *last_nonminibuf_frame;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
470
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
471 extern struct frame *make_terminal_frame ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
472 extern struct frame *make_frame ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
473 extern struct frame *make_minibuffer_frame ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
474 extern struct frame *make_frame_without_minibuffer ();
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
475
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
476 extern Lisp_Object Vframe_list;
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
477 extern Lisp_Object Vdefault_frame_alist;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
478
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
479 extern Lisp_Object Vterminal_frame;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
480
16051
ccf489f8596e Removed support for !MULTI_FRAME.
Karl Heuer <kwzh@gnu.org>
parents: 15390
diff changeset
481 /* Device-independent scroll bar stuff. */
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
482
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
483 /* Return the starting column (zero-based) of the vertical scroll bar
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
484 for window W. The column before this one is the last column we can
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
485 use for text. If the window touches the right edge of the frame,
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
486 we have extra space allocated for it. Otherwise, the scroll bar
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
487 takes over the window's rightmost columns. */
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
488 #define WINDOW_VERTICAL_SCROLL_BAR_COLUMN(w) \
16270
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
489 (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT (XFRAME (WINDOW_FRAME (w))) ? \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
490 (((XINT ((w)->left) + XINT ((w)->width)) \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
491 < FRAME_WIDTH (XFRAME (WINDOW_FRAME (w)))) \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
492 ? (XINT ((w)->left) + XINT ((w)->width) \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
493 - FRAME_SCROLL_BAR_COLS (XFRAME (WINDOW_FRAME (w)))) \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
494 : FRAME_WIDTH (XFRAME (WINDOW_FRAME (w)))) \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
495 : XINT ((w)->left))
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
496
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
497 /* Return the height in lines of the vertical scroll bar in w. If the
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
498 window has a mode line, don't make the scroll bar extend that far. */
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
499 #define WINDOW_VERTICAL_SCROLL_BAR_HEIGHT(w) (window_internal_height (w))