annotate src/frame.h @ 617:af57a77cbc92

[xemacs-hg @ 2001-06-18 07:09:50 by ben] --------------------------------------------------------------- DOCUMENTATION FIXES: --------------------------------------------------------------- eval.c: Correct documentation. elhash.c: Doc correction. --------------------------------------------------------------- LISP OBJECT CLEANUP: --------------------------------------------------------------- bytecode.h, buffer.h, casetab.h, chartab.h, console-msw.h, console.h, database.c, device.h, eldap.h, elhash.h, events.h, extents.h, faces.h, file-coding.h, frame.h, glyphs.h, gui-x.h, gui.h, keymap.h, lisp-disunion.h, lisp-union.h, lisp.h, lrecord.h, lstream.h, mule-charset.h, objects.h, opaque.h, postgresql.h, process.h, rangetab.h, specifier.h, toolbar.h, tooltalk.h, ui-gtk.h: Add wrap_* to all objects (it was already there for a few of them) -- an expression to encapsulate a pointer into a Lisp object, rather than the inconvenient XSET*. "wrap" was chosen because "make" as in make_int(), make_char() is not appropriate. (It implies allocation. The issue does not exist for ints and chars because they are not allocated.) Full error checking has been added to these expressions. When used without error checking, non-union build, use of these expressions will incur no loss of efficiency. (In fact, XSET* is now defined in terms of wrap_* in a non-union build.) In a union build, you will also get no loss of efficiency provided that you have a decent optimizing compiler, and a compiler that either understands inlines or automatically inlines those particular functions. (And since people don't normally do their production builds on union, it doesn't matter.) Update the sample Lisp object definition in lrecord.h accordingly. dumper.c: Fix places in dumper that referenced wrap_object to reference its new name, wrap_pointer_1. buffer.c, bufslots.h, conslots.h, console.c, console.h, devslots.h, device.c, device.h, frame.c, frame.h, frameslots.h, window.c, window.h, winslots.h: -- Extract out the Lisp objects of `struct device' into devslots.h, just like for the other structures. -- Extract out the remaining (not copied into the window config) Lisp objects in `struct window' into winslots.h; use different macros (WINDOW_SLOT vs. WINDOW_SAVED_SLOT) to differentiate them. -- Eliminate the `dead' flag of `struct frame', since it duplicates information already available in `framemeths', and fix FRAME_LIVE_P accordingly. (Devices and consoles already work this way.) -- In *slots.h, switch to system where MARKED_SLOT is automatically undef'd at the end of the file. (Follows what winslots.h already does.) -- Update the comments at the beginning of *slots.h to be accurate. -- When making any of the above objects dead, zero it out entirely and reset all Lisp object slots to Qnil. (We were already doing this somewhat, but not consistently.) This (1) Eliminates the possibility of extra objects hanging around that ought to be GC'd, (2) Causes an immediate crash if anyone tries to access a structure in one of these objects, (3) Ensures consistent behavior wrt dead objects. dialog-msw.c: Use internal_object_printer, since this object should not escape. --------------------------------------------------------------- FIXING A CRASH THAT I HIT ONCE (AND A RELATED BAD BEHAVIOR): --------------------------------------------------------------- eval.c: Fix up some comments about the FSF implementation. Fix two nasty bugs: (1) condition_case_unwind frees the conses sitting in the catch->tag slot too quickly, resulting in a crash that I hit. (2) catches need to be unwound one at a time when calling unwind-protect code, rather than all at once at the end; otherwise, incorrect behavior can result. (A comment shows exactly how.) backtrace.h: Improve comment about FSF differences in the handler stack. --------------------------------------------------------------- FIXING A CRASH THAT I REPEATEDLY HIT WHEN USING THE MOUSE WHEEL UNDER MSWINDOWS: --------------------------------------------------------------- Basic idea: My crash is due either to a dead, non-marked, GC-collected frame inside of a window mirror, or a prematurely freed window mirror. We need to mark the Lisp objects inside of window mirrors. Tracking the lifespan of window mirrors and scrollbar instances is extremely hard, and there may well be lurking bugs where such objects are freed too soon. The only safe way to fix these problems (and it fixes both problems at once) is to make both of these structures Lisp objects. lrecord.h, emacs.c, inline.c, scrollbar-gtk.c, scrollbar-msw.c, scrollbar-x.c, scrollbar.c, scrollbar.h, symsinit.h: Make scrollbar instances actual Lisp objects. Mark the window mirrors in them. inline.c needs to know about scrollbar.h now. Record the new type in lrecord.h. Fix up scrollbar-*.c appropriately. Create a hash table in scrollbar-msw.c so that the scrollbar instances stored in scrollbar HWND's are properly GC-protected. Create complex_vars_of_scrollbar_mswindows() to create the hash table at startup, and call it from emacs.c. Don't store the scrollbar instance as a property of the GTK scrollbar, as it's not used and if we did this, we'd have to separately GC-protect it in a hash table, like in MS Windows. lrecord.h, frame.h, frame.c, frameslots.h, redisplay.c, window.c, window.h: Move mark_window_mirror from redisplay.c to window.c. Make window mirrors actual Lisp objects. Tell lrecord.h about them. Change the window mirror member of struct frame from a pointer to a Lisp object, and add XWINDOW_MIRROR in appropriate places. Mark the scrollbar instances in the window mirror. redisplay.c, redisplay.h, alloc.c: Delete mark_redisplay. Don't call mark_redisplay. We now mark frame-specific structures in mark_frame. NOTE: I also deleted an extremely questionable call to update_frame_window_mirrors(). It was extremely questionable before, and now totally impossible, since it will create Lisp objects during redisplay. frame.c: Mark the scrollbar instances, which are now Lisp objects. Call mark_gutter() here, not in mark_redisplay(). gutter.c: Update comments about correct marking. --------------------------------------------------------------- ISSUES BROUGHT UP BY MARTIN: --------------------------------------------------------------- buffer.h: Put back these macros the way Steve T and I think they ought to be. I already explained in a previous changelog entry why I think these macros should be the way I'd defined them. Once again: We fix these macros so they don't care about the type of their lvalues. The non-C-string equivalents of these already function in the same way, and it's correct because it should be OK to pass in a CBufbyte *, a BufByte *, a Char_Binary *, an UChar_Binary *, etc. The whole reason for these different types is to work around errors caused by signed-vs-unsigned non-matching types. Any possible error that might be caught in a DFC macro would also be caught wherever the argument is used elsewhere. So creating multiple macro versions would add no useful error-checking and just further complicate an already complicated area. As for Martin's "ANSI aliasing" bug, XEmacs is not ANSI-aliasing clean and probably never will be. Unless the board agrees to change XEmacs in this way (and we really don't want to go down that road), this is not a bug. sound.h: Undo Martin's type change. signal.c: Fix problem identified by Martin with Linux and g++ due to non-standard declaration of setitimer(). systime.h: Update the docs for "qxe_" to point out why making the encapsulation explicit is always the right way to go. (setitimer() itself serves as an example.) For 21.4: update-elc-2.el: Correct misplaced parentheses, making lisp/mule not get recompiled.
author ben
date Mon, 18 Jun 2001 07:10:32 +0000
parents 0784d089fdc9
children b39c14581166
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. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
108 unsigned int current_toolbar_size[4];
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. */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
114 unsigned int current_gutter_bounds[4];
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)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
239 #define XSETFRAME(x, p) XSETRECORD (x, p, frame)
617
af57a77cbc92 [xemacs-hg @ 2001-06-18 07:09:50 by ben]
ben
parents: 462
diff changeset
240 #define wrap_frame(p) wrap_record (p, frame)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
241 #define FRAMEP(x) RECORDP (x, frame)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
242 #define CHECK_FRAME(x) CHECK_RECORD (x, frame)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
243 #define CONCHECK_FRAME(x) CONCHECK_RECORD (x, frame)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
244
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
245 #define CHECK_LIVE_FRAME(x) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
246 CHECK_FRAME (x); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
247 if (! FRAME_LIVE_P (XFRAME (x))) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
248 dead_wrong_type_argument (Qframe_live_p, (x)); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
249 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
250 #define CONCHECK_LIVE_FRAME(x) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
251 CONCHECK_FRAME (x); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
252 if (! FRAME_LIVE_P (XFRAME (x))) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
253 x = wrong_type_argument (Qframe_live_p, (x)); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
254 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
255
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
256 #define FRAME_TYPE_P(f, type) EQ (FRAME_TYPE (f), Q##type)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
257
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
258 #ifdef ERROR_CHECK_TYPECHECK
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
259 INLINE_HEADER struct frame *
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
260 error_check_frame_type (struct frame * f, Lisp_Object sym);
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
261 INLINE_HEADER struct frame *
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
262 error_check_frame_type (struct frame * f, Lisp_Object sym)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
263 {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
264 assert (EQ (FRAME_TYPE (f), sym));
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
265 return f;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
266 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
267 # define FRAME_TYPE_DATA(f, type) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
268 ((struct type##_frame *) error_check_frame_type (f, Q##type)->frame_data)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
269 #else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
270 # define FRAME_TYPE_DATA(f, type) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
271 ((struct type##_frame *) (f)->frame_data)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
272 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
273
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
274 #define CHECK_FRAME_TYPE(x, type) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
275 do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
276 CHECK_FRAME (x); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
277 if (!FRAME_TYPE_P (XFRAME (x), type)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
278 dead_wrong_type_argument \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
279 (type##_console_methods->predicate_symbol, x); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
280 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
281 #define CONCHECK_FRAME_TYPE(x, type) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
282 do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
283 CONCHECK_FRAME (x); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
284 if (!FRAME_TYPE_P (XFRAME (x), type)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
285 x = wrong_type_argument \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
286 (type##_console_methods->predicate_symbol, x); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
287 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
288
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
289 #define FRAME_DISPLAY_P(frm) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
290 (DEVICE_DISPLAY_P (XDEVICE (FRAME_DEVICE (frm))))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
291
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
292 #define CHECK_DISPLAY_FRAME(frm) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
293 do { \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
294 CHECK_FRAME (frm); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
295 CHECK_LIVE_FRAME (frm); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
296 CHECK_DISPLAY_DEVICE (FRAME_DEVICE (XFRAME (frm))); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
297 } while (0)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
298
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
299 #define CONCHECK_DISPLAY_FRAME(frm) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
300 do { \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
301 CONCHECK_FRAME (frm); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
302 CONCHECK_LIVE_FRAME (frm); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
303 CONCHECK_DISPLAY_DEVICE (FRAME_DEVICE (XFRAME (frm))); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
304 } while (0)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
305
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
306 #define FRAME_PRINTER_P(frm) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
307 (DEVICE_PRINTER_P (XDEVICE (FRAME_DEVICE (frm))))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
308
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
309 #define CHECK_PRINTER_FRAME(frm) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
310 do { \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
311 CHECK_FRAME (frm); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
312 CHECK_LIVE_FRAME (frm); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
313 CHECK_PRINTER_DEVICE (FRAME_DEVICE (XFRAME (frm))); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
314 } while (0)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
315
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
316 #define CONCHECK_PRINTER_FRAME(frm) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
317 do { \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
318 CONCHECK_FRAME (frm); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
319 CONCHECK_LIVE_FRAME (frm); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
320 CONCHECK_PRINTER_DEVICE (FRAME_DEVICE (XFRAME (frm))); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
321 } while (0)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
322
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
323 /* #### These should be in the frame-*.h files but there are
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
324 too many places where the abstraction is broken. Need to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
325 fix. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
326
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
327 #define FRAME_X_P(frm) CONSOLE_TYPESYM_X_P (FRAME_TYPE (frm))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
328 #define CHECK_X_FRAME(z) CHECK_FRAME_TYPE (z, x)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
329 #define CONCHECK_X_FRAME(z) CONCHECK_FRAME_TYPE (z, x)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
330
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents: 444
diff changeset
331 #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
332 #define CHECK_GTK_FRAME(z) CHECK_FRAME_TYPE (z, gtk)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents: 444
diff changeset
333 #define CONCHECK_GTK_FRAME(z) CONCHECK_FRAME_TYPE (z, gtk)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents: 444
diff changeset
334
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
335 #define FRAME_TTY_P(frm) CONSOLE_TYPESYM_TTY_P (FRAME_TYPE (frm))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
336 #define CHECK_TTY_FRAME(z) CHECK_FRAME_TYPE (z, tty)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
337 #define CONCHECK_TTY_FRAME(z) CONCHECK_FRAME_TYPE (z, tty)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
338
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
339 #define FRAME_STREAM_P(frm) CONSOLE_TYPESYM_STREAM_P (FRAME_TYPE (frm))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
340 #define CHECK_STREAM_FRAME(z) CHECK_FRAME_TYPE (z, stream)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
341 #define CONCHECK_STREAM_FRAME(z) CONCHECK_FRAME_TYPE (z, stream)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
342
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
343 #define FRAME_WIN_P(frm) CONSOLE_TYPESYM_WIN_P (FRAME_TYPE (frm))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
344
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
345 extern int frame_changed;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
346
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
347 #define MARK_FRAME_FACES_CHANGED(f) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
348 struct frame *mffc_f = (f); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
349 mffc_f->faces_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
350 mffc_f->modiff++; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
351 if (!NILP (mffc_f->device)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
352 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
353 struct device *mffc_d = XDEVICE (mffc_f->device); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
354 MARK_DEVICE_FACES_CHANGED (mffc_d); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
355 } \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
356 else \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
357 faces_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
358 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
359
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
360 #define MARK_FRAME_GLYPHS_CHANGED(f) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
361 struct frame *mfgc_f = (f); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
362 mfgc_f->glyphs_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
363 mfgc_f->modiff++; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
364 if (!NILP (mfgc_f->device)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
365 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
366 struct device *mfgc_d = XDEVICE (mfgc_f->device); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
367 MARK_DEVICE_GLYPHS_CHANGED (mfgc_d); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
368 } \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
369 else \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
370 glyphs_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
371 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
372
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
373 #define MARK_FRAME_SUBWINDOWS_CHANGED(f) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
374 struct frame *mfgc_f = (f); \
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
375 mfgc_f->subwindows_changed = 1; \
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
376 mfgc_f->modiff++; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
377 if (!NILP (mfgc_f->device)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
378 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
379 struct device *mfgc_d = XDEVICE (mfgc_f->device); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
380 MARK_DEVICE_SUBWINDOWS_CHANGED (mfgc_d); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
381 } \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
382 else \
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
383 subwindows_changed = 1; \
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
384 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
385
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
386 #define MARK_FRAME_SUBWINDOWS_STATE_CHANGED(f) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
387 struct frame *mfgc_f = (f); \
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
388 mfgc_f->subwindows_state_changed = 1; \
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
389 mfgc_f->modiff++; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
390 if (!NILP (mfgc_f->device)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
391 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
392 struct device *mfgc_d = XDEVICE (mfgc_f->device); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
393 MARK_DEVICE_SUBWINDOWS_STATE_CHANGED (mfgc_d); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
394 } \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
395 else \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
396 subwindows_state_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
397 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
398
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
399 #define MARK_FRAME_TOOLBARS_CHANGED(f) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
400 struct frame *mftc_f = (f); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
401 mftc_f->toolbar_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
402 mftc_f->modiff++; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
403 if (!NILP (mftc_f->device)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
404 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
405 struct device *mftc_d = XDEVICE (mftc_f->device); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
406 MARK_DEVICE_TOOLBARS_CHANGED (mftc_d); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
407 } \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
408 else \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
409 toolbar_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
410 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
411
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
412 #define MARK_FRAME_GUTTERS_CHANGED(f) do { \
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
413 struct frame *mftc_f = (f); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
414 mftc_f->gutter_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
415 mftc_f->modiff++; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
416 if (!NILP (mftc_f->device)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
417 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
418 struct device *mftc_d = XDEVICE (mftc_f->device); \
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
419 MARK_DEVICE_GUTTERS_CHANGED (mftc_d); \
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
420 } \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
421 else \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
422 gutter_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
423 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
424
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
425 #define MARK_FRAME_SIZE_CHANGED(f) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
426 struct frame *mfsc_f = (f); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
427 mfsc_f->size_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
428 mfsc_f->size_change_pending = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
429 mfsc_f->modiff++; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
430 if (!NILP (mfsc_f->device)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
431 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
432 struct device *mfsc_d = XDEVICE (mfsc_f->device); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
433 MARK_DEVICE_SIZE_CHANGED (mfsc_d); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
434 } \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
435 else \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
436 size_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
437 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
438
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
439 #define MARK_FRAME_CHANGED(f) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
440 struct frame *mfc_f = (f); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
441 mfc_f->frame_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
442 mfc_f->modiff++; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
443 if (!NILP (mfc_f->device)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
444 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
445 struct device *mfc_d = XDEVICE (mfc_f->device); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
446 MARK_DEVICE_FRAME_CHANGED (mfc_d); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
447 } \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
448 else \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
449 frame_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
450 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
451
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
452 #define MARK_FRAME_WINDOWS_CHANGED(f) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
453 struct frame *mfwc_f = (f); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
454 mfwc_f->windows_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
455 mfwc_f->modiff++; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
456 if (!NILP (mfwc_f->device)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
457 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
458 struct device *mfwc_d = XDEVICE (mfwc_f->device); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
459 MARK_DEVICE_WINDOWS_CHANGED (mfwc_d); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
460 } \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
461 else \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
462 windows_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
463 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
464
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
465 #define MARK_FRAME_WINDOWS_STRUCTURE_CHANGED(f) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
466 struct frame *fwsc_f = (f); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
467 fwsc_f->windows_structure_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
468 fwsc_f->modiff++; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
469 if (!NILP (fwsc_f->device)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
470 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
471 struct device *fwsc_d = XDEVICE (fwsc_f->device); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
472 MARK_DEVICE_WINDOWS_STRUCTURE_CHANGED (fwsc_d); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
473 } \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
474 else \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
475 windows_structure_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
476 invalidate_vertical_divider_cache_in_frame (fwsc_f); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
477 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
478
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
479 #define MARK_FRAME_SIZE_SLIPPED(f) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
480 struct frame *fwsc_f = (f); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
481 fwsc_f->size_slipped = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
482 fwsc_f->modiff++; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
483 if (!NILP (fwsc_f->device)) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
484 { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
485 struct device *fwsc_d = XDEVICE (fwsc_f->device); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
486 MARK_DEVICE_FRAME_CHANGED (fwsc_d); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
487 } \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
488 else \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
489 frame_changed = 1; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
490 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
491
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
492 #define CLEAR_FRAME_SIZE_SLIPPED(f) do { \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
493 struct frame *fwsc_f = (f); \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
494 fwsc_f->size_slipped = 0; \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
495 } while (0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
496
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
497 #define SET_FRAME_CLEAR(f) MARK_FRAME_CHANGED (f); (f)->clear = 1
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
498 #define FRAME_DEVICE(f) ((f)->device)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
499 #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
500 #define FRAME_LIVE_P(f) (!EQ (FRAME_TYPE (f), Qdead))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
501
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
502 #define FRAME_MINIBUF_ONLY_P(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
503 EQ (FRAME_ROOT_WINDOW (f), FRAME_MINIBUF_WINDOW (f))
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
504 #define FRAME_HAS_MINIBUF_P(f) ((f)->has_minibuffer)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
505 #define FRAME_HEIGHT(f) ((f)->height)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
506 #define FRAME_WIDTH(f) ((f)->width)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
507 #define FRAME_CHARHEIGHT(f) ((f)->char_height)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
508 #define FRAME_CHARWIDTH(f) ((f)->char_width)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
509 #define FRAME_PIXHEIGHT(f) ((f)->pixheight)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
510 #define FRAME_PIXWIDTH(f) ((f)->pixwidth)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
511 #define FRAME_PAGENUMBER(f) ((f)->page_number + 0)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
512 #define FRAME_SET_PAGENUMBER(f,x) (f)->page_number = (x);
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
513 #ifdef HAVE_SCROLLBARS
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
514 #define FRAME_SCROLLBAR_WIDTH(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
515 (NILP ((f)->vertical_scrollbar_visible_p) ? \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
516 0 : XINT ((f)->scrollbar_width))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
517 #define FRAME_SCROLLBAR_HEIGHT(f) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
518 (NILP ((f)->horizontal_scrollbar_visible_p) ? \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
519 0 : XINT ((f)->scrollbar_height))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
520 #else
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
521 #define FRAME_SCROLLBAR_WIDTH(f) 0
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
522 #define FRAME_SCROLLBAR_HEIGHT(f) 0
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
523 #endif
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
524
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
525 #define FW_FRAME(obj) \
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
526 (WINDOWP (obj) ? WINDOW_FRAME (XWINDOW (obj)) \
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
527 : (FRAMEP (obj) ? obj \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
528 : Qnil))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
529
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
530 #define FRAME_NEW_HEIGHT(f) ((f)->new_height)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
531 #define FRAME_NEW_WIDTH(f) ((f)->new_width)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
532 #define FRAME_CURSOR_X(f) ((f)->cursor_x)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
533 #define FRAME_CURSOR_Y(f) ((f)->cursor_y)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
534 #define FRAME_VISIBLE_P(f) ((f)->visible)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
535 #define FRAME_REPAINT_P(f) ((f)->visible>0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
536 #define FRAME_NO_SPLIT_P(f) ((f)->no_split)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
537 #define FRAME_ICONIFIED_P(f) ((f)->iconified)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
538 #define FRAME_FOCUS_FRAME(f) ((f)->focus_frame)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
539 #define FRAME_MINIBUF_WINDOW(f) ((f)->minibuffer_window)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
540 #define FRAME_ROOT_WINDOW(f) ((f)->root_window)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
541 /* Catch people attempting to set this. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
542 #define FRAME_SELECTED_WINDOW(f) NON_LVALUE ((f)->selected_window)
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_ */