annotate src/frame.h @ 793:e38acbeb1cae

[xemacs-hg @ 2002-03-29 04:46:17 by ben] lots o' fixes etc/ChangeLog: New file. Separated out all entries for etc/ into their own ChangeLog. Includes entries for the following files: etc/BABYL, etc/BETA, etc/CHARSETS, etc/DISTRIB, etc/Emacs.ad, etc/FTP, etc/GNUS-NEWS, etc/GOATS, etc/HELLO, etc/INSTALL, etc/MACHINES, etc/MAILINGLISTS, etc/MSDOS, etc/MYTHOLOGY, etc/NEWS, etc/OXYMORONS, etc/PACKAGES, etc/README, etc/TUTORIAL, etc/TUTORIAL.de, etc/TUTORIAL.ja, etc/TUTORIAL.ko, etc/TUTORIAL.se, etc/aliases.ksh, etc/altrasoft-logo.xpm, etc/check_cygwin_setup.sh, etc/custom/example-themes/europe-theme.el, etc/custom/example-themes/ex-custom-file, etc/custom/example-themes/example-theme.el, etc/e/eterm.ti, etc/edt-user.doc, etc/enriched.doc, etc/etags.1, etc/gnuserv.1, etc/gnuserv.README, etc/package-index.LATEST.gpg, etc/package-index.LATEST.pgp, etc/photos/jan.png, etc/recycle.xpm, etc/refcard.tex, etc/sample.Xdefaults, etc/sample.emacs, etc/sgml/CATALOG, etc/sgml/HTML32.dtd, etc/skk/SKK.tut.E, etc/smilies/Face_ase.xbm, etc/smilies/Face_ase2.xbm, etc/smilies/Face_ase3.xbm, etc/smilies/Face_smile.xbm, etc/smilies/Face_weep.xbm, etc/sounds, etc/toolbar, etc/toolbar/workshop-cap-up.xpm, etc/xemacs-ja.1, etc/xemacs.1, etc/yow.lines, etc\BETA, etc\NEWS, etc\README, etc\TUTORIAL, etc\TUTORIAL.de, etc\check_cygwin_setup.sh, etc\sample.init.el, etc\unicode\README, etc\unicode\mule-ucs\*, etc\unicode\other\* unicode/unicode-consortium/8859-16.TXT: New file. mule/english.el: Define this charset now, since a bug was fixed that formerly prevented it. mule/ethio-util.el: Fix compile errors involving Unicode `characters', which should be integers. Makefile.in.in: Always include gui.c, to fix compile error when TTY-only. EmacsFrame.c, abbrev.c, alloc.c, buffer.c, buffer.h, bytecode.c, bytecode.h, callint.c, callproc.c, casetab.c, casetab.h, charset.h, chartab.c, chartab.h, cmds.c, console-msw.c, console-msw.h, console-tty.c, console-x.c, console-x.h, console.c, console.h, data.c, database.c, device-gtk.c, device-msw.c, device-x.c, device.c, device.h, dialog-msw.c, doc.c, doprnt.c, dumper.c, dynarr.c, editfns.c, eldap.c, eldap.h, elhash.c, elhash.h, emacs.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, event-tty.c, event-unixoid.c, events.c, events.h, extents.c, extents.h, faces.c, faces.h, file-coding.c, file-coding.h, fileio.c, filelock.c, fns.c, frame-gtk.c, frame-msw.c, frame-tty.c, frame-x.c, frame.c, frame.h, free-hook.c, general-slots.h, glyphs-eimage.c, glyphs-gtk.c, glyphs-msw.c, glyphs-widget.c, glyphs-x.c, glyphs.c, glyphs.h, gpmevent.c, gtk-xemacs.c, gui-msw.c, gui-x.c, gui-x.h, gui.c, gui.h, gutter.c, gutter.h, indent.c, input-method-xlib.c, insdel.c, keymap.c, keymap.h, lisp-disunion.h, lisp-union.h, lisp.h, lread.c, lrecord.h, lstream.c, lstream.h, marker.c, menubar-gtk.c, menubar-msw.c, menubar-x.c, menubar.c, minibuf.c, mule-canna.c, mule-ccl.c, mule-charset.c, mule-wnnfns.c, native-gtk-toolbar.c, objects-msw.c, objects-tty.c, objects-x.c, objects.c, objects.h, opaque.c, opaque.h, postgresql.c, postgresql.h, print.c, process-unix.c, process.c, process.h, rangetab.c, rangetab.h, redisplay-gtk.c, redisplay-msw.c, redisplay-output.c, redisplay-tty.c, redisplay-x.c, redisplay.c, scrollbar-gtk.c, scrollbar-msw.c, scrollbar-x.c, scrollbar.c, scrollbar.h, search.c, select-gtk.c, select-x.c, sound.c, specifier.c, specifier.h, strftime.c, symbols.c, symeval.h, syntax.h, text.c, text.h, toolbar-common.c, toolbar-msw.c, toolbar.c, toolbar.h, tooltalk.c, tooltalk.h, ui-gtk.c, ui-gtk.h, undo.c, vm-limit.c, window.c, window.h: Eliminate XSETFOO. Replace all usages with wrap_foo(). Make symbol->name a Lisp_Object, not Lisp_String *. Eliminate nearly all uses of Lisp_String * in favor of Lisp_Object, and correct macros so most of them favor Lisp_Object. Create new error-behavior ERROR_ME_DEBUG_WARN -- output warnings, but at level `debug' (usually ignored). Use it when instantiating specifiers, so problems can be debugged. Move log-warning-minimum-level into C so that we can optimize ERROR_ME_DEBUG_WARN. Fix warning levels consistent with new definitions. Add default_ and parent fields to char table; not yet implemented. New fun Dynarr_verify(); use for further error checking on Dynarrs. Rearrange code at top of lisp.h in conjunction with dynarr changes. Fix eifree(). Use Eistrings in various places (format_event_object(), where_is_to_char(), and callers thereof) to avoid fixed-size strings buffers. New fun write_eistring(). Reindent and fix GPM code to follow standards. Set default MS Windows font to Lucida Console (same size as Courier New but less interline spacing, so more lines fit). Increase default frame size on Windows to 50 lines. (If that's too big for the workspace, the frame will be shrunk as necessary.) Fix problem with text files with no newlines (). (Change `convert-eol' coding system to use `nil' for autodetect, consistent with make-coding-system.) Correct compile warnings in vm-limit.c. Fix handling of reverse-direction charsets to avoid errors when opening (e.g.) mule-ucs/lisp/reldata/uiso8859-6.el. Recode some object printing methods to use write_fmt_string() instead of a fixed buffer and sprintf. Turn on display of png comments as warnings (level `info'), now that they're unobtrusive. Revamped the sound documentation. Fixed bug in redisplay w.r.t. hscroll/truncation/continuation glyphs causing jumping up and down of the lines, since they're bigger than the line size. (It was seen most obviously when there's a horizontal scroll bar, e.g. do C-h a glyph or something like that.) The problem was that the glyph-contrib-p setting on glyphs was ignored even if it was set properly, which it wasn't until now.
author ben
date Fri, 29 Mar 2002 04:49:13 +0000
parents 943eaba38521
children a5954632b187
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1 /* Define frame-object for XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2 Copyright (C) 1988, 1992, 1993, 1994 Free Software Foundation, Inc.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4 This file is part of XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6 XEmacs is free software; you can redistribute it and/or modify it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 under the terms of the GNU General Public License as published by the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8 Free Software Foundation; either version 2, or (at your option) any
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9 later version.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11 XEmacs is distributed in the hope that it will be useful, but WITHOUT
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 for more details.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17 along with XEmacs; see the file COPYING. If not, write to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 Boston, MA 02111-1307, USA. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21 /* Synched up with: FSF 19.30. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
23 #ifndef INCLUDED_frame_h_
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
24 #define INCLUDED_frame_h_
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26 #ifdef HAVE_SCROLLBARS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 #include "scrollbar.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 #ifdef HAVE_TOOLBARS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 #include "toolbar.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34 #include "device.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35 #include "glyphs.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36 #include "redisplay.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38 #define FRAME_TYPE_NAME(f) ((f)->framemeths->name)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39 #define FRAME_TYPE(f) ((f)->framemeths->symbol)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41 /******** Accessing / calling a frame method *********/
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43 #define HAS_FRAMEMETH_P(f, m) HAS_CONTYPE_METH_P ((f)->framemeths, m)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44 #define FRAMEMETH(f, m, args) CONTYPE_METH ((f)->framemeths, m, args)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45 #define MAYBE_FRAMEMETH(f, m, args) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46 MAYBE_CONTYPE_METH ((f)->framemeths, m, args)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47 #define FRAMEMETH_OR_GIVEN(f, m, args, given) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48 CONTYPE_METH_OR_GIVEN((f)->framemeths, m, args, given)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 struct frame
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 struct lcrecord_header header;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54 /* Methods for this frame's console. This can also be retrieved
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 through frame->device->console, but it's faster this way. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56 struct console_methods *framemeths;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58 /* Size of text only area of this frame, excluding scrollbars,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59 toolbars and end of line glyphs. The size can be in characters
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 or pixels, depending on units in which window system resizes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 its windows */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 int height, width;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 /* New height and width for pending size change, in the same units
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 as above. 0 if no change pending. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66 int new_height, new_width;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 /* Size of text-only are of the frame, in default font characters.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 This may be inaccurate due to rounding error */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70 int char_height, char_width;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72 /* Size of the whole frame, including scrollbars, toolbars and end
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73 of line glyphs, in pixels */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74 int pixheight, pixwidth;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76 #ifdef HAVE_TTY
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77 /* The count of frame number. This applies to TTY frames only. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78 int order_count;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
81 /* Current page number for a printer frame. */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
82 int page_number;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
83
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84 /* Width of the internal border. This is a line of background color
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85 just inside the window's border. It is normally only non-zero on
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 X frames, but we put it here to avoid introducing window system
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 dependencies. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 int internal_border_width;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90 int modiff;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91
617
af57a77cbc92 [xemacs-hg @ 2001-06-18 07:09:50 by ben]
ben
parents: 462
diff changeset
92 struct expose_ignore *subwindow_exposures;
af57a77cbc92 [xemacs-hg @ 2001-06-18 07:09:50 by ben]
ben
parents: 462
diff changeset
93 struct expose_ignore *subwindow_exposures_tail;
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95 #ifdef HAVE_SCROLLBARS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96 /* frame-local scrollbar information. See scrollbar.c. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97 int scrollbar_y_offset;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
99 /* cache of created scrollbars */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
100 struct scrollbar_instance *sb_vcache;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
101 struct scrollbar_instance *sb_hcache;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
102 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
103
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
104 #ifdef HAVE_TOOLBARS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
105 /* Size of toolbars as seen by redisplay. This is used to determine
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
106 whether to re-layout windows by a call to change_frame_size early
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
107 in redisplay_frame. */
647
b39c14581166 [xemacs-hg @ 2001-08-13 04:45:47 by ben]
ben
parents: 617
diff changeset
108 int current_toolbar_size[4];
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
109 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
110
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
111 /* Size of gutters as seen by redisplay. This is used to determine
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
112 whether to re-layout windows by a call to change_frame_size early
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
113 in redisplay_frame. */
647
b39c14581166 [xemacs-hg @ 2001-08-13 04:45:47 by ben]
ben
parents: 617
diff changeset
114 int current_gutter_bounds[4];
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
115
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
116 /* Dynamic arrays of display lines for gutters */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
117 display_line_dynarr *current_display_lines[4];
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
118 display_line_dynarr *desired_display_lines[4];
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
119
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
120 /* A structure of auxiliary data specific to the device type.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
121 struct x_frame is used for X window frames; defined in console-x.h */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
122 void *frame_data;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
123
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
124 #define FRAME_SLOT_DECLARATION
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
125 #define MARKED_SLOT(x) Lisp_Object x
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
126 #include "frameslots.h"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
127
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
128 /* Nonzero if frame is currently displayed.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
129 Mutually exclusive with iconified
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
130 JV: This now a tristate flag:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
131 Value : Emacs meaning :f-v-p : X meaning
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
132 0 : not displayed : nil : unmapped
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
133 >0 : user can access it,needs repainting : t : mapped and visible
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134 <0 : user can access it,needs no repainting : hidden :mapped and invisible
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
135 where f-v-p is the return value of frame-visible-p */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
136 int visible;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138 /* one-bit flags: */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
140 /* Is focusing onto this frame disabled? (Modal dialog boxes) */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
141 unsigned int disabled :1;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
142
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
143 /* Are we finished initializing? */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
144 unsigned int init_finished :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
145
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
146 /* Is frame marked for deletion? This is used in XSetErrorHandler(). */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
147 unsigned int being_deleted :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
148
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
149 /* Nonzero if last attempt at redisplay on this frame was preempted. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
150 unsigned int display_preempted :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
151
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
152 /* Nonzero if window is currently iconified.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
153 This and visible are mutually exclusive. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
154 unsigned int iconified :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
155
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
156 /* Nonzero if this frame should be cleared and then redrawn.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
157 Setting this will also effectively set frame_changed. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
158 unsigned int clear :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
159
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
160 /* True if frame actually has a minibuffer window on it.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
161 0 if using a minibuffer window that isn't on this frame. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
162 unsigned int has_minibuffer :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
163
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
164 /* True if frame's root window can't be split. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
165 unsigned int no_split :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
166
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
167 unsigned int top_toolbar_was_visible :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168 unsigned int bottom_toolbar_was_visible :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
169 unsigned int left_toolbar_was_visible :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
170 unsigned int right_toolbar_was_visible :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
171 /* gutter visibility */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
172 unsigned int top_gutter_was_visible :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
173 unsigned int bottom_gutter_was_visible :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
174 unsigned int left_gutter_was_visible :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
175 unsigned int right_gutter_was_visible :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
176
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
177 /* redisplay flags */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
178 unsigned int buffers_changed :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
179 unsigned int clip_changed :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
180 unsigned int extents_changed :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
181 unsigned int faces_changed :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
182 unsigned int frame_changed :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
183 unsigned int subwindows_changed :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
184 unsigned int subwindows_state_changed :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
185 unsigned int glyphs_changed :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
186 unsigned int icon_changed :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
187 unsigned int menubar_changed :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
188 unsigned int modeline_changed :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
189 unsigned int point_changed :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
190 unsigned int size_changed :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
191 unsigned int toolbar_changed :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
192 unsigned int gutter_changed :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
193 unsigned int windows_changed :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
194 unsigned int windows_structure_changed :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
195 unsigned int window_face_cache_reset :1; /* used by expose handler */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
196 unsigned int echo_area_garbaged :1; /* used by Fredisplay_echo_area */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
197 unsigned int size_slipped :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
198
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
199 unsigned int size_change_pending :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
200 unsigned int mirror_dirty :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
201
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
202 /* flag indicating if any window on this frame is displaying a subwindow */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
203 unsigned int subwindows_being_displayed :1;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
204 };
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
205
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
206 EXFUN (Fdelete_frame, 2);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
207 EXFUN (Fframe_iconified_p, 1);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
208 EXFUN (Fframe_name, 1);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
209 EXFUN (Fframe_property, 3);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
210 EXFUN (Fmake_frame, 2);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
211 EXFUN (Fmake_frame_visible, 1);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
212 EXFUN (Fraise_frame, 1);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
213 EXFUN (Fselect_frame, 1);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
214 EXFUN (Fset_frame_pointer, 2);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
215 EXFUN (Fset_frame_position, 3);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
216 EXFUN (Fset_frame_properties, 2);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
217 EXFUN (Fset_frame_size, 4);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
218
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
219 extern Lisp_Object Qbackground_toolbar_color, Qbell_volume, Qborder_color;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
220 extern Lisp_Object Qborder_width, Qbottom_toolbar_shadow_color;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
221 extern Lisp_Object Qbottom_toolbar_shadow_pixmap, Qdelete_frame;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
222 extern Lisp_Object Qdeselect_frame_hook, Qdrag_and_drop_functions, Qgc_pointer;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
223 extern Lisp_Object Qiconic, Qinitially_unmapped, Qinter_line_space;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
224 extern Lisp_Object Qinternal_border_width, Qinvisible, Qmap_frame_hook;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
225 extern Lisp_Object Qminibuffer, Qmodeline_pointer, Qmouse_enter_frame_hook;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
226 extern Lisp_Object Qmouse_leave_frame_hook, Qpointer_background;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
227 extern Lisp_Object Qpointer_color, Qpopup, Qscrollbar_placement;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
228 extern Lisp_Object Qselect_frame_hook, Qspace_pointer;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
229 extern Lisp_Object Qsynchronize_minibuffers, Qtext_pointer;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
230 extern Lisp_Object Qtoolbar_shadow_thickness, Qtop_toolbar_shadow_color;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
231 extern Lisp_Object Qtop_toolbar_shadow_pixmap, Qunmap_frame_hook;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
232 extern Lisp_Object Qunsplittable, Quse_backing_store, Qvisible, Qvisual_bell;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
233 extern Lisp_Object Vframe_icon_title_format, Vframe_title_format;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
234 extern Lisp_Object Vmouse_motion_handler;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
235
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
236
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
237 DECLARE_LRECORD (frame, struct frame);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
238 #define XFRAME(x) XRECORD (x, frame, struct frame)
617
af57a77cbc92 [xemacs-hg @ 2001-06-18 07:09:50 by ben]
ben
parents: 462
diff changeset
239 #define wrap_frame(p) wrap_record (p, frame)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
240 #define FRAMEP(x) RECORDP (x, frame)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
241 #define CHECK_FRAME(x) CHECK_RECORD (x, frame)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
242 #define CONCHECK_FRAME(x) CONCHECK_RECORD (x, frame)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
243
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
244 #define CHECK_LIVE_FRAME(x) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
245 CHECK_FRAME (x); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
246 if (! FRAME_LIVE_P (XFRAME (x))) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
247 dead_wrong_type_argument (Qframe_live_p, (x)); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
248 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
249 #define CONCHECK_LIVE_FRAME(x) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
250 CONCHECK_FRAME (x); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
251 if (! FRAME_LIVE_P (XFRAME (x))) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
252 x = wrong_type_argument (Qframe_live_p, (x)); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
253 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
254
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
255 #define FRAME_TYPE_P(f, type) EQ (FRAME_TYPE (f), Q##type)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
256
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
257 #ifdef ERROR_CHECK_TYPECHECK
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
258 INLINE_HEADER struct frame *
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
259 error_check_frame_type (struct frame * f, Lisp_Object sym);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
260 INLINE_HEADER struct frame *
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
261 error_check_frame_type (struct frame * f, Lisp_Object sym)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
262 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
263 assert (EQ (FRAME_TYPE (f), sym));
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
264 return f;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
265 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
266 # define FRAME_TYPE_DATA(f, type) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
267 ((struct type##_frame *) error_check_frame_type (f, Q##type)->frame_data)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
268 #else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
269 # define FRAME_TYPE_DATA(f, type) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
270 ((struct type##_frame *) (f)->frame_data)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
271 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
272
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
273 #define CHECK_FRAME_TYPE(x, type) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
274 do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
275 CHECK_FRAME (x); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
276 if (!FRAME_TYPE_P (XFRAME (x), type)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
277 dead_wrong_type_argument \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
278 (type##_console_methods->predicate_symbol, x); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
279 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
280 #define CONCHECK_FRAME_TYPE(x, type) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
281 do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
282 CONCHECK_FRAME (x); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
283 if (!FRAME_TYPE_P (XFRAME (x), type)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
284 x = wrong_type_argument \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
285 (type##_console_methods->predicate_symbol, x); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
286 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
287
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
288 #define FRAME_DISPLAY_P(frm) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
289 (DEVICE_DISPLAY_P (XDEVICE (FRAME_DEVICE (frm))))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
290
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
291 #define CHECK_DISPLAY_FRAME(frm) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
292 do { \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
293 CHECK_FRAME (frm); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
294 CHECK_LIVE_FRAME (frm); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
295 CHECK_DISPLAY_DEVICE (FRAME_DEVICE (XFRAME (frm))); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
296 } while (0)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
297
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
298 #define CONCHECK_DISPLAY_FRAME(frm) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
299 do { \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
300 CONCHECK_FRAME (frm); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
301 CONCHECK_LIVE_FRAME (frm); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
302 CONCHECK_DISPLAY_DEVICE (FRAME_DEVICE (XFRAME (frm))); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
303 } while (0)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
304
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
305 #define FRAME_PRINTER_P(frm) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
306 (DEVICE_PRINTER_P (XDEVICE (FRAME_DEVICE (frm))))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
307
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
308 #define CHECK_PRINTER_FRAME(frm) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
309 do { \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
310 CHECK_FRAME (frm); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
311 CHECK_LIVE_FRAME (frm); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
312 CHECK_PRINTER_DEVICE (FRAME_DEVICE (XFRAME (frm))); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
313 } while (0)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
314
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
315 #define CONCHECK_PRINTER_FRAME(frm) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
316 do { \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
317 CONCHECK_FRAME (frm); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
318 CONCHECK_LIVE_FRAME (frm); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
319 CONCHECK_PRINTER_DEVICE (FRAME_DEVICE (XFRAME (frm))); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
320 } while (0)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
321
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
322 /* #### These should be in the frame-*.h files but there are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
323 too many places where the abstraction is broken. Need to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
324 fix. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
325
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
326 #define FRAME_X_P(frm) CONSOLE_TYPESYM_X_P (FRAME_TYPE (frm))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
327 #define CHECK_X_FRAME(z) CHECK_FRAME_TYPE (z, x)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
328 #define CONCHECK_X_FRAME(z) CONCHECK_FRAME_TYPE (z, x)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
329
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents: 444
diff changeset
330 #define FRAME_GTK_P(frm) CONSOLE_TYPESYM_GTK_P (FRAME_TYPE (frm))
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents: 444
diff changeset
331 #define CHECK_GTK_FRAME(z) CHECK_FRAME_TYPE (z, gtk)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents: 444
diff changeset
332 #define CONCHECK_GTK_FRAME(z) CONCHECK_FRAME_TYPE (z, gtk)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents: 444
diff changeset
333
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
334 #define FRAME_TTY_P(frm) CONSOLE_TYPESYM_TTY_P (FRAME_TYPE (frm))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
335 #define CHECK_TTY_FRAME(z) CHECK_FRAME_TYPE (z, tty)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
336 #define CONCHECK_TTY_FRAME(z) CONCHECK_FRAME_TYPE (z, tty)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
337
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
338 #define FRAME_STREAM_P(frm) CONSOLE_TYPESYM_STREAM_P (FRAME_TYPE (frm))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
339 #define CHECK_STREAM_FRAME(z) CHECK_FRAME_TYPE (z, stream)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
340 #define CONCHECK_STREAM_FRAME(z) CONCHECK_FRAME_TYPE (z, stream)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
341
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
342 #define FRAME_WIN_P(frm) CONSOLE_TYPESYM_WIN_P (FRAME_TYPE (frm))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
343
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
344 extern int frame_changed;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
345
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
346 #define MARK_FRAME_FACES_CHANGED(f) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
347 struct frame *mffc_f = (f); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
348 mffc_f->faces_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
349 mffc_f->modiff++; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
350 if (!NILP (mffc_f->device)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
351 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
352 struct device *mffc_d = XDEVICE (mffc_f->device); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
353 MARK_DEVICE_FACES_CHANGED (mffc_d); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
354 } \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
355 else \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
356 faces_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
357 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
358
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
359 #define MARK_FRAME_GLYPHS_CHANGED(f) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
360 struct frame *mfgc_f = (f); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
361 mfgc_f->glyphs_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
362 mfgc_f->modiff++; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
363 if (!NILP (mfgc_f->device)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
364 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
365 struct device *mfgc_d = XDEVICE (mfgc_f->device); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
366 MARK_DEVICE_GLYPHS_CHANGED (mfgc_d); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
367 } \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
368 else \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
369 glyphs_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
370 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
371
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
372 #define MARK_FRAME_SUBWINDOWS_CHANGED(f) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
373 struct frame *mfgc_f = (f); \
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
374 mfgc_f->subwindows_changed = 1; \
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
375 mfgc_f->modiff++; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
376 if (!NILP (mfgc_f->device)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
377 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
378 struct device *mfgc_d = XDEVICE (mfgc_f->device); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
379 MARK_DEVICE_SUBWINDOWS_CHANGED (mfgc_d); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
380 } \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
381 else \
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
382 subwindows_changed = 1; \
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
383 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
384
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
385 #define MARK_FRAME_SUBWINDOWS_STATE_CHANGED(f) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
386 struct frame *mfgc_f = (f); \
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
387 mfgc_f->subwindows_state_changed = 1; \
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
388 mfgc_f->modiff++; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
389 if (!NILP (mfgc_f->device)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
390 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
391 struct device *mfgc_d = XDEVICE (mfgc_f->device); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
392 MARK_DEVICE_SUBWINDOWS_STATE_CHANGED (mfgc_d); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
393 } \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
394 else \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
395 subwindows_state_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
396 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
397
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
398 #define MARK_FRAME_TOOLBARS_CHANGED(f) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
399 struct frame *mftc_f = (f); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
400 mftc_f->toolbar_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
401 mftc_f->modiff++; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
402 if (!NILP (mftc_f->device)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
403 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
404 struct device *mftc_d = XDEVICE (mftc_f->device); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
405 MARK_DEVICE_TOOLBARS_CHANGED (mftc_d); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
406 } \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
407 else \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
408 toolbar_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
409 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
410
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
411 #define MARK_FRAME_GUTTERS_CHANGED(f) do { \
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
412 struct frame *mftc_f = (f); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
413 mftc_f->gutter_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
414 mftc_f->modiff++; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
415 if (!NILP (mftc_f->device)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
416 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
417 struct device *mftc_d = XDEVICE (mftc_f->device); \
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
418 MARK_DEVICE_GUTTERS_CHANGED (mftc_d); \
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
419 } \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
420 else \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
421 gutter_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
422 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
423
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
424 #define MARK_FRAME_SIZE_CHANGED(f) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
425 struct frame *mfsc_f = (f); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
426 mfsc_f->size_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
427 mfsc_f->size_change_pending = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
428 mfsc_f->modiff++; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
429 if (!NILP (mfsc_f->device)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
430 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
431 struct device *mfsc_d = XDEVICE (mfsc_f->device); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
432 MARK_DEVICE_SIZE_CHANGED (mfsc_d); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
433 } \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
434 else \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
435 size_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
436 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
437
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
438 #define MARK_FRAME_CHANGED(f) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
439 struct frame *mfc_f = (f); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
440 mfc_f->frame_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
441 mfc_f->modiff++; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
442 if (!NILP (mfc_f->device)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
443 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
444 struct device *mfc_d = XDEVICE (mfc_f->device); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
445 MARK_DEVICE_FRAME_CHANGED (mfc_d); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
446 } \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
447 else \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
448 frame_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
449 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
450
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
451 #define MARK_FRAME_WINDOWS_CHANGED(f) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
452 struct frame *mfwc_f = (f); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
453 mfwc_f->windows_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
454 mfwc_f->modiff++; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
455 if (!NILP (mfwc_f->device)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
456 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
457 struct device *mfwc_d = XDEVICE (mfwc_f->device); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
458 MARK_DEVICE_WINDOWS_CHANGED (mfwc_d); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
459 } \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
460 else \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
461 windows_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
462 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
463
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
464 #define MARK_FRAME_WINDOWS_STRUCTURE_CHANGED(f) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
465 struct frame *fwsc_f = (f); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
466 fwsc_f->windows_structure_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
467 fwsc_f->modiff++; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
468 if (!NILP (fwsc_f->device)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
469 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
470 struct device *fwsc_d = XDEVICE (fwsc_f->device); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
471 MARK_DEVICE_WINDOWS_STRUCTURE_CHANGED (fwsc_d); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
472 } \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
473 else \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
474 windows_structure_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
475 invalidate_vertical_divider_cache_in_frame (fwsc_f); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
476 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
477
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
478 #define MARK_FRAME_SIZE_SLIPPED(f) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
479 struct frame *fwsc_f = (f); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
480 fwsc_f->size_slipped = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
481 fwsc_f->modiff++; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
482 if (!NILP (fwsc_f->device)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
483 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
484 struct device *fwsc_d = XDEVICE (fwsc_f->device); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
485 MARK_DEVICE_FRAME_CHANGED (fwsc_d); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
486 } \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
487 else \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
488 frame_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
489 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
490
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
491 #define CLEAR_FRAME_SIZE_SLIPPED(f) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
492 struct frame *fwsc_f = (f); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
493 fwsc_f->size_slipped = 0; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
494 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
495
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
496 #define SET_FRAME_CLEAR(f) MARK_FRAME_CHANGED (f); (f)->clear = 1
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
497 #define FRAME_DEVICE(f) ((f)->device)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
498 #define FRAME_CONSOLE(f) DEVICE_CONSOLE (XDEVICE (FRAME_DEVICE (f)))
617
af57a77cbc92 [xemacs-hg @ 2001-06-18 07:09:50 by ben]
ben
parents: 462
diff changeset
499 #define FRAME_LIVE_P(f) (!EQ (FRAME_TYPE (f), Qdead))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
500
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
501 #define FRAME_MINIBUF_ONLY_P(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
502 EQ (FRAME_ROOT_WINDOW (f), FRAME_MINIBUF_WINDOW (f))
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
503 #define FRAME_HAS_MINIBUF_P(f) ((f)->has_minibuffer)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
504 #define FRAME_HEIGHT(f) ((f)->height)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
505 #define FRAME_WIDTH(f) ((f)->width)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
506 #define FRAME_CHARHEIGHT(f) ((f)->char_height)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
507 #define FRAME_CHARWIDTH(f) ((f)->char_width)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
508 #define FRAME_PIXHEIGHT(f) ((f)->pixheight)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
509 #define FRAME_PIXWIDTH(f) ((f)->pixwidth)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
510 #define FRAME_PAGENUMBER(f) ((f)->page_number + 0)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
511 #define FRAME_SET_PAGENUMBER(f,x) (f)->page_number = (x);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
512 #ifdef HAVE_SCROLLBARS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
513 #define FRAME_SCROLLBAR_WIDTH(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
514 (NILP ((f)->vertical_scrollbar_visible_p) ? \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
515 0 : XINT ((f)->scrollbar_width))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
516 #define FRAME_SCROLLBAR_HEIGHT(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
517 (NILP ((f)->horizontal_scrollbar_visible_p) ? \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
518 0 : XINT ((f)->scrollbar_height))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
519 #else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
520 #define FRAME_SCROLLBAR_WIDTH(f) 0
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
521 #define FRAME_SCROLLBAR_HEIGHT(f) 0
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
522 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
523
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
524 #define FW_FRAME(obj) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
525 (WINDOWP (obj) ? WINDOW_FRAME (XWINDOW (obj)) \
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
526 : (FRAMEP (obj) ? obj \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
527 : Qnil))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
528
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
529 #define FRAME_NEW_HEIGHT(f) ((f)->new_height)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
530 #define FRAME_NEW_WIDTH(f) ((f)->new_width)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
531 #define FRAME_CURSOR_X(f) ((f)->cursor_x)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
532 #define FRAME_CURSOR_Y(f) ((f)->cursor_y)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
533 #define FRAME_VISIBLE_P(f) ((f)->visible)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
534 #define FRAME_REPAINT_P(f) ((f)->visible>0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
535 #define FRAME_NO_SPLIT_P(f) ((f)->no_split)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
536 #define FRAME_ICONIFIED_P(f) ((f)->iconified)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
537 #define FRAME_FOCUS_FRAME(f) ((f)->focus_frame)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
538 #define FRAME_MINIBUF_WINDOW(f) ((f)->minibuffer_window)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
539 #define FRAME_ROOT_WINDOW(f) ((f)->root_window)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
540 /* Catch people attempting to set this. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
541 #define FRAME_SELECTED_WINDOW(f) NON_LVALUE ((f)->selected_window)
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 647
diff changeset
542 #define FRAME_SELECTED_XWINDOW(f) XWINDOW (FRAME_SELECTED_WINDOW (f))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
543 #define FRAME_LAST_NONMINIBUF_WINDOW(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
544 NON_LVALUE ((f)->last_nonminibuf_window)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
545 #define FRAME_SB_VCACHE(f) ((f)->sb_vcache)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
546 #define FRAME_SB_HCACHE(f) ((f)->sb_hcache)
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
547 #define FRAME_SUBWINDOW_CACHE(f) ((f)->subwindow_instance_cache)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
548
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
549 #if 0 /* FSFmacs */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
550
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
551 #define FRAME_VISIBLE_P(f) ((f)->visible != 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
552 #define FRAME_SET_VISIBLE(f,p) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
553 ((f)->async_visible = (p), FRAME_SAMPLE_VISIBILITY (f))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
554
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
555 /* Emacs's redisplay code could become confused if a frame's
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
556 visibility changes at arbitrary times. For example, if a frame is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
557 visible while the desired glyphs are being built, but becomes
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
558 invisible before they are updated, then some rows of the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
559 desired_glyphs will be left marked as enabled after redisplay is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
560 complete, which should never happen. The next time the frame
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
561 becomes visible, redisplay will probably barf.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
562
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
563 Currently, there are no similar situations involving iconified, but
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
564 the principle is the same.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
565
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
566 So instead of having asynchronous input handlers directly set and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
567 clear the frame's visibility and iconification flags, they just set
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
568 the async_visible and async_iconified flags; the redisplay code
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
569 calls the FRAME_SAMPLE_VISIBILITY macro before doing any redisplay,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
570 which sets visible and iconified from their asynchronous
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
571 counterparts.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
572
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
573 Synchronous code must use the FRAME_SET_VISIBLE macro.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
574
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
575 Also, if a frame used to be invisible, but has just become visible,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
576 it must be marked as garbaged, since redisplay hasn't been keeping
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
577 up its contents. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
578 #define FRAME_SAMPLE_VISIBILITY(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
579 (((f)->async_visible && ! (f)->visible) ? SET_FRAME_GARBAGED (f) : 0, \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
580 (f)->visible = (f)->async_visible, \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
581 (f)->iconified = (f)->async_iconified)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
582
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
583 #endif /* FSFmacs */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
584
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
585 #define FRAME_BORDER_WIDTH(f) ((f)->internal_border_width)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
586 #define FRAME_BORDER_HEIGHT(f) ((f)->internal_border_width)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
587
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
588 /* This returns the frame-local value; that tells you what you should
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
589 use when computing the frame size. It is *not* the actual toolbar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
590 size because that depends on the selected window. Use the macros
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
591 below for that.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
592 */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
593
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
594 #ifdef HAVE_TOOLBARS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
595 #define FRAME_RAW_THEORETICAL_TOOLBAR_VISIBLE(f, pos) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
596 (!NILP((f)->toolbar_buttons[pos]) && !NILP ((f)->toolbar_visible_p[pos]))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
597 #define FRAME_RAW_THEORETICAL_TOOLBAR_SIZE(f, pos) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
598 (!NILP ((f)->toolbar_buttons[pos]) && INTP((f)->toolbar_size[pos]) ? \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
599 (XINT ((f)->toolbar_size[pos])) : 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
600 #define FRAME_RAW_THEORETICAL_TOOLBAR_BORDER_WIDTH(f, pos) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
601 (!NILP ((f)->toolbar_buttons[pos]) && INTP((f)->toolbar_border_width[pos]) ? \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
602 (XINT ((f)->toolbar_border_width[pos])) : 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
603 #else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
604 #define FRAME_RAW_THEORETICAL_TOOLBAR_VISIBLE(f, pos) 0
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
605 #define FRAME_RAW_THEORETICAL_TOOLBAR_SIZE(f, pos) 0
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
606 #define FRAME_RAW_THEORETICAL_TOOLBAR_BORDER_WIDTH(f, pos) 0
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
607 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
608
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
609 #define FRAME_THEORETICAL_TOOLBAR_SIZE(f, pos) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
610 (FRAME_RAW_THEORETICAL_TOOLBAR_VISIBLE (f, pos) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
611 ? FRAME_RAW_THEORETICAL_TOOLBAR_SIZE (f, pos) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
612 : 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
613
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
614 #define FRAME_THEORETICAL_TOP_TOOLBAR_HEIGHT(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
615 FRAME_THEORETICAL_TOOLBAR_SIZE (f, TOP_TOOLBAR)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
616 #define FRAME_THEORETICAL_BOTTOM_TOOLBAR_HEIGHT(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
617 FRAME_THEORETICAL_TOOLBAR_SIZE (f, BOTTOM_TOOLBAR)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
618 #define FRAME_THEORETICAL_LEFT_TOOLBAR_WIDTH(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
619 FRAME_THEORETICAL_TOOLBAR_SIZE (f, LEFT_TOOLBAR)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
620 #define FRAME_THEORETICAL_RIGHT_TOOLBAR_WIDTH(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
621 FRAME_THEORETICAL_TOOLBAR_SIZE (f, RIGHT_TOOLBAR)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
622
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
623 #define FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH(f, pos) \
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
624 (FRAME_RAW_THEORETICAL_TOOLBAR_VISIBLE (f, pos) \
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
625 ? FRAME_RAW_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, pos) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
626 : 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
627
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
628 #define FRAME_THEORETICAL_TOP_TOOLBAR_BORDER_WIDTH(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
629 FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, TOP_TOOLBAR)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
630 #define FRAME_THEORETICAL_BOTTOM_TOOLBAR_BORDER_WIDTH(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
631 FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, BOTTOM_TOOLBAR)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
632 #define FRAME_THEORETICAL_LEFT_TOOLBAR_BORDER_WIDTH(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
633 FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, LEFT_TOOLBAR)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
634 #define FRAME_THEORETICAL_RIGHT_TOOLBAR_BORDER_WIDTH(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
635 FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, RIGHT_TOOLBAR)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
636
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
637 /* This returns the window-local value rather than the frame-local value;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
638 that tells you about what's actually visible rather than what should
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
639 be used when computing the frame size. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
640
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
641 #ifdef HAVE_TOOLBARS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
642 #define FRAME_RAW_REAL_TOOLBAR_VISIBLE(f, pos) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
643 (HAS_DEVMETH_P (XDEVICE (FRAME_DEVICE (f)), initialize_frame_toolbars) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
644 && !NILP (XWINDOW (FRAME_LAST_NONMINIBUF_WINDOW (f))->toolbar_visible_p[pos]))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
645 #define FRAME_RAW_REAL_TOOLBAR_BORDER_WIDTH(f, pos) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
646 ((INTP (XWINDOW \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
647 (FRAME_LAST_NONMINIBUF_WINDOW (f))->toolbar_border_width[pos])) ? \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
648 (XINT (XWINDOW \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
649 (FRAME_LAST_NONMINIBUF_WINDOW (f))->toolbar_border_width[pos])) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
650 : 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
651 #define FRAME_RAW_REAL_TOOLBAR_SIZE(f, pos) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
652 ((INTP (XWINDOW \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
653 (FRAME_LAST_NONMINIBUF_WINDOW (f))->toolbar_size[pos])) ? \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
654 (XINT (XWINDOW \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
655 (FRAME_LAST_NONMINIBUF_WINDOW (f))->toolbar_size[pos])) : 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
656 #define FRAME_REAL_TOOLBAR(f, pos) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
657 (XWINDOW (FRAME_LAST_NONMINIBUF_WINDOW (f))->toolbar[pos])
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
658 #else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
659 #define FRAME_RAW_REAL_TOOLBAR_VISIBLE(f, pos) 0
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
660 #define FRAME_RAW_REAL_TOOLBAR_BORDER_WIDTH(f, pos) 0
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
661 #define FRAME_RAW_REAL_TOOLBAR_SIZE(f, pos) 0
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
662 #define FRAME_REAL_TOOLBAR(f, pos) Qnil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
663 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
664
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
665 /* Note to Chuck
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
666 Note to Chuck
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
667 Note to Chuck:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
668
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
669 The former definitions of FRAME_REAL_FOO_TOOLBAR_VISIBLE
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
670 looked at the toolbar data to see what was there. The
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
671 current ones look at the current values of the specifiers.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
672 This is a semantic change; the former definition returned
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
673 what was *actually* there right at the moment, while the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
674 current one returns what *ought* to be there once redisplay
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
675 has run to completion. I think this new definition is more
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
676 correct in almost all circumstances and is much less likely
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
677 to lead to strange race conditions. I'm not completely
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
678 sure that there aren't some places in the redisplay code
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
679 that use these macros and expect the former semantics, so
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
680 if you encounter some odd toolbar behavior, you might want
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
681 to look into this. --ben */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
682
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
683 #define FRAME_REAL_TOOLBAR_VISIBLE(f, pos) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
684 ((!NILP (FRAME_REAL_TOOLBAR (f, pos)) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
685 && FRAME_RAW_REAL_TOOLBAR_SIZE (f, pos) > 0) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
686 ? FRAME_RAW_REAL_TOOLBAR_VISIBLE (f, pos) \
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
687 : 0)
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
688 #define FRAME_REAL_TOOLBAR_SIZE(f, pos) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
689 ((!NILP (FRAME_REAL_TOOLBAR (f, pos)) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
690 && FRAME_RAW_REAL_TOOLBAR_VISIBLE (f, pos)) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
691 ? FRAME_RAW_REAL_TOOLBAR_SIZE (f, pos) \
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
692 : 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
693 #define FRAME_REAL_TOOLBAR_BORDER_WIDTH(f, pos) \
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
694 ((!NILP (FRAME_REAL_TOOLBAR (f, pos)) \
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
695 && FRAME_RAW_REAL_TOOLBAR_VISIBLE (f, pos)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
696 ? FRAME_RAW_REAL_TOOLBAR_BORDER_WIDTH (f, pos) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
697 : 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
698
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
699 #define FRAME_REAL_TOP_TOOLBAR_HEIGHT(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
700 FRAME_REAL_TOOLBAR_SIZE (f, TOP_TOOLBAR)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
701 #define FRAME_REAL_BOTTOM_TOOLBAR_HEIGHT(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
702 FRAME_REAL_TOOLBAR_SIZE (f, BOTTOM_TOOLBAR)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
703 #define FRAME_REAL_LEFT_TOOLBAR_WIDTH(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
704 FRAME_REAL_TOOLBAR_SIZE (f, LEFT_TOOLBAR)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
705 #define FRAME_REAL_RIGHT_TOOLBAR_WIDTH(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
706 FRAME_REAL_TOOLBAR_SIZE (f, RIGHT_TOOLBAR)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
707
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
708 #define FRAME_REAL_TOP_TOOLBAR_BORDER_WIDTH(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
709 FRAME_REAL_TOOLBAR_BORDER_WIDTH (f, TOP_TOOLBAR)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
710 #define FRAME_REAL_BOTTOM_TOOLBAR_BORDER_WIDTH(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
711 FRAME_REAL_TOOLBAR_BORDER_WIDTH (f, BOTTOM_TOOLBAR)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
712 #define FRAME_REAL_LEFT_TOOLBAR_BORDER_WIDTH(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
713 FRAME_REAL_TOOLBAR_BORDER_WIDTH (f, LEFT_TOOLBAR)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
714 #define FRAME_REAL_RIGHT_TOOLBAR_BORDER_WIDTH(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
715 FRAME_REAL_TOOLBAR_BORDER_WIDTH (f, RIGHT_TOOLBAR)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
716
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
717 #define FRAME_REAL_TOP_TOOLBAR_VISIBLE(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
718 FRAME_REAL_TOOLBAR_VISIBLE (f, TOP_TOOLBAR)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
719 #define FRAME_REAL_BOTTOM_TOOLBAR_VISIBLE(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
720 FRAME_REAL_TOOLBAR_VISIBLE (f, BOTTOM_TOOLBAR)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
721 #define FRAME_REAL_LEFT_TOOLBAR_VISIBLE(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
722 FRAME_REAL_TOOLBAR_VISIBLE (f, LEFT_TOOLBAR)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
723 #define FRAME_REAL_RIGHT_TOOLBAR_VISIBLE(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
724 FRAME_REAL_TOOLBAR_VISIBLE (f, RIGHT_TOOLBAR)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
725
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
726 #define FRAME_TOP_BORDER_START(f) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
727 (FRAME_REAL_TOP_TOOLBAR_HEIGHT (f) + \
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
728 2 * FRAME_REAL_TOP_TOOLBAR_BORDER_WIDTH (f))
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
729 #define FRAME_TOP_BORDER_END(f) \
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
730 (FRAME_TOP_BORDER_START (f) + FRAME_BORDER_HEIGHT (f))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
731
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
732 #define FRAME_BOTTOM_BORDER_START(f) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
733 (FRAME_PIXHEIGHT (f) - FRAME_BORDER_HEIGHT (f) - \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
734 FRAME_REAL_BOTTOM_TOOLBAR_HEIGHT (f) - \
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
735 2 * FRAME_REAL_BOTTOM_TOOLBAR_BORDER_WIDTH (f))
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
736 #define FRAME_BOTTOM_BORDER_END(f) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
737 (FRAME_PIXHEIGHT (f) - FRAME_REAL_BOTTOM_TOOLBAR_HEIGHT (f) - \
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
738 2 * FRAME_REAL_BOTTOM_TOOLBAR_BORDER_WIDTH (f))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
739
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
740 #define FRAME_LEFT_BORDER_START(f) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
741 (FRAME_REAL_LEFT_TOOLBAR_WIDTH (f) + \
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
742 2 * FRAME_REAL_LEFT_TOOLBAR_BORDER_WIDTH (f))
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
743 #define FRAME_LEFT_BORDER_END(f) \
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
744 (FRAME_LEFT_BORDER_START (f) + FRAME_BORDER_WIDTH (f))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
745
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
746 #define FRAME_RIGHT_BORDER_START(f) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
747 (FRAME_PIXWIDTH (f) - FRAME_BORDER_WIDTH (f) - \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
748 FRAME_REAL_RIGHT_TOOLBAR_WIDTH(f) - \
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
749 2 * FRAME_REAL_RIGHT_TOOLBAR_BORDER_WIDTH (f))
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
750 #define FRAME_RIGHT_BORDER_END(f) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
751 (FRAME_PIXWIDTH (f) - FRAME_REAL_RIGHT_TOOLBAR_WIDTH (f) - \
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
752 2 * FRAME_REAL_RIGHT_TOOLBAR_BORDER_WIDTH(f))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
753
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
754 /* Equivalent in FSF Emacs:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
755
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
756 FOR_EACH_FRAME (LIST_VAR, FRAME_VAR) followed by a statement is a
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
757 `for' loop which iterates over the elements of Vframe_list. The
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
758 loop will set FRAME_VAR, a Lisp_Object, to each frame in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
759 Vframe_list in succession and execute the statement. LIST_VAR
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
760 should be a Lisp_Object too; it is used to iterate through the
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
761 Vframe_list.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
762 */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
763
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
764 /* NO_BREAK means that "break" doesn't do what you think it does!
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
765 Use goto instead. "continue" is OK, though. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
766 #define FRAME_LOOP_NO_BREAK(frmcons, devcons, concons) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
767 DEVICE_LOOP_NO_BREAK (devcons, concons) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
768 DEVICE_FRAME_LOOP (frmcons, XDEVICE (XCAR (devcons)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
769
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
770 void update_frame_title (struct frame *f);
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
771 Lisp_Object next_frame (Lisp_Object, Lisp_Object, Lisp_Object);
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
772 Lisp_Object previous_frame (Lisp_Object, Lisp_Object, Lisp_Object);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
773 void pixel_to_char_size (struct frame *f, int pixel_width, int pixel_height,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
774 int *char_width, int *char_height);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
775 void char_to_pixel_size (struct frame *f, int char_width, int char_height,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
776 int *pixel_width, int *pixel_height);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
777 void round_size_to_char (struct frame *f, int in_width, int in_height,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
778 int *out_width, int *out_height);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
779 void pixel_to_real_char_size (struct frame *f, int pixel_width, int pixel_height,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
780 int *char_width, int *char_height);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
781 void char_to_real_pixel_size (struct frame *f, int char_width, int char_height,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
782 int *pixel_width, int *pixel_height);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
783 void round_size_to_real_char (struct frame *f, int in_width, int in_height,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
784 int *out_width, int *out_height);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
785 void change_frame_size (struct frame *frame,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
786 int newlength, int newwidth,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
787 int delay);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
788 void adjust_frame_size (struct frame *frame);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
789 void frame_size_slipped (Lisp_Object specifier, struct frame *f,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
790 Lisp_Object oldval);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
791 void hold_frame_size_changes (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
792 void unhold_one_frame_size_changes (struct frame *f);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
793 void unhold_frame_size_changes (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
794 void select_frame_1 (Lisp_Object frame);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
795 void select_frame_2 (Lisp_Object frame);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
796 struct frame *selected_frame (void);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
797 struct frame *device_selected_frame (struct device *d);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
798 struct frame *decode_frame (Lisp_Object frame);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
799 struct frame *decode_frame_or_selected (Lisp_Object cdf);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
800 Lisp_Object make_frame (struct frame *f);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
801 int other_visible_frames (struct frame *f);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
802 void delete_frame_internal (struct frame *f, int force,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
803 int called_from_delete_device,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
804 int from_io_error);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
805 void io_error_delete_frame (Lisp_Object frame);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
806 Lisp_Object find_some_frame (int (*predicate) (Lisp_Object, void *),
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
807 void *closure);
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
808 int device_matches_device_spec (Lisp_Object device, Lisp_Object device_spec);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
809 Lisp_Object frame_first_window (struct frame *f);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
810 int show_gc_cursor (struct frame *f, Lisp_Object cursor);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
811 void set_frame_selected_window (struct frame *f, Lisp_Object window);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
812 int is_surrogate_for_selected_frame (struct frame *f);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
813 void update_frame_icon (struct frame *f);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
814 void invalidate_vertical_divider_cache_in_frame (struct frame *f);
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
815
438
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
816 void init_frame (void);
84b14dcb0985 Import from CVS: tag r21-2-27
cvs
parents: 428
diff changeset
817
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 438
diff changeset
818 #endif /* INCLUDED_frame_h_ */