annotate src/frame.h @ 35799:74655128ce2d

Update copyright.
author Gerd Moellmann <gerd@gnu.org>
date Wed, 31 Jan 2001 20:25:41 +0000
parents 48534cd0de43
children 1416f2329eb2
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.
35799
74655128ce2d Update copyright.
Gerd Moellmann <gerd@gnu.org>
parents: 35798
diff changeset
2 Copyright (C) 1993, 1994, 1999, 2000, 2001 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
35799
74655128ce2d Update copyright.
Gerd Moellmann <gerd@gnu.org>
parents: 35798
diff changeset
21 /* Don't multiply include: dispextern.h includes macterm.h which includes frame.h
74655128ce2d Update copyright.
Gerd Moellmann <gerd@gnu.org>
parents: 35798
diff changeset
22 some emacs source includes both dispextern.h and frame.h */
74655128ce2d Update copyright.
Gerd Moellmann <gerd@gnu.org>
parents: 35798
diff changeset
23 #ifndef _XFRAME_H_
74655128ce2d Update copyright.
Gerd Moellmann <gerd@gnu.org>
parents: 35798
diff changeset
24 #define _XFRAME_H_
74655128ce2d Update copyright.
Gerd Moellmann <gerd@gnu.org>
parents: 35798
diff changeset
25
1776
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 /* Miscellanea. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
28
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
29 /* Nonzero means don't assume anything about current contents of
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
30 actual terminal frame */
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
31
1776
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
32 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
33
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
34 /* 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
35 print. */
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
36
1776
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
37 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
38
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
39
16051
ccf489f8596e Removed support for !MULTI_FRAME.
Karl Heuer <kwzh@gnu.org>
parents: 15390
diff changeset
40 /* The structure representing a frame. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
41
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42 enum output_method
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
43 {
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
44 output_termcap,
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
45 output_x_window,
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
46 output_msdos_raw,
25524
095548b9a36c Do nothing if included a second time.
Richard M. Stallman <rms@gnu.org>
parents: 25460
diff changeset
47 output_w32,
095548b9a36c Do nothing if included a second time.
Richard M. Stallman <rms@gnu.org>
parents: 25460
diff changeset
48 output_mac
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
49 };
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
50
16270
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
51 enum vertical_scroll_bar_type
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
52 {
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
53 vertical_scroll_bar_none,
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
54 vertical_scroll_bar_left,
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
55 vertical_scroll_bar_right
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
56 };
16270
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
57
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25711
diff changeset
58 #if !defined(MSDOS) && !defined(WINDOWSNT) && !defined(macintosh)
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25711
diff changeset
59
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25711
diff changeset
60 #if !defined(HAVE_X_WINDOWS)
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25711
diff changeset
61
26781
4982f642dfdc (PIX_TYPE) [! HAVE_X_WINDOWS]: Define PIX_TYPE.
Dave Love <fx@gnu.org>
parents: 26729
diff changeset
62 #define PIX_TYPE int
4982f642dfdc (PIX_TYPE) [! HAVE_X_WINDOWS]: Define PIX_TYPE.
Dave Love <fx@gnu.org>
parents: 26729
diff changeset
63
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25711
diff changeset
64 /* A (mostly empty) x_output structure definition for building Emacs
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25711
diff changeset
65 on Unix and GNU/Linux without X support. */
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25711
diff changeset
66 struct x_output
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25711
diff changeset
67 {
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25711
diff changeset
68 PIX_TYPE background_pixel;
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25711
diff changeset
69 PIX_TYPE foreground_pixel;
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25711
diff changeset
70 };
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25711
diff changeset
71
28003
c75e18fc1a7a (FRAME_INTERNAL_BORDER_WIDTH) [!HAVE_X_WINDOWS]: Define.
Gerd Moellmann <gerd@gnu.org>
parents: 27688
diff changeset
72 #define FRAME_INTERNAL_BORDER_WIDTH(f) 0
c75e18fc1a7a (FRAME_INTERNAL_BORDER_WIDTH) [!HAVE_X_WINDOWS]: Define.
Gerd Moellmann <gerd@gnu.org>
parents: 27688
diff changeset
73
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25711
diff changeset
74 #endif /* ! HAVE_X_WINDOWS */
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25711
diff changeset
75
26791
8284b35fb4fb (FRAME_FOREGROUND_PIXEL, FRAME_BACKGROUND_PIXEL)
Gerd Moellmann <gerd@gnu.org>
parents: 26781
diff changeset
76
8284b35fb4fb (FRAME_FOREGROUND_PIXEL, FRAME_BACKGROUND_PIXEL)
Gerd Moellmann <gerd@gnu.org>
parents: 26781
diff changeset
77 #define FRAME_FOREGROUND_PIXEL(f) ((f)->output_data.x->foreground_pixel)
8284b35fb4fb (FRAME_FOREGROUND_PIXEL, FRAME_BACKGROUND_PIXEL)
Gerd Moellmann <gerd@gnu.org>
parents: 26781
diff changeset
78 #define FRAME_BACKGROUND_PIXEL(f) ((f)->output_data.x->background_pixel)
8284b35fb4fb (FRAME_FOREGROUND_PIXEL, FRAME_BACKGROUND_PIXEL)
Gerd Moellmann <gerd@gnu.org>
parents: 26781
diff changeset
79
26729
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25711
diff changeset
80 /* A structure describing a termcap frame display. */
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25711
diff changeset
81 extern struct x_output tty_display;
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25711
diff changeset
82
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25711
diff changeset
83 #endif /* ! MSDOS && ! WINDOWSNT && ! macintosh */
f5dded41adcc Changes for automatic remapping of X colors on terminal frames:
Eli Zaretskii <eliz@gnu.org>
parents: 25711
diff changeset
84
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
85 struct frame
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86 {
8826
9f5965fe4f6b (struct frame, selected_frame, last_nonminibuf_frame): Use EMACS_INT.
Richard M. Stallman <rms@gnu.org>
parents: 8233
diff changeset
87 EMACS_INT size;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
88 struct Lisp_Vector *next;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89
10208
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
90 /* All Lisp_Object components must come first.
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
91 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
92 That ensures they are all aligned normally. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
93
14215
f258b4fd44c0 (struct frame): New field `title'.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
94 /* 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
95 as well as for the title in some cases. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
96 Lisp_Object name;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97
12274
f3383ea95b06 (struct frame): New field icon_name.
Richard M. Stallman <rms@gnu.org>
parents: 11493
diff changeset
98 /* 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
99 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
100 Lisp_Object icon_name;
f3383ea95b06 (struct frame): New field icon_name.
Richard M. Stallman <rms@gnu.org>
parents: 11493
diff changeset
101
14215
f258b4fd44c0 (struct frame): New field `title'.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
102 /* 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
103 Usually it is nil. */
f258b4fd44c0 (struct frame): New field `title'.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
104 Lisp_Object title;
f258b4fd44c0 (struct frame): New field `title'.
Richard M. Stallman <rms@gnu.org>
parents: 14186
diff changeset
105
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3518
diff changeset
106 /* 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
107 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
108 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
109 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
110 needed.
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
111
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
112 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
113 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
114 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
115 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
116 focus_frame is nil, Fselect_frame will leave it alone. */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
117 Lisp_Object focus_frame;
357
1ad871406b12 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 261
diff changeset
118
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
119 /* This frame's root window. Every frame has one.
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
120 If the frame has only a minibuffer window, this is it.
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
121 Otherwise, if the frame has a minibuffer window, this is its sibling. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
122 Lisp_Object root_window;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
124 /* This frame's selected window.
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
125 Each frame has its own window hierarchy
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
126 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
127 The selected window of the selected frame is Emacs's selected window. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128 Lisp_Object selected_window;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
130 /* This frame's minibuffer window.
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
131 Most frames have their own minibuffer windows,
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
132 but only the selected frame's minibuffer window
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133 can actually appear to exist. */
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134 Lisp_Object minibuffer_window;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
136 /* Parameter alist of this frame.
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
137 These are the parameters specified when creating the frame
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
138 or modified with modify-frame-parameters. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139 Lisp_Object param_alist;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
141 /* 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
142 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
143 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
144 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
145 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
146 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
147 structure. */
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
148 Lisp_Object scroll_bars;
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
149 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
150
15098
a3c8776451ce Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 14215
diff changeset
151 /* Vector describing the items to display in the menu bar.
a3c8776451ce Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 14215
diff changeset
152 Each item has four elements in this vector.
a3c8776451ce Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 14215
diff changeset
153 They are KEY, STRING, SUBMAP, and HPOS.
a3c8776451ce Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 14215
diff changeset
154 (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
155 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
156 Lisp_Object menu_bar_items;
9b8040c3f320 (FRAME_MENU_BAR_ITEMS): New macro (two versions).
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
157
2396
80bed5e0c8aa (struct frame): New field face_alist.
Richard M. Stallman <rms@gnu.org>
parents: 2252
diff changeset
158 /* 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
159 Lisp_Object face_alist;
80bed5e0c8aa (struct frame): New field face_alist.
Richard M. Stallman <rms@gnu.org>
parents: 2252
diff changeset
160
10208
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
161 /* 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
162 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
163 Only the X toolkit version uses this. */
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
164 Lisp_Object menu_bar_vector;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
165 /* 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
166 EMACS_INT menu_bar_items_used;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
167
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
168 /* Predicate for selecting buffers for other-buffer. */
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
169 Lisp_Object buffer_predicate;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
170
17222
60053e19d485 (struct frame): New field buffer_list.
Richard M. Stallman <rms@gnu.org>
parents: 17033
diff changeset
171 /* 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
172 Lisp_Object buffer_list;
60053e19d485 (struct frame): New field buffer_list.
Richard M. Stallman <rms@gnu.org>
parents: 17033
diff changeset
173
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
174 /* A dummy window used to display menu bars under X when no X
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
175 toolkit support is available. */
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
176 Lisp_Object menu_bar_window;
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
177
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25527
diff changeset
178 /* A window used to display the tool-bar of a frame. */
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25527
diff changeset
179 Lisp_Object tool_bar_window;
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
180
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25527
diff changeset
181 /* Desired and current tool-bar items. */
33759
593bc303c500 (struct frame): Members desired_tool_bar_items,
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
182 Lisp_Object tool_bar_items;
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
183
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25527
diff changeset
184 /* Desired and current contents displayed in tool_bar_window. */
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25527
diff changeset
185 Lisp_Object desired_tool_bar_string, current_tool_bar_string;
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
186
17222
60053e19d485 (struct frame): New field buffer_list.
Richard M. Stallman <rms@gnu.org>
parents: 17033
diff changeset
187 /* 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
188
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
189 /* Cache of realized faces. */
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
190 struct face_cache *face_cache;
10208
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
191
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
192 /* A buffer to hold the frame's name. We can't use the Lisp
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
193 string's pointer (`name', above) because it might get relocated. */
11493
7a15a07093c2 (struct frame): New member namebuf.
Karl Heuer <kwzh@gnu.org>
parents: 11351
diff changeset
194 char *namebuf;
7a15a07093c2 (struct frame): New member namebuf.
Karl Heuer <kwzh@gnu.org>
parents: 11351
diff changeset
195
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
196 /* Glyph pool and matrix. */
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
197 struct glyph_pool *current_pool;
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
198 struct glyph_pool *desired_pool;
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
199 struct glyph_matrix *desired_matrix;
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
200 struct glyph_matrix *current_matrix;
10208
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
201
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
202 /* 1 means that glyphs on this frame have been initialized so it can
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
203 be used for output. */
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
204 unsigned glyphs_initialized_p : 1;
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
205
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25527
diff changeset
206 /* Margin at the top of the frame. Used to display the tool-bar. */
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25527
diff changeset
207 int tool_bar_lines;
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
208
33759
593bc303c500 (struct frame): Members desired_tool_bar_items,
Gerd Moellmann <gerd@gnu.org>
parents: 32752
diff changeset
209 int n_tool_bar_items;
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
210
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
211 /* A buffer for decode_mode_line. */
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
212 char *decode_mode_spec_buffer;
10208
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
213
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
214 /* 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
215 /* 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
216 int *insert_line_cost;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
217 /* 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
218 int *delete_line_cost;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
219 /* 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
220 int *insert_n_lines_cost;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
221 /* 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
222 int *delete_n_lines_cost;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
223
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
224 /* 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
225 EMACS_INT height;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
226 EMACS_INT width;
16336
91846d76268d (struct frame): New field window_width.
Richard M. Stallman <rms@gnu.org>
parents: 16270
diff changeset
227 EMACS_INT window_width;
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
228 EMACS_INT window_height;
10208
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
229
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
230 /* 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
231 int new_height, new_width;
9e8f603bcff4 (struct frame): New field buffer_predicate.
Richard M. Stallman <rms@gnu.org>
parents: 10120
diff changeset
232
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
233 /* The output method says how the contents of this frame
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234 are displayed. It could be using termcap, or using an X window. */
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235 enum output_method output_method;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
236
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
237 /* 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
238 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
239 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
240 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
241 it is defined in w32term.h. */
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
242 union output_data
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
243 {
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
244 struct x_output *x;
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
245 struct w32_output *w32;
25524
095548b9a36c Do nothing if included a second time.
Richard M. Stallman <rms@gnu.org>
parents: 25460
diff changeset
246 struct mac_output *mac;
31900
8b2fa657800d (struct frame): Make the `nothing' member of union
Gerd Moellmann <gerd@gnu.org>
parents: 31147
diff changeset
247 EMACS_INT nothing;
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
248 }
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
249 output_data;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
250
11005
3155b56586e9 (struct frame): New member kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10665
diff changeset
251 #ifdef MULTI_KBOARD
3155b56586e9 (struct frame): New member kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10665
diff changeset
252 /* 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
253 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
254 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
255 struct kboard *kboard;
11005
3155b56586e9 (struct frame): New member kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10665
diff changeset
256 #endif
3155b56586e9 (struct frame): New member kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10665
diff changeset
257
2148
9b8040c3f320 (FRAME_MENU_BAR_ITEMS): New macro (two versions).
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
258 /* 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
259 int menu_bar_lines;
9b8040c3f320 (FRAME_MENU_BAR_ITEMS): New macro (two versions).
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
260
32752
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 31900
diff changeset
261 #if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) || defined (macintosh)
5657
ac0f9da25111 (struct frame): New field external_menu_bar.
Richard M. Stallman <rms@gnu.org>
parents: 3649
diff changeset
262 /* 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
263 int external_menu_bar;
ac0f9da25111 (struct frame): New field external_menu_bar.
Richard M. Stallman <rms@gnu.org>
parents: 3649
diff changeset
264 #endif
ac0f9da25111 (struct frame): New field external_menu_bar.
Richard M. Stallman <rms@gnu.org>
parents: 3649
diff changeset
265
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
266 /* Nonzero if last attempt at redisplay on this frame was preempted. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
267 char display_preempted;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
268
1653
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
269 /* 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
270 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
271 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
272
1776
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
273 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
274 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
275 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
276
19696
dc5e4b1ce93c (FRAME_OBSCURED_P): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents: 17222
diff changeset
277 On Windows NT/9X, to avoid wasting effort updating visible frames
dc5e4b1ce93c (FRAME_OBSCURED_P): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents: 17222
diff changeset
278 that are actually completely obscured by other windows on the
dc5e4b1ce93c (FRAME_OBSCURED_P): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents: 17222
diff changeset
279 display, we bend the meaning of visible slightly: if greater than
dc5e4b1ce93c (FRAME_OBSCURED_P): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents: 17222
diff changeset
280 1, then the frame is obscured - we still consider it to be
dc5e4b1ce93c (FRAME_OBSCURED_P): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents: 17222
diff changeset
281 "visible" as seen from lisp, but we don't bother updating it. We
dc5e4b1ce93c (FRAME_OBSCURED_P): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents: 17222
diff changeset
282 must take care to garbage the frame when it ceaces to be obscured
dc5e4b1ce93c (FRAME_OBSCURED_P): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents: 17222
diff changeset
283 though. Note that these semantics are only used on NT/9X.
dc5e4b1ce93c (FRAME_OBSCURED_P): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents: 17222
diff changeset
284
1653
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
285 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
286
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
287 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
288 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
289 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
290 at the next redisplay.
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
291
1653
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
292 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
293 FRAME_SAMPLE_VISIBILITY.
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
294
6183
242d3fed9285 Fix typo in comment.
Karl Heuer <kwzh@gnu.org>
parents: 5657
diff changeset
295 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
296 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
297 char visible, iconified;
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
298
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
299 /* 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
300 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
301 See FRAME_SAMPLE_VISIBILITY, below. */
29439
b5e905b3b506 (struct frame): Use volatile unconditionally.
Dave Love <fx@gnu.org>
parents: 28691
diff changeset
302 volatile char async_visible, async_iconified;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
303
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
304 /* Nonzero if this frame should be redrawn. */
29439
b5e905b3b506 (struct frame): Use volatile unconditionally.
Dave Love <fx@gnu.org>
parents: 28691
diff changeset
305 volatile char garbaged;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
306
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
307 /* True if frame actually has a minibuffer window on it.
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
308 0 if using a minibuffer window that isn't on this frame. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
309 char has_minibuffer;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
310
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
311 /* 0 means, if this frame has just one window,
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
312 show no modeline for that window. */
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
313 char wants_modeline;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
314
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
315 /* 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
316 support scroll bars. */
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
317 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
318
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
319 /* 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
320 actually display them on this frame. */
16270
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
321 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
322
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
323 /* 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
324 char auto_raise;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
325
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
326 /* 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
327 char auto_lower;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
328
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
329 /* True if frame's root window can't be split. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
330 char no_split;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
331
998
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 984
diff changeset
332 /* 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
333 the current buffer, etcetera. If the user explicitly sets the frame
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 984
diff changeset
334 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
335 cleared. */
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 984
diff changeset
336 char explicit_name;
61c6983219ff entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 984
diff changeset
337
10665
4e7da2fc451b (struct frame): New field window_sizes_changed.
Richard M. Stallman <rms@gnu.org>
parents: 10288
diff changeset
338 /* 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
339 char window_sizes_changed;
4e7da2fc451b (struct frame): New field window_sizes_changed.
Richard M. Stallman <rms@gnu.org>
parents: 10288
diff changeset
340
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
341 /* Storage for messages to this frame. */
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
342 char *message_buf;
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
343
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
344 /* Nonnegative if current redisplay should not do scroll computation
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
345 for lines beyond a certain vpos. This is the vpos. */
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
346 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
347
9164
fbdd7a2e62f4 (scroll_bar_pixel_width, scroll_bar_cols): Update comment.
Karl Heuer <kwzh@gnu.org>
parents: 8948
diff changeset
348 /* 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
349 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
350 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
351 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
352 int scroll_bar_pixel_width;
5f79babaa7d2 (FRAME_SCROLL_BAR_PIXEL_WIDTH): New macro, supersedes
Karl Heuer <kwzh@gnu.org>
parents: 8900
diff changeset
353 int scroll_bar_cols;
10120
8b5ae8d2eefc (struct frame): New field cost_calculation_baud_rate.
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
354
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
355 /* Width of area for drawing truncation marks and overlay arrow. */
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
356 int trunc_area_pixel_width, trunc_area_cols;
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
357
10120
8b5ae8d2eefc (struct frame): New field cost_calculation_baud_rate.
Richard M. Stallman <rms@gnu.org>
parents: 9572
diff changeset
358 /* 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
359 int cost_calculation_baud_rate;
12543
13aa3e939a4d (struct frame): New field `mouse_moved'.
Karl Heuer <kwzh@gnu.org>
parents: 12274
diff changeset
360
13aa3e939a4d (struct frame): New field `mouse_moved'.
Karl Heuer <kwzh@gnu.org>
parents: 12274
diff changeset
361 /* 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
362 since the last time we checked. */
13aa3e939a4d (struct frame): New field `mouse_moved'.
Karl Heuer <kwzh@gnu.org>
parents: 12274
diff changeset
363 char mouse_moved;
25527
93b2f5b92137 (struct frame): New member `gamma'.
Gerd Moellmann <gerd@gnu.org>
parents: 25524
diff changeset
364
93b2f5b92137 (struct frame): New member `gamma'.
Gerd Moellmann <gerd@gnu.org>
parents: 25524
diff changeset
365 /* Exponent for gamma correction of colors. 1/(VIEWING_GAMMA *
93b2f5b92137 (struct frame): New member `gamma'.
Gerd Moellmann <gerd@gnu.org>
parents: 25524
diff changeset
366 SCREEN_GAMMA) where viewing_gamma is 0.4545 and SCREEN_GAMMA is a
93b2f5b92137 (struct frame): New member `gamma'.
Gerd Moellmann <gerd@gnu.org>
parents: 25524
diff changeset
367 frame parameter. 0 means don't do gamma correction. */
93b2f5b92137 (struct frame): New member `gamma'.
Gerd Moellmann <gerd@gnu.org>
parents: 25524
diff changeset
368 double gamma;
28691
26fdeb2124f0 (struct frame): Add member extra_line_spacing.
Gerd Moellmann <gerd@gnu.org>
parents: 28651
diff changeset
369
26fdeb2124f0 (struct frame): Add member extra_line_spacing.
Gerd Moellmann <gerd@gnu.org>
parents: 28651
diff changeset
370 /* Additional space to put between text lines on this frame. */
26fdeb2124f0 (struct frame): Add member extra_line_spacing.
Gerd Moellmann <gerd@gnu.org>
parents: 28651
diff changeset
371 int extra_line_spacing;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
372 };
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
373
16051
ccf489f8596e Removed support for !MULTI_FRAME.
Karl Heuer <kwzh@gnu.org>
parents: 15390
diff changeset
374 #ifdef MULTI_KBOARD
11005
3155b56586e9 (struct frame): New member kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10665
diff changeset
375 #define FRAME_KBOARD(f) ((f)->kboard)
3155b56586e9 (struct frame): New member kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10665
diff changeset
376 #else
3155b56586e9 (struct frame): New member kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10665
diff changeset
377 #define FRAME_KBOARD(f) (&the_only_kboard)
3155b56586e9 (struct frame): New member kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10665
diff changeset
378 #endif
3155b56586e9 (struct frame): New member kboard.
Karl Heuer <kwzh@gnu.org>
parents: 10665
diff changeset
379
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
380 typedef struct frame *FRAME_PTR;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
381
28417
4b675266db04 * lisp.h (XCONS, XSTRING, XSYMBOL, XFLOAT, XPROCESS, XWINDOW, XSUBR, XBUFFER):
Ken Raeburn <raeburn@raeburn.org>
parents: 28226
diff changeset
382 #define XFRAME(p) (eassert (GC_FRAMEP(p)),(struct frame *) XPNTR (p))
10288
e4a6f55757a9 (XSETFRAME): Use pseudovector.
Richard M. Stallman <rms@gnu.org>
parents: 10208
diff changeset
383 #define XSETFRAME(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_FRAME))
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
384
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
385 /* Given a window, return its frame as a Lisp_Object. */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
386 #define WINDOW_FRAME(w) (w)->frame
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
387
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
388 /* Test a frame for particular kinds of display methods. */
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
389 #define FRAME_TERMCAP_P(f) ((f)->output_method == output_termcap)
13411
58efb2561888 (output_method): New method: output_win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 12665
diff changeset
390 #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
391 #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
392 #define FRAME_MSDOS_P(f) ((f)->output_method == output_msdos_raw)
25524
095548b9a36c Do nothing if included a second time.
Richard M. Stallman <rms@gnu.org>
parents: 25460
diff changeset
393 #define FRAME_MAC_P(f) ((f)->output_method == output_mac)
13411
58efb2561888 (output_method): New method: output_win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 12665
diff changeset
394
58efb2561888 (output_method): New method: output_win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 12665
diff changeset
395 /* 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
396 defined to be the predicate for the window system being used. */
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
397
13411
58efb2561888 (output_method): New method: output_win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 12665
diff changeset
398 #ifdef HAVE_X_WINDOWS
58efb2561888 (output_method): New method: output_win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 12665
diff changeset
399 #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
400 #endif
58efb2561888 (output_method): New method: output_win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 12665
diff changeset
401 #ifdef HAVE_NTGUI
16588
481b7874a1e9 Change identifiers of the form win32* to w32*.
Geoff Voelker <voelker@cs.washington.edu>
parents: 16429
diff changeset
402 #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
403 #endif
25524
095548b9a36c Do nothing if included a second time.
Richard M. Stallman <rms@gnu.org>
parents: 25460
diff changeset
404 #ifdef macintosh
095548b9a36c Do nothing if included a second time.
Richard M. Stallman <rms@gnu.org>
parents: 25460
diff changeset
405 #define FRAME_WINDOW_P(f) FRAME_MAC_P (f)
095548b9a36c Do nothing if included a second time.
Richard M. Stallman <rms@gnu.org>
parents: 25460
diff changeset
406 #endif
13568
01ec2620dd87 (FRAME_WINDOW_P): Always define it one way or another.
Richard M. Stallman <rms@gnu.org>
parents: 13411
diff changeset
407 #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
408 #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
409 #endif
13411
58efb2561888 (output_method): New method: output_win32.
Geoff Voelker <voelker@cs.washington.edu>
parents: 12665
diff changeset
410
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
411 /* Nonzero if frame F is still alive (not deleted). */
12665
427a3d6560bf (struct frame): Rename `display' member to `output_data'.
Richard M. Stallman <rms@gnu.org>
parents: 12543
diff changeset
412 #define FRAME_LIVE_P(f) ((f)->output_data.nothing != 0)
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
413
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
414 /* Nonzero if frame F is a minibuffer-only frame. */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
415 #define FRAME_MINIBUF_ONLY_P(f) \
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
416 EQ (FRAME_ROOT_WINDOW (f), FRAME_MINIBUF_WINDOW (f))
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
417
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
418 /* Nonzero if frame F contains a minibuffer window.
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
419 (If this is 0, F must use some other minibuffer window.) */
979
268c7b5da35b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 765
diff changeset
420 #define FRAME_HAS_MINIBUF_P(f) ((f)->has_minibuffer)
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
421 #define FRAME_HEIGHT(f) (f)->height
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
422
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
423 /* Width of frame F, measured in character columns,
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
424 not including scroll bars if any. */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
425 #define FRAME_WIDTH(f) (f)->width
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
426
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
427 /* Number of lines of frame F used for menu bar.
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
428 This is relevant on terminal frames and on
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
429 X Windows when not using the X toolkit.
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
430 These lines are counted in FRAME_HEIGHT. */
2148
9b8040c3f320 (FRAME_MENU_BAR_ITEMS): New macro (two versions).
Richard M. Stallman <rms@gnu.org>
parents: 1994
diff changeset
431 #define FRAME_MENU_BAR_LINES(f) (f)->menu_bar_lines
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
432
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25527
diff changeset
433 /* Number of lines of frame F used for the tool-bar. */
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
434
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25527
diff changeset
435 #define FRAME_TOOL_BAR_LINES(f) (f)->tool_bar_lines
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
436
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
437 /* Lines above the top-most window in frame F. */
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
438
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
439 #define FRAME_TOP_MARGIN(F) \
25544
693ca9ba497a Change spelling of `toolbar' to `tool_bar' or `tool-bar'.
Gerd Moellmann <gerd@gnu.org>
parents: 25527
diff changeset
440 (FRAME_MENU_BAR_LINES (F) + FRAME_TOOL_BAR_LINES (F))
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
441
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
442 /* Nonzero if this frame should display a menu bar
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
443 in a way that does not use any text lines. */
32752
923b8d6d8277 Initial check-in: changes for building Emacs under Mac OS.
Andrew Choi <akochoi@shaw.ca>
parents: 31900
diff changeset
444 #if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) || defined (macintosh)
5657
ac0f9da25111 (struct frame): New field external_menu_bar.
Richard M. Stallman <rms@gnu.org>
parents: 3649
diff changeset
445 #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
446 #else
5b063488f2f8 (FRAME_EXTERNAL_MENU_BAR) [!USE_X_TOOLKIT]: Give zero.
Richard M. Stallman <rms@gnu.org>
parents: 7307
diff changeset
447 #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
448 #endif
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
449 #define FRAME_VISIBLE_P(f) ((f)->visible != 0)
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
450
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
451 /* Nonzero if frame F is currently visible but hidden. */
19696
dc5e4b1ce93c (FRAME_OBSCURED_P): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents: 17222
diff changeset
452 #define FRAME_OBSCURED_P(f) ((f)->visible > 1)
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
453
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
454 /* Nonzero if frame F is currently iconified. */
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
455 #define FRAME_ICONIFIED_P(f) (f)->iconified
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
456
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
457 #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
458 ((f)->async_visible = (p), FRAME_SAMPLE_VISIBILITY (f))
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
459 #define SET_FRAME_GARBAGED(f) (frame_garbaged = 1, f->garbaged = 1)
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
460 #define FRAME_GARBAGED_P(f) (f)->garbaged
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
461
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
462 /* Nonzero means do not allow splitting this frame's window. */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
463 #define FRAME_NO_SPLIT_P(f) (f)->no_split
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
464
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
465 /* Not really implemented. */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
466 #define FRAME_WANTS_MODELINE_P(f) (f)->wants_modeline
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
467
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
468 /* Nonzero if a size change has been requested for frame F
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
469 but not yet really put into effect. This can be true temporarily
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
470 when an X event comes in at a bad time. */
10665
4e7da2fc451b (struct frame): New field window_sizes_changed.
Richard M. Stallman <rms@gnu.org>
parents: 10288
diff changeset
471 #define FRAME_WINDOW_SIZES_CHANGED(f) (f)->window_sizes_changed
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
472 /* When a size change is pending, these are the requested new sizes. */
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
473 #define FRAME_NEW_HEIGHT(f) (f)->new_height
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
474 #define FRAME_NEW_WIDTH(f) (f)->new_width
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
475
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
476 /* The minibuffer window of frame F, if it has one; otherwise nil. */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
477 #define FRAME_MINIBUF_WINDOW(f) (f)->minibuffer_window
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
478
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
479 /* The root window of the window tree of frame F. */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
480 #define FRAME_ROOT_WINDOW(f) (f)->root_window
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
481
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
482 /* The currently selected window of the window tree of frame F. */
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
483 #define FRAME_SELECTED_WINDOW(f) (f)->selected_window
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
484
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
485 #define FRAME_INSERT_COST(f) (f)->insert_line_cost
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
486 #define FRAME_DELETE_COST(f) (f)->delete_line_cost
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
487 #define FRAME_INSERTN_COST(f) (f)->insert_n_lines_cost
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
488 #define FRAME_DELETEN_COST(f) (f)->delete_n_lines_cost
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
489 #define FRAME_MESSAGE_BUF(f) (f)->message_buf
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
490 #define FRAME_SCROLL_BOTTOM_VPOS(f) (f)->scroll_bottom_vpos
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
491 #define FRAME_FOCUS_FRAME(f) (f)->focus_frame
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
492
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
493 /* Nonzero if frame F supports scroll bars.
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
494 If this is zero, then it is impossible to enable scroll bars
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
495 on frame F. */
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
496 #define FRAME_CAN_HAVE_SCROLL_BARS(f) ((f)->can_have_scroll_bars)
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
497
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
498 /* This frame slot says whether scroll bars are currently enabled for frame F,
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
499 and which side they are on. */
16270
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
500 #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
501 #define FRAME_HAS_VERTICAL_SCROLL_BARS(f) \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
502 ((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
503 #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
504 ((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
505 #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
506 ((f)->vertical_scroll_bar_type == vertical_scroll_bar_right)
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
507
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
508 /* Width that a scroll bar in frame F should have, if there is one.
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
509 Measured in pixels.
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
510 If scroll bars are turned off, this is still nonzero. */
8948
5f79babaa7d2 (FRAME_SCROLL_BAR_PIXEL_WIDTH): New macro, supersedes
Karl Heuer <kwzh@gnu.org>
parents: 8900
diff changeset
511 #define FRAME_SCROLL_BAR_PIXEL_WIDTH(f) ((f)->scroll_bar_pixel_width)
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
512
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
513 /* Width that a scroll bar in frame F should have, if there is one.
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
514 Measured in columns (characters).
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
515 If scroll bars are turned off, this is still nonzero. */
8948
5f79babaa7d2 (FRAME_SCROLL_BAR_PIXEL_WIDTH): New macro, supersedes
Karl Heuer <kwzh@gnu.org>
parents: 8900
diff changeset
516 #define FRAME_SCROLL_BAR_COLS(f) ((f)->scroll_bar_cols)
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
517
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
518 /* Width of a scroll bar in frame F, measured in columns (characters),
35798
48534cd0de43 (FRAME_RIGHT_SCROLL_BAR_WIDTH): New define.
Gerd Moellmann <gerd@gnu.org>
parents: 35446
diff changeset
519 but only if scroll bars are on the left. If scroll bars are on
48534cd0de43 (FRAME_RIGHT_SCROLL_BAR_WIDTH): New define.
Gerd Moellmann <gerd@gnu.org>
parents: 35446
diff changeset
520 the right in this frame, or there are no scroll bars, value is 0. */
48534cd0de43 (FRAME_RIGHT_SCROLL_BAR_WIDTH): New define.
Gerd Moellmann <gerd@gnu.org>
parents: 35446
diff changeset
521
48534cd0de43 (FRAME_RIGHT_SCROLL_BAR_WIDTH): New define.
Gerd Moellmann <gerd@gnu.org>
parents: 35446
diff changeset
522 #define FRAME_LEFT_SCROLL_BAR_WIDTH(f) \
48534cd0de43 (FRAME_RIGHT_SCROLL_BAR_WIDTH): New define.
Gerd Moellmann <gerd@gnu.org>
parents: 35446
diff changeset
523 (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT (f) \
48534cd0de43 (FRAME_RIGHT_SCROLL_BAR_WIDTH): New define.
Gerd Moellmann <gerd@gnu.org>
parents: 35446
diff changeset
524 ? FRAME_SCROLL_BAR_COLS (f) \
48534cd0de43 (FRAME_RIGHT_SCROLL_BAR_WIDTH): New define.
Gerd Moellmann <gerd@gnu.org>
parents: 35446
diff changeset
525 : 0)
48534cd0de43 (FRAME_RIGHT_SCROLL_BAR_WIDTH): New define.
Gerd Moellmann <gerd@gnu.org>
parents: 35446
diff changeset
526
48534cd0de43 (FRAME_RIGHT_SCROLL_BAR_WIDTH): New define.
Gerd Moellmann <gerd@gnu.org>
parents: 35446
diff changeset
527 /* Width of a scroll bar in frame F, measured in columns (characters),
48534cd0de43 (FRAME_RIGHT_SCROLL_BAR_WIDTH): New define.
Gerd Moellmann <gerd@gnu.org>
parents: 35446
diff changeset
528 but only if scroll bars are on the right. If scroll bars are on
48534cd0de43 (FRAME_RIGHT_SCROLL_BAR_WIDTH): New define.
Gerd Moellmann <gerd@gnu.org>
parents: 35446
diff changeset
529 the left in this frame, or there are no scroll bars, value is 0. */
48534cd0de43 (FRAME_RIGHT_SCROLL_BAR_WIDTH): New define.
Gerd Moellmann <gerd@gnu.org>
parents: 35446
diff changeset
530
48534cd0de43 (FRAME_RIGHT_SCROLL_BAR_WIDTH): New define.
Gerd Moellmann <gerd@gnu.org>
parents: 35446
diff changeset
531 #define FRAME_RIGHT_SCROLL_BAR_WIDTH(f) \
48534cd0de43 (FRAME_RIGHT_SCROLL_BAR_WIDTH): New define.
Gerd Moellmann <gerd@gnu.org>
parents: 35446
diff changeset
532 (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT (f) \
48534cd0de43 (FRAME_RIGHT_SCROLL_BAR_WIDTH): New define.
Gerd Moellmann <gerd@gnu.org>
parents: 35446
diff changeset
533 ? FRAME_SCROLL_BAR_COLS (f) \
16270
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
534 : 0)
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
535
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
536 /* Width of a scroll bar in frame F, measured in columns (characters). */
16270
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
537 #define FRAME_SCROLL_BAR_WIDTH(f) \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
538 (FRAME_HAS_VERTICAL_SCROLL_BARS (f) \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
539 ? FRAME_SCROLL_BAR_COLS (f) \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
540 : 0)
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
541
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
542 /* Total width of frame F, in columns (characters),
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
543 including the width used by scroll bars if any. */
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
544 #define FRAME_WINDOW_WIDTH(f) ((f)->window_width)
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
545
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
546 /* Set the width of frame F to VAL.
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
547 VAL is the width of a full-frame window,
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
548 not including scroll bars. */
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
549 #define SET_FRAME_WIDTH(f, val) \
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
550 ((f)->width = (val), \
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
551 (f)->window_width = FRAME_WINDOW_WIDTH_ARG (f, (f)->width))
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
552
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
553 /* Given a value WIDTH for frame F's nominal width,
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
554 return the value that FRAME_WINDOW_WIDTH should have. */
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
555 #define FRAME_WINDOW_WIDTH_ARG(f, width) \
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
556 ((width) \
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
557 + FRAME_SCROLL_BAR_WIDTH (f) \
25460
8569b5f63527 (FRAME_WINDOW_WIDTH_ARG): Add in FRAME_FLAGS_AREA_COLS
Gerd Moellmann <gerd@gnu.org>
parents: 25029
diff changeset
558 + FRAME_FLAGS_AREA_COLS (f))
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
559
21762
b2746acaa663 (FRAME_CURSOR_X_LIMIT): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 21425
diff changeset
560 /* Maximum + 1 legitimate value for FRAME_CURSOR_X. */
b2746acaa663 (FRAME_CURSOR_X_LIMIT): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 21425
diff changeset
561 #define FRAME_CURSOR_X_LIMIT(f) \
b2746acaa663 (FRAME_CURSOR_X_LIMIT): New macro.
Richard M. Stallman <rms@gnu.org>
parents: 21425
diff changeset
562 (FRAME_WIDTH (f) + FRAME_LEFT_SCROLL_BAR_WIDTH (f))
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
563
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
564 /* Nonzero if frame F has scroll bars. */
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
565 #define FRAME_SCROLL_BARS(f) ((f)->scroll_bars)
21814
852655b4c6f9 Comment changes.
Richard M. Stallman <rms@gnu.org>
parents: 21762
diff changeset
566
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
567 #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
568 #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
569 #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
570
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
571 /* Return a pointer to the face cache of frame F. */
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
572
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
573 #define FRAME_FACE_CACHE(F) (F)->face_cache
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
574
17033
ffd6878cae02 (struct frame): New member `fontset_data'.
Karl Heuer <kwzh@gnu.org>
parents: 16588
diff changeset
575 /* 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
576 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
577 4-byte for a character. */
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
578
17033
ffd6878cae02 (struct frame): New member `fontset_data'.
Karl Heuer <kwzh@gnu.org>
parents: 16588
diff changeset
579 #define FRAME_MESSAGE_BUF_SIZE(f) (((int) (f)->width) * 4)
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
580
1653
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
581 /* 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
582 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
583 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
584 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
585 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
586 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
587 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
588
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
589 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
590 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
591
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
592 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
593 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
594 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
595 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
596 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
597 counterparts.
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
598
1776
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
599 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
600
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
601 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
602 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
603 up its contents. */
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
604
1653
fd573317f468 * frame.h (struct frame): New fields called async_visible and
Jim Blandy <jimb@redhat.com>
parents: 998
diff changeset
605 #define FRAME_SAMPLE_VISIBILITY(f) \
19696
dc5e4b1ce93c (FRAME_OBSCURED_P): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents: 17222
diff changeset
606 (((f)->async_visible && (f)->visible != (f)->async_visible) ? \
dc5e4b1ce93c (FRAME_OBSCURED_P): New macro.
Geoff Voelker <voelker@cs.washington.edu>
parents: 17222
diff changeset
607 SET_FRAME_GARBAGED (f) : 0, \
1776
20c6f4aa5843 Make scrollbar structures into lisp objects, so that they can be
Jim Blandy <jimb@redhat.com>
parents: 1710
diff changeset
608 (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
609 (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
610
25711
37ce1bad5657 (CHECK_FRAME, CHECK_LIVE_FRAME): Put code in do-while.
Gerd Moellmann <gerd@gnu.org>
parents: 25670
diff changeset
611 #define CHECK_FRAME(x, i) \
37ce1bad5657 (CHECK_FRAME, CHECK_LIVE_FRAME): Put code in do-while.
Gerd Moellmann <gerd@gnu.org>
parents: 25670
diff changeset
612 do { \
37ce1bad5657 (CHECK_FRAME, CHECK_LIVE_FRAME): Put code in do-while.
Gerd Moellmann <gerd@gnu.org>
parents: 25670
diff changeset
613 if (! FRAMEP (x)) \
37ce1bad5657 (CHECK_FRAME, CHECK_LIVE_FRAME): Put code in do-while.
Gerd Moellmann <gerd@gnu.org>
parents: 25670
diff changeset
614 x = wrong_type_argument (Qframep, (x)); \
37ce1bad5657 (CHECK_FRAME, CHECK_LIVE_FRAME): Put code in do-while.
Gerd Moellmann <gerd@gnu.org>
parents: 25670
diff changeset
615 } while (0)
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 385
diff changeset
616
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
617 #define CHECK_LIVE_FRAME(x, i) \
25711
37ce1bad5657 (CHECK_FRAME, CHECK_LIVE_FRAME): Put code in do-while.
Gerd Moellmann <gerd@gnu.org>
parents: 25670
diff changeset
618 do { \
37ce1bad5657 (CHECK_FRAME, CHECK_LIVE_FRAME): Put code in do-while.
Gerd Moellmann <gerd@gnu.org>
parents: 25670
diff changeset
619 if (! FRAMEP (x) \
37ce1bad5657 (CHECK_FRAME, CHECK_LIVE_FRAME): Put code in do-while.
Gerd Moellmann <gerd@gnu.org>
parents: 25670
diff changeset
620 || ! FRAME_LIVE_P (XFRAME (x))) \
37ce1bad5657 (CHECK_FRAME, CHECK_LIVE_FRAME): Put code in do-while.
Gerd Moellmann <gerd@gnu.org>
parents: 25670
diff changeset
621 x = wrong_type_argument (Qframe_live_p, (x)); \
37ce1bad5657 (CHECK_FRAME, CHECK_LIVE_FRAME): Put code in do-while.
Gerd Moellmann <gerd@gnu.org>
parents: 25670
diff changeset
622 } while (0)
485
8c615e453683 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 385
diff changeset
623
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
624 /* 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
625 `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
626 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
627 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
628 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
629 Vframe_list.
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
630
16051
ccf489f8596e Removed support for !MULTI_FRAME.
Karl Heuer <kwzh@gnu.org>
parents: 15390
diff changeset
631 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
632 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
633 something which executes the statement once. */
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
634
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
635 #define FOR_EACH_FRAME(list_var, frame_var) \
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
636 for ((list_var) = Vframe_list; \
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
637 (CONSP (list_var) \
25638
d02186608877 (FOR_EACH_FRAME): Use XCAR and XCDR.
Ken Raeburn <raeburn@raeburn.org>
parents: 25544
diff changeset
638 && (frame_var = XCAR (list_var), 1)); \
d02186608877 (FOR_EACH_FRAME): Use XCAR and XCDR.
Ken Raeburn <raeburn@raeburn.org>
parents: 25544
diff changeset
639 list_var = XCDR (list_var))
732
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
640
a8d94735277e *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 485
diff changeset
641
3649
e52308087b66 (Qicon): Declared.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
642 extern Lisp_Object Qframep, Qframe_live_p, Qicon;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
643
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
644 extern struct frame *last_nonminibuf_frame;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
645
20316
2a2818b0812e Protoize function declarations.
Andreas Schwab <schwab@suse.de>
parents: 19696
diff changeset
646 extern struct frame *make_terminal_frame P_ ((void));
2a2818b0812e Protoize function declarations.
Andreas Schwab <schwab@suse.de>
parents: 19696
diff changeset
647 extern struct frame *make_frame P_ ((int));
21425
69491a9294a4 (make_frame_without_minibuffer): Conditionalize on HAVE_WINDOW_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 20316
diff changeset
648 #ifdef HAVE_WINDOW_SYSTEM
20316
2a2818b0812e Protoize function declarations.
Andreas Schwab <schwab@suse.de>
parents: 19696
diff changeset
649 extern struct frame *make_minibuffer_frame P_ ((void));
2a2818b0812e Protoize function declarations.
Andreas Schwab <schwab@suse.de>
parents: 19696
diff changeset
650 extern struct frame *make_frame_without_minibuffer P_ ((Lisp_Object,
2a2818b0812e Protoize function declarations.
Andreas Schwab <schwab@suse.de>
parents: 19696
diff changeset
651 struct kboard *,
2a2818b0812e Protoize function declarations.
Andreas Schwab <schwab@suse.de>
parents: 19696
diff changeset
652 Lisp_Object));
21425
69491a9294a4 (make_frame_without_minibuffer): Conditionalize on HAVE_WINDOW_SYSTEM.
Richard M. Stallman <rms@gnu.org>
parents: 20316
diff changeset
653 #endif /* HAVE_WINDOW_SYSTEM */
20316
2a2818b0812e Protoize function declarations.
Andreas Schwab <schwab@suse.de>
parents: 19696
diff changeset
654 extern int other_visible_frames P_ ((struct frame *));
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
655
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
656 extern Lisp_Object Vframe_list;
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
657 extern Lisp_Object Vdefault_frame_alist;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
658
765
e4093444f9f8 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 732
diff changeset
659 extern Lisp_Object Vterminal_frame;
261
731afdb0842c Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
660
16051
ccf489f8596e Removed support for !MULTI_FRAME.
Karl Heuer <kwzh@gnu.org>
parents: 15390
diff changeset
661 /* 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
662
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
663 /* 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
664 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
665 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
666 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
667 takes over the window's rightmost columns. */
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
668
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
669 #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
670 (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
671 (((XINT ((w)->left) + XINT ((w)->width)) \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
672 < FRAME_WIDTH (XFRAME (WINDOW_FRAME (w)))) \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
673 ? (XINT ((w)->left) + XINT ((w)->width) \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
674 - 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
675 : FRAME_WIDTH (XFRAME (WINDOW_FRAME (w)))) \
4547dae187e9 (vertical_scroll_bar_type): Add enumerated
Richard M. Stallman <rms@gnu.org>
parents: 16051
diff changeset
676 : XINT ((w)->left))
1710
26054080a152 * frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy <jimb@redhat.com>
parents: 1653
diff changeset
677
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
678 /* 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
679 window has a mode line, don't make the scroll bar extend that far. */
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
680
1994
73ce9dd21093 Use the term `scroll bar', instead of `scrollbar'.
Jim Blandy <jimb@redhat.com>
parents: 1821
diff changeset
681 #define WINDOW_VERTICAL_SCROLL_BAR_HEIGHT(w) (window_internal_height (w))
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
682
25670
728844445e1c (SELECTED_FRAME): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25638
diff changeset
683 /* The currently selected frame. */
728844445e1c (SELECTED_FRAME): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25638
diff changeset
684
728844445e1c (SELECTED_FRAME): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25638
diff changeset
685 extern Lisp_Object selected_frame;
728844445e1c (SELECTED_FRAME): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25638
diff changeset
686
728844445e1c (SELECTED_FRAME): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25638
diff changeset
687 /* Value is a pointer to the selected frame. If the selected frame
29439
b5e905b3b506 (struct frame): Use volatile unconditionally.
Dave Love <fx@gnu.org>
parents: 28691
diff changeset
688 isn't live, abort. */
25670
728844445e1c (SELECTED_FRAME): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25638
diff changeset
689
728844445e1c (SELECTED_FRAME): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25638
diff changeset
690 #define SELECTED_FRAME() \
728844445e1c (SELECTED_FRAME): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25638
diff changeset
691 ((FRAMEP (selected_frame) \
728844445e1c (SELECTED_FRAME): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25638
diff changeset
692 && FRAME_LIVE_P (XFRAME (selected_frame))) \
728844445e1c (SELECTED_FRAME): New.
Gerd Moellmann <gerd@gnu.org>
parents: 25638
diff changeset
693 ? XFRAME (selected_frame) \
28651
2ce492de4cb9 (SELECTED_FRAME): Change definition to compile cleanly
Gerd Moellmann <gerd@gnu.org>
parents: 28417
diff changeset
694 : (abort (), (struct frame *) 0))
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
695
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
696
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
697 /***********************************************************************
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
698 Display-related Macros
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
699 ***********************************************************************/
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
700
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
701 /* Canonical y-unit on frame F. This value currently equals the line
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
702 height of the frame. Terminal specific header files are expected
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
703 to define the macro FRAME_LINE_HEIGHT. */
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
704
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
705 #define CANON_Y_UNIT(F) \
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
706 (FRAME_WINDOW_P (F) ? FRAME_LINE_HEIGHT (F) : 1)
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
707
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
708 /* Canonical x-unit on frame F. This is currently equal to the width
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
709 of the default font of F. Terminal specific headers are expected
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
710 to define the macro FRAME_DEFAULT_FONT_WIDTH. */
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
711
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
712 #define CANON_X_UNIT(F) \
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
713 (FRAME_WINDOW_P (F) ? FRAME_DEFAULT_FONT_WIDTH (F) : 1)
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
714
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
715 /* Pixel width of areas used to display truncation marks, continuation
25460
8569b5f63527 (FRAME_WINDOW_WIDTH_ARG): Add in FRAME_FLAGS_AREA_COLS
Gerd Moellmann <gerd@gnu.org>
parents: 25029
diff changeset
716 marks, overlay arrows. This is 0 for terminal frames. */
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
717
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
718 #ifdef HAVE_WINDOW_SYSTEM
31147
a158ff61b113 (FRAME_FLAGS_AREA_COLS, FRAME_FLAGS_AREA_WIDTH)
Gerd Moellmann <gerd@gnu.org>
parents: 29439
diff changeset
719
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
720 #define FRAME_FLAGS_AREA_COLS(F) \
31147
a158ff61b113 (FRAME_FLAGS_AREA_COLS, FRAME_FLAGS_AREA_WIDTH)
Gerd Moellmann <gerd@gnu.org>
parents: 29439
diff changeset
721 (FRAME_WINDOW_P (F) ? FRAME_X_FLAGS_AREA_COLS (F) : 0)
a158ff61b113 (FRAME_FLAGS_AREA_COLS, FRAME_FLAGS_AREA_WIDTH)
Gerd Moellmann <gerd@gnu.org>
parents: 29439
diff changeset
722 #define FRAME_FLAGS_AREA_WIDTH(F) \
a158ff61b113 (FRAME_FLAGS_AREA_COLS, FRAME_FLAGS_AREA_WIDTH)
Gerd Moellmann <gerd@gnu.org>
parents: 29439
diff changeset
723 (FRAME_WINDOW_P (F) ? FRAME_X_FLAGS_AREA_WIDTH (F) : 0)
a158ff61b113 (FRAME_FLAGS_AREA_COLS, FRAME_FLAGS_AREA_WIDTH)
Gerd Moellmann <gerd@gnu.org>
parents: 29439
diff changeset
724 #define FRAME_LEFT_FLAGS_AREA_WIDTH(F) \
a158ff61b113 (FRAME_FLAGS_AREA_COLS, FRAME_FLAGS_AREA_WIDTH)
Gerd Moellmann <gerd@gnu.org>
parents: 29439
diff changeset
725 (FRAME_WINDOW_P (F) ? FRAME_X_LEFT_FLAGS_AREA_WIDTH (F) : 0)
25460
8569b5f63527 (FRAME_WINDOW_WIDTH_ARG): Add in FRAME_FLAGS_AREA_COLS
Gerd Moellmann <gerd@gnu.org>
parents: 25029
diff changeset
726
31147
a158ff61b113 (FRAME_FLAGS_AREA_COLS, FRAME_FLAGS_AREA_WIDTH)
Gerd Moellmann <gerd@gnu.org>
parents: 29439
diff changeset
727 #else /* not HAVE_WINDOW_SYSTEM */
a158ff61b113 (FRAME_FLAGS_AREA_COLS, FRAME_FLAGS_AREA_WIDTH)
Gerd Moellmann <gerd@gnu.org>
parents: 29439
diff changeset
728
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
729 #define FRAME_FLAGS_AREA_WIDTH(F) 0
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
730 #define FRAME_FLAGS_AREA_COLS(F) 0
25460
8569b5f63527 (FRAME_WINDOW_WIDTH_ARG): Add in FRAME_FLAGS_AREA_COLS
Gerd Moellmann <gerd@gnu.org>
parents: 25029
diff changeset
731 #define FRAME_LEFT_FLAGS_AREA_WIDTH(F) 0
31147
a158ff61b113 (FRAME_FLAGS_AREA_COLS, FRAME_FLAGS_AREA_WIDTH)
Gerd Moellmann <gerd@gnu.org>
parents: 29439
diff changeset
732
a158ff61b113 (FRAME_FLAGS_AREA_COLS, FRAME_FLAGS_AREA_WIDTH)
Gerd Moellmann <gerd@gnu.org>
parents: 29439
diff changeset
733 #endif /* not HAVE_WINDOW_SYSTEM */
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
734
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
735
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
736
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
737
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
738 /***********************************************************************
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
739 Conversion between canonical units and pixels
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
740 ***********************************************************************/
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
741
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
742 /* Canonical x-values are fractions of CANON_X_UNIT, canonical y-unit
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
743 are fractions of CANON_Y_UNIT of a frame. Both are represented as
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
744 Lisp numbers, i.e. integers or floats. */
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
745
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
746 /* Convert canonical value X to pixels. F is the frame whose
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
747 canonical char width is to be used. X must be a Lisp integer or
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
748 float. Value is a C integer. */
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
749
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
750 #define PIXEL_X_FROM_CANON_X(F, X) \
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
751 (INTEGERP (X) \
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
752 ? XINT (X) * CANON_X_UNIT (F) \
25638
d02186608877 (FOR_EACH_FRAME): Use XCAR and XCDR.
Ken Raeburn <raeburn@raeburn.org>
parents: 25544
diff changeset
753 : (int) (XFLOAT_DATA (X) * CANON_X_UNIT (F)))
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
754
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
755 /* Convert canonical value Y to pixels. F is the frame whose
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
756 canonical character height is to be used. X must be a Lisp integer
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
757 or float. Value is a C integer. */
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
758
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
759 #define PIXEL_Y_FROM_CANON_Y(F, Y) \
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
760 (INTEGERP (Y) \
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
761 ? XINT (Y) * CANON_Y_UNIT (F) \
25638
d02186608877 (FOR_EACH_FRAME): Use XCAR and XCDR.
Ken Raeburn <raeburn@raeburn.org>
parents: 25544
diff changeset
762 : (int) (XFLOAT_DATA (Y) * CANON_Y_UNIT (F)))
25029
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
763
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
764 /* Convert pixel-value X to canonical units. F is the frame whose
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
765 canonical character width is to be used. X is a C integer. Result
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
766 is a Lisp float if X is not a multiple of the canon width,
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
767 otherwise it's a Lisp integer. */
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
768
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
769 #define CANON_X_FROM_PIXEL_X(F, X) \
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
770 ((X) % CANON_X_UNIT (F) != 0 \
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
771 ? make_float ((double) (X) / CANON_X_UNIT (F)) \
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
772 : make_number ((X) / CANON_X_UNIT (F)))
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
773
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
774 /* Convert pixel-value Y to canonical units. F is the frame whose
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
775 canonical character height is to be used. Y is a C integer.
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
776 Result is a Lisp float if Y is not a multiple of the canon width,
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
777 otherwise it's a Lisp integer. */
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
778
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
779 #define CANON_Y_FROM_PIXEL_Y(F, Y) \
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
780 ((Y) % CANON_Y_UNIT (F) \
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
781 ? make_float ((double) (Y) / CANON_Y_UNIT (F)) \
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
782 : make_number ((Y) / CANON_Y_UNIT (F)))
dc975d71a3a5 (FRAME_TOOLBAR_LINES): New.
Gerd Moellmann <gerd@gnu.org>
parents: 21814
diff changeset
783
25524
095548b9a36c Do nothing if included a second time.
Richard M. Stallman <rms@gnu.org>
parents: 25460
diff changeset
784 #endif /* not defined _FRAME_H_ */