annotate src/frame.h @ 2012:a6d7c2f161cf

(DISP_INVIS_VECTOR): Renamed from DISP_INVIS_ROPE. (DISP_CHAR_VECTOR): Renamed from DISP_CHAR_ROPE. All callers changed.
author Richard M. Stallman <rms@gnu.org>
date Fri, 05 Mar 1993 23:52:24 +0000
parents 73ce9dd21093
children 9b8040c3f320
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.
1776
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
2 Copyright (C) 1988, 1992, 1993 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
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19
1776
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
20
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
21 /* Miscellanea. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
22
1776
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
23 /* 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
24 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
25 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
26
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
27 /* 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
28 print. */
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
29 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
30
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
31
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
32 /* The structure representing a frame.
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
33
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
34 We declare this even if MULTI_FRAME is not defined, because when
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
35 we lack multi-frame support, we use one instance of this structure
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
36 to represent the one frame we support. This is cleaner than
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
37 having miscellaneous random variables scattered about. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
38
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
39 enum output_method
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
40 { output_termcap, output_x_window };
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
42 struct frame
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
43 {
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44 int size;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
45 struct Lisp_Vector *next;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
46
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
47 /* glyphs as they appear on the frame */
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
48 struct frame_glyphs *current_glyphs;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
50 /* glyphs we'd like to appear on the frame */
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
51 struct frame_glyphs *desired_glyphs;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
53 /* See do_line_insertion_deletion_costs for info on these arrays. */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
54 /* Cost of inserting 1 line on this frame */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
55 int *insert_line_cost;
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
56 /* Cost of deleting 1 line on this frame */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57 int *delete_line_cost;
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
58 /* Cost of inserting n lines on this frame */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59 int *insert_n_lines_cost;
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
60 /* Cost of deleting n lines on this frame */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61 int *delete_n_lines_cost;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63 /* glyphs for the mode line */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
64 struct frame_glyphs *temp_glyphs;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
66 /* Intended cursor position of this frame.
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 Measured in characters, counting from upper left corner
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
68 within the frame. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69 int cursor_x;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70 int cursor_y;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
72 /* Actual cursor position of this frame, and the character under it.
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
73 (Not used for terminal frames.) */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
74 int phys_cursor_x;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75 int phys_cursor_y;
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 385
diff changeset
76 /* This is handy for undrawing the cursor, because current_glyphs is
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 385
diff changeset
77 not always accurate when in do_scrolling. */
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 385
diff changeset
78 GLYPH phys_cursor_glyph;
261
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 /* Size of this frame, in units of characters. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
81 int height;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82 int width;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
83
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
84 /* New height and width for pending size change. 0 if no change pending. */
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85 int new_height, new_width;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86
998
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 984
diff changeset
87 /* Name of this frame: a Lisp string. See also `explicit_name'. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
88 Lisp_Object name;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
90 /* The frame which should recieve 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
91 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
92 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
93 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
94 needed.
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
95
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
96 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
97 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
98 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
99 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
100 focus_frame is nil, Fselect_frame will leave it alone. */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
101 Lisp_Object focus_frame;
357
1ad871406b12 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 261
diff changeset
102
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
103 /* This frame's root window. Every frame has one.
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
104 If the frame has only a minibuffer window, this is it.
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
105 Otherwise, if the frame has a minibuffer window, this is its sibling. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
106 Lisp_Object root_window;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
107
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
108 /* This frame's selected window.
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
109 Each frame has its own window hierarchy
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
110 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
111 The selected window of the selected frame is Emacs's selected window. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
112 Lisp_Object selected_window;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
114 /* This frame's minibuffer window.
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
115 Most frames have their own minibuffer windows,
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
116 but only the selected frame's minibuffer window
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
117 can actually appear to exist. */
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
118 Lisp_Object minibuffer_window;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
119
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
120 /* Parameter alist of this frame.
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
121 These are the parameters specified when creating the frame
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
122 or modified with modify-frame-parameters. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123 Lisp_Object param_alist;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
125 /* 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
126 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
127 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
128 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
129 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
130 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
131 structure. */
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
132 Lisp_Object scroll_bars;
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
133 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
134
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
135 /* The output method says how the contents of this frame
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 are displayed. It could be using termcap, or using an X window. */
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137 enum output_method output_method;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
138
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139 /* A structure of auxiliary data used for displaying the contents.
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
140 struct x_display is used for X window frames;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141 it is defined in xterm.h. */
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142 union display { struct x_display *x; int nothing; } display;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
144 /* Nonzero if last attempt at redisplay on this frame was preempted. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145 char display_preempted;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
146
1653
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
147 /* 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
148 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
149 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
150
1776
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
151 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
152 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
153 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
154
1653
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
155 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
156
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
157 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
158 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
159 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
160 at the next redisplay.
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161
1653
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
162 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
163 FRAME_SAMPLE_VISIBILITY.
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
164
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
165 This two are mutually exclusive. They might both be zero, if the
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
166 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
167 char visible, iconified;
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
168
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
169 /* 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
170 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
171 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
172 #ifdef __STDC__
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
173 volatile
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
174 #endif
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
175 char async_visible, async_iconified;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
177 /* 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
178 #ifdef __STDC__
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
179 volatile
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
180 #endif
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181 char garbaged;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
183 /* True if frame actually has a minibuffer window on it.
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
184 0 if using a minibuffer window that isn't on this frame. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 char has_minibuffer;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
187 /* 0 means, if this frame has just one window,
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 show no modeline for that window. */
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189 char wants_modeline;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
191 /* 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
192 support scroll bars. */
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
193 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
194
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
195 /* 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
196 actually display them on this frame. */
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
197 char has_vertical_scroll_bars;
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
198
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
199 /* 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
200 char auto_raise;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
202 /* 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
203 char auto_lower;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
205 /* True if frame's root window can't be split. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206 char no_split;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207
998
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 984
diff changeset
208 /* 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
209 the current buffer, etcetera. If the user explicitly sets the frame
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 984
diff changeset
210 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
211 cleared. */
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 984
diff changeset
212 char explicit_name;
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 984
diff changeset
213
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
214 /* Storage for messages to this frame. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215 char *message_buf;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
216
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217 /* Nonnegative if current redisplay should not do scroll computation
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218 for lines beyond a certain vpos. This is the vpos. */
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219 int scroll_bottom_vpos;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220 };
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
222 #ifdef MULTI_FRAME
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
223
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
224 typedef struct frame *FRAME_PTR;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
226 #define XFRAME(p) ((struct frame *) XPNTR (p))
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
227 #define XSETFRAME(p, v) ((struct frame *) XSETPNTR (p, v))
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
229 #define WINDOW_FRAME(w) (w)->frame
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
231 #define FRAMEP(f) (XTYPE(f) == Lisp_Frame)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
232 #define FRAME_LIVE_P(f) ((f)->display.nothing != 0)
979
268c7b5da35b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 765
diff changeset
233 #define FRAME_TERMCAP_P(f) ((f)->output_method == output_termcap)
268c7b5da35b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 765
diff changeset
234 #define FRAME_X_P(f) ((f)->output_method == output_x_window)
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
235 #define FRAME_MINIBUF_ONLY_P(f) \
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
236 EQ (FRAME_ROOT_WINDOW (f), FRAME_MINIBUF_WINDOW (f))
979
268c7b5da35b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 765
diff changeset
237 #define FRAME_HAS_MINIBUF_P(f) ((f)->has_minibuffer)
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
238 #define FRAME_CURRENT_GLYPHS(f) (f)->current_glyphs
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
239 #define FRAME_DESIRED_GLYPHS(f) (f)->desired_glyphs
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
240 #define FRAME_TEMP_GLYPHS(f) (f)->temp_glyphs
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
241 #define FRAME_HEIGHT(f) (f)->height
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
242 #define FRAME_WIDTH(f) (f)->width
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
243 #define FRAME_NEW_HEIGHT(f) (f)->new_height
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
244 #define FRAME_NEW_WIDTH(f) (f)->new_width
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
245 #define FRAME_CURSOR_X(f) (f)->cursor_x
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
246 #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
247 #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
248 #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
249 ((f)->async_visible = (p), FRAME_SAMPLE_VISIBILITY (f))
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
250 #define SET_FRAME_GARBAGED(f) (frame_garbaged = 1, f->garbaged = 1)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
251 #define FRAME_GARBAGED_P(f) (f)->garbaged
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
252 #define FRAME_NO_SPLIT_P(f) (f)->no_split
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
253 #define FRAME_WANTS_MODELINE_P(f) (f)->wants_modeline
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
254 #define FRAME_ICONIFIED_P(f) (f)->iconified
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
255 #define FRAME_MINIBUF_WINDOW(f) (f)->minibuffer_window
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
256 #define FRAME_ROOT_WINDOW(f) (f)->root_window
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
257 #define FRAME_SELECTED_WINDOW(f) (f)->selected_window
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
258 #define SET_GLYPHS_FRAME(glyphs,frame) ((glyphs)->frame = (frame))
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
259 #define FRAME_INSERT_COST(f) (f)->insert_line_cost
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
260 #define FRAME_DELETE_COST(f) (f)->delete_line_cost
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
261 #define FRAME_INSERTN_COST(f) (f)->insert_n_lines_cost
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
262 #define FRAME_DELETEN_COST(f) (f)->delete_n_lines_cost
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
263 #define FRAME_MESSAGE_BUF(f) (f)->message_buf
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
264 #define FRAME_SCROLL_BOTTOM_VPOS(f) (f)->scroll_bottom_vpos
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
265 #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
266 #define FRAME_CAN_HAVE_SCROLL_BARS(f) ((f)->can_have_scroll_bars)
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
267 #define FRAME_HAS_VERTICAL_SCROLL_BARS(f) ((f)->has_vertical_scroll_bars)
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
268 #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
269 #define FRAME_CONDEMNED_SCROLL_BARS(f) ((f)->condemned_scroll_bars)
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
270
1653
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
271 /* 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
272 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
273 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
274 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
275 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
276 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
277 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
278
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
279 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
280 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
281
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
282 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
283 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
284 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
285 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
286 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
287 counterparts.
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
288
1776
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
289 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
290
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
291 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
292 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
293 up its contents. */
1653
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
294 #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
295 (((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
296 (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
297 (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
298
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
299 #define CHECK_FRAME(x, i) \
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 385
diff changeset
300 { \
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
301 if (! FRAMEP (x)) \
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
302 x = wrong_type_argument (Qframep, (x)); \
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 385
diff changeset
303 }
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 385
diff changeset
304
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
305 #define CHECK_LIVE_FRAME(x, i) \
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 385
diff changeset
306 { \
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
307 if (! FRAMEP (x) \
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
308 || ! FRAME_LIVE_P (XFRAME (x))) \
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1776
diff changeset
309 x = wrong_type_argument (Qframe_live_p, (x)); \
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 385
diff changeset
310 }
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 385
diff changeset
311
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
312 /* 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
313 `for' loop which iterates over the elements of Vframe_list. The
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
314 loop will set FRAME_VAR, a FRAME_PTR, to each frame in
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
315 Vframe_list in succession and execute the statement. LIST_VAR
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
316 should be a Lisp_Object; it is used to iterate through the
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
317 Vframe_list.
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
318
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
319 If MULTI_FRAME isn't defined, then this loop expands to something which
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
320 executes the statement once. */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
321 #define FOR_EACH_FRAME(list_var, frame_var) \
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
322 for ((list_var) = Vframe_list; \
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
323 (CONSP (list_var) \
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
324 && (frame_var = XFRAME (XCONS (list_var)->car), 1)); \
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
325 list_var = XCONS (list_var)->cdr)
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
326
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
327
1821
04fb1d3d6992 JimB's changes since January 18th
Jim Blandy <jimb@redhat.com>
parents: 1776
diff changeset
328 extern Lisp_Object Qframep, Qframe_live_p;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
329
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
330 extern struct frame *selected_frame;
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
331 extern struct frame *last_nonminibuf_frame;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
332
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
333 extern struct frame *make_terminal_frame ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
334 extern struct frame *make_frame ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
335 extern struct frame *make_minibuffer_frame ();
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
336 extern struct frame *make_frame_without_minibuffer ();
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
337
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
338 extern Lisp_Object Vframe_list;
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
339 extern Lisp_Object Vdefault_frame_alist;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
340
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
341 extern Lisp_Object Vterminal_frame;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
342
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
343 #else /* not MULTI_FRAME */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
344
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
345 /* These definitions are used in a single-frame version of Emacs. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
346
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
347 #define FRAME_PTR int
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
348
984
4fda1fce3579 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 979
diff changeset
349 /* A frame we use to store all the data concerning the screen when we
4fda1fce3579 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 979
diff changeset
350 don't have multiple frames. Remember, if you store any data in it
4fda1fce3579 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 979
diff changeset
351 which needs to be protected from GC, you should staticpro that
4fda1fce3579 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 979
diff changeset
352 element explicitly. */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
353 extern struct frame the_only_frame;
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
354
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
355 extern int selected_frame;
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
356 extern int last_nonminibuf_frame;
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
357
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
358 #define XFRAME(f) selected_frame
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
359 #define WINDOW_FRAME(w) selected_frame
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
360
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
361 #define FRAMEP(f) (XTYPE(f) == Lisp_Frame)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
362 #define FRAME_LIVE_P(f) 1
979
268c7b5da35b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 765
diff changeset
363 #define FRAME_TERMCAP_P(f) 1
268c7b5da35b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 765
diff changeset
364 #define FRAME_X_P(f) 0
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
365 #define FRAME_MINIBUF_ONLY_P(f) 0
979
268c7b5da35b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 765
diff changeset
366 #define FRAME_HAS_MINIBUF_P(f) 1
984
4fda1fce3579 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 979
diff changeset
367 #define FRAME_CURRENT_GLYPHS(f) (the_only_frame.current_glyphs)
4fda1fce3579 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 979
diff changeset
368 #define FRAME_DESIRED_GLYPHS(f) (the_only_frame.desired_glyphs)
4fda1fce3579 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 979
diff changeset
369 #define FRAME_TEMP_GLYPHS(f) (the_only_frame.temp_glyphs)
4fda1fce3579 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 979
diff changeset
370 #define FRAME_HEIGHT(f) (the_only_frame.height)
4fda1fce3579 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 979
diff changeset
371 #define FRAME_WIDTH(f) (the_only_frame.width)
4fda1fce3579 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 979
diff changeset
372 #define FRAME_NEW_HEIGHT(f) (the_only_frame.new_height)
4fda1fce3579 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 979
diff changeset
373 #define FRAME_NEW_WIDTH(f) (the_only_frame.new_width)
4fda1fce3579 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 979
diff changeset
374 #define FRAME_CURSOR_X(f) (the_only_frame.cursor_x)
4fda1fce3579 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 979
diff changeset
375 #define FRAME_CURSOR_Y(f) (the_only_frame.cursor_y)
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
376 #define FRAME_SET_VISIBLE(f,p) (p)
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
377 #define FRAME_VISIBLE_P(f) 1
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
378 #define SET_FRAME_GARBAGED(f) (frame_garbaged = 1)
984
4fda1fce3579 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 979
diff changeset
379 #define FRAME_GARBAGED_P(f) (frame_garbaged)
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
380 #define FRAME_NO_SPLIT_P(f) 0
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
381 #define FRAME_WANTS_MODELINE_P(f) 1
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
382 #define FRAME_ICONIFIED_P(f) 0
998
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 984
diff changeset
383 #define FRAME_MINIBUF_WINDOW(f) (the_only_frame.root_window)
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 984
diff changeset
384 #define FRAME_ROOT_WINDOW(f) (the_only_frame.root_window)
984
4fda1fce3579 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 979
diff changeset
385 #define FRAME_SELECTED_WINDOW(f) (selected_window)
4fda1fce3579 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 979
diff changeset
386 #define SET_GLYPHS_FRAME(glyphs,frame) do ; while (0)
4fda1fce3579 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 979
diff changeset
387 #define FRAME_INSERT_COST(frame) (the_only_frame.insert_line_cost)
4fda1fce3579 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 979
diff changeset
388 #define FRAME_DELETE_COST(frame) (the_only_frame.delete_line_cost)
4fda1fce3579 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 979
diff changeset
389 #define FRAME_INSERTN_COST(frame) (the_only_frame.insert_n_lines_cost)
4fda1fce3579 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 979
diff changeset
390 #define FRAME_DELETEN_COST(frame) (the_only_frame.delete_n_lines_cost)
4fda1fce3579 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 979
diff changeset
391 #define FRAME_MESSAGE_BUF(f) (the_only_frame.message_buf)
4fda1fce3579 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 979
diff changeset
392 #define FRAME_SCROLL_BOTTOM_VPOS(f) (the_only_frame.scroll_bottom_vpos)
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
393 #define FRAME_FOCUS_FRAME(f) (Qnil)
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
394 #define FRAME_CAN_HAVE_SCROLL_BARS(f) (the_only_frame.can_have_scroll_bars)
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
395 #define FRAME_HAS_VERTICAL_SCROLL_BARS(f) \
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
396 (the_only_frame.has_vertical_scroll_bars)
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
397 #define FRAME_SCROLL_BARS(f) (the_only_frame.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) (the_only_frame.condemned_scroll_bars)
357
1ad871406b12 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 261
diff changeset
399
1653
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
400 /* See comments in definition above. */
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
401 #define FRAME_SAMPLE_VISIBILITY(f) (0)
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
402
979
268c7b5da35b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 765
diff changeset
403 #define CHECK_FRAME(x, i) do; while (0)
268c7b5da35b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 765
diff changeset
404 #define CHECK_LIVE_FRAME(x, y) do; while (0)
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
405
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
406 /* 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
407 `for' loop which iterates over the elements of Vframe_list. The
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
408 loop will set FRAME_VAR, a FRAME_PTR, to each frame in
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
409 Vframe_list in succession and execute the statement. LIST_VAR
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
410 should be a Lisp_Object; it is used to iterate through the
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
411 Vframe_list.
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
412
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
413 If MULTI_FRAME _is_ defined, then this loop expands to a real
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
414 `for' loop which traverses Vframe_list using LIST_VAR and
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
415 FRAME_VAR. */
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
416 #define FOR_EACH_FRAME(list_var, frame_var) \
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
417 for (frame_var = (FRAME_PTR) 1; frame_var; frame_var = (FRAME_PTR) 0)
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
418
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
419 #endif /* not MULTI_FRAME */
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
420
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
421
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
422 /* Device- and MULTI_FRAME-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
423
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
424 /* The number of columns a vertical scroll bar occupies. */
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
425 #define VERTICAL_SCROLL_BAR_WIDTH (2)
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
426
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
427 /* 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
428 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
429 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
430 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
431 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
432 #define WINDOW_VERTICAL_SCROLL_BAR_COLUMN(w) \
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
433 (((XINT ((w)->left) + XINT ((w)->width)) \
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
434 < FRAME_WIDTH (XFRAME (WINDOW_FRAME (w)))) \
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
435 ? XINT ((w)->left) + XINT ((w)->width) - VERTICAL_SCROLL_BAR_WIDTH \
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
436 : FRAME_WIDTH (XFRAME (WINDOW_FRAME (w))))
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
437
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
438 /* 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
439 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
440 #define WINDOW_VERTICAL_SCROLL_BAR_HEIGHT(w) (window_internal_height (w))