Mercurial > hg > xemacs-beta
annotate src/frame-impl.h @ 5602:c9e5612f5424
Support the MP library on recent FreeBSD, have it pass relevant tests.
src/ChangeLog addition:
2011-11-26 Aidan Kehoe <kehoea@parhasard.net>
* number-mp.c (bignum_to_string):
Don't overwrite the accumulator we've just set up for this
function.
* number-mp.c (BIGNUM_TO_TYPE):
mp_itom() doesn't necessarily do what this code used to think with
negative numbers, it can treat them as unsigned ints. Subtract
numbers from bignum_zero instead of multiplying them by -1 to
convert them to their negative equivalents.
* number-mp.c (bignum_to_int):
* number-mp.c (bignum_to_uint):
* number-mp.c (bignum_to_long):
* number-mp.c (bignum_to_ulong):
* number-mp.c (bignum_to_double):
Use the changed BIGNUM_TO_TYPE() in these functions.
* number-mp.c (bignum_ceil):
* number-mp.c (bignum_floor):
In these functions, be more careful about rounding to positive and
negative infinity, respectively. Don't use the sign of QUOTIENT
when working out out whether to add or subtract one, rather use
the sign QUOTIENT would have if arbitrary-precision division were
done.
* number-mp.h:
* number-mp.h (MP_GCD):
Wrap #include <mp.h> in BEGIN_C_DECLS/END_C_DECLS.
* number.c (Fbigfloat_get_precision):
* number.c (Fbigfloat_set_precision):
Don't attempt to call XBIGFLOAT_GET_PREC if this build doesn't
support big floats.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Sat, 26 Nov 2011 17:59:14 +0000 |
parents | 56144c8593a8 |
children |
rev | line source |
---|---|
872 | 1 /* Define frame-object for XEmacs. |
2 Copyright (C) 1988, 1992, 1993, 1994 Free Software Foundation, Inc. | |
5045 | 3 Copyright (C) 1995, 2010 Ben Wing. |
872 | 4 |
5 This file is part of XEmacs. | |
6 | |
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
5128
diff
changeset
|
7 XEmacs is free software: you can redistribute it and/or modify it |
872 | 8 under the terms of the GNU General Public License as published by the |
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
5128
diff
changeset
|
9 Free Software Foundation, either version 3 of the License, or (at your |
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
5128
diff
changeset
|
10 option) any later version. |
872 | 11 |
12 XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
5128
diff
changeset
|
18 along with XEmacs. If not, see <http://www.gnu.org/licenses/>. */ |
872 | 19 |
20 /* Synched up with: FSF 19.30. */ | |
21 | |
22 #ifndef INCLUDED_frame_impl_h_ | |
23 #define INCLUDED_frame_impl_h_ | |
24 | |
25 #include "console-impl.h" /* for error_check_frame_type */ | |
26 #include "frame.h" | |
27 | |
28 #define FRAME_TYPE_NAME(f) ((f)->framemeths->name) | |
29 #define FRAME_TYPE(f) ((f)->framemeths->symbol) | |
30 | |
31 /******** Accessing / calling a frame method *********/ | |
32 | |
33 #define HAS_FRAMEMETH_P(f, m) HAS_CONTYPE_METH_P ((f)->framemeths, m) | |
34 #define FRAMEMETH(f, m, args) CONTYPE_METH ((f)->framemeths, m, args) | |
35 #define MAYBE_FRAMEMETH(f, m, args) \ | |
36 MAYBE_CONTYPE_METH ((f)->framemeths, m, args) | |
37 #define FRAMEMETH_OR_GIVEN(f, m, args, given) \ | |
38 CONTYPE_METH_OR_GIVEN((f)->framemeths, m, args, given) | |
39 | |
40 struct frame | |
41 { | |
5127
a9c41067dd88
more cleanups, terminology clarification, lots of doc work
Ben Wing <ben@xemacs.org>
parents:
5126
diff
changeset
|
42 NORMAL_LISP_OBJECT_HEADER header; |
872 | 43 |
44 /* Methods for this frame's console. This can also be retrieved | |
45 through frame->device->console, but it's faster this way. */ | |
46 struct console_methods *framemeths; | |
47 | |
1204 | 48 /* Duplicates framemeths->symbol. See comment in struct console. */ |
49 enum console_variant frametype; | |
50 | |
872 | 51 /* Size of text only area of this frame, excluding scrollbars, |
52 toolbars and end of line glyphs. The size can be in characters | |
53 or pixels, depending on units in which window system resizes | |
54 its windows */ | |
55 int height, width; | |
56 | |
57 /* New height and width for pending size change, in the same units | |
58 as above. 0 if no change pending. */ | |
59 int new_height, new_width; | |
60 | |
61 /* Size of text-only are of the frame, in default font characters. | |
62 This may be inaccurate due to rounding error */ | |
63 int char_height, char_width; | |
64 | |
65 /* Size of the whole frame, including scrollbars, toolbars and end | |
66 of line glyphs, in pixels */ | |
67 int pixheight, pixwidth; | |
68 | |
69 #ifdef HAVE_TTY | |
70 /* The count of frame number. This applies to TTY frames only. */ | |
71 int order_count; | |
72 #endif | |
73 | |
74 /* Current page number for a printer frame. */ | |
75 int page_number; | |
76 | |
77 /* Width of the internal border. This is a line of background color | |
78 just inside the window's border. It is normally only non-zero on | |
79 X frames, but we put it here to avoid introducing window system | |
80 dependencies. */ | |
81 int internal_border_width; | |
82 | |
83 int modiff; | |
84 | |
85 struct expose_ignore *subwindow_exposures; | |
86 struct expose_ignore *subwindow_exposures_tail; | |
87 | |
88 #ifdef HAVE_SCROLLBARS | |
89 /* frame-local scrollbar information. See scrollbar.c. */ | |
90 int scrollbar_y_offset; | |
91 | |
92 /* cache of created scrollbars */ | |
93 struct scrollbar_instance *sb_vcache; | |
94 struct scrollbar_instance *sb_hcache; | |
95 #endif | |
96 | |
97 #ifdef HAVE_TOOLBARS | |
98 /* Size of toolbars as seen by redisplay. This is used to determine | |
99 whether to re-layout windows by a call to change_frame_size early | |
100 in redisplay_frame. */ | |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
101 int current_toolbar_size[NUM_EDGES]; |
872 | 102 #endif |
103 | |
104 /* Size of gutters as seen by redisplay. This is used to determine | |
105 whether to re-layout windows by a call to change_frame_size early | |
106 in redisplay_frame. */ | |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
107 int current_gutter_bounds[NUM_EDGES]; |
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
108 |
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
109 /* Toolbar visibility */ |
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
110 int toolbar_was_visible[NUM_EDGES]; |
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
111 |
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
112 /* gutter visibility */ |
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
113 int gutter_was_visible[NUM_EDGES]; |
872 | 114 |
115 /* Dynamic arrays of display lines for gutters */ | |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
116 display_line_dynarr *current_display_lines[NUM_EDGES]; |
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
117 display_line_dynarr *desired_display_lines[NUM_EDGES]; |
872 | 118 |
1204 | 119 /* A structure of auxiliary data specific to the device type. For |
120 example, struct x_frame is for X window frames; defined in | |
121 console-x-impl.h. */ | |
872 | 122 void *frame_data; |
123 | |
124 #define FRAME_SLOT_DECLARATION | |
1204 | 125 #define MARKED_SLOT(x) Lisp_Object x; |
872 | 126 #include "frameslots.h" |
127 | |
128 /* Nonzero if frame is currently displayed. | |
129 Mutually exclusive with iconified | |
130 JV: This now a tristate flag: | |
131 Value : Emacs meaning :f-v-p : X meaning | |
132 0 : not displayed : nil : unmapped | |
133 >0 : user can access it,needs repainting : t : mapped and visible | |
134 <0 : user can access it,needs no repainting : hidden :mapped and invisible | |
135 where f-v-p is the return value of frame-visible-p */ | |
136 int visible; | |
137 | |
138 /* one-bit flags: */ | |
139 | |
140 /* Is focusing onto this frame disabled? (Modal dialog boxes) */ | |
141 unsigned int disabled :1; | |
142 | |
143 /* Are we finished initializing? */ | |
144 unsigned int init_finished :1; | |
145 | |
146 /* Is frame marked for deletion? This is used in XSetErrorHandler(). */ | |
147 unsigned int being_deleted :1; | |
148 | |
149 /* Nonzero if last attempt at redisplay on this frame was preempted. */ | |
150 unsigned int display_preempted :1; | |
151 | |
152 /* Nonzero if window is currently iconified. | |
153 This and visible are mutually exclusive. */ | |
154 unsigned int iconified :1; | |
155 | |
156 /* Nonzero if this frame should be cleared and then redrawn. | |
157 Setting this will also effectively set frame_changed. */ | |
158 unsigned int clear :1; | |
159 | |
160 /* True if frame actually has a minibuffer window on it. | |
161 0 if using a minibuffer window that isn't on this frame. */ | |
162 unsigned int has_minibuffer :1; | |
163 | |
164 /* True if frame's root window can't be split. */ | |
165 unsigned int no_split :1; | |
166 | |
167 /* redisplay flags */ | |
168 unsigned int buffers_changed :1; | |
169 unsigned int clip_changed :1; | |
170 unsigned int extents_changed :1; | |
171 unsigned int faces_changed :1; | |
172 unsigned int frame_changed :1; | |
905 | 173 unsigned int frame_layout_changed :1; /* The layout of frame |
174 elements has changed. */ | |
872 | 175 unsigned int subwindows_changed :1; |
176 unsigned int subwindows_state_changed :1; | |
177 unsigned int glyphs_changed :1; | |
178 unsigned int icon_changed :1; | |
179 unsigned int menubar_changed :1; | |
180 unsigned int modeline_changed :1; | |
181 unsigned int point_changed :1; | |
182 unsigned int size_changed :1; | |
183 unsigned int toolbar_changed :1; | |
184 unsigned int gutter_changed :1; | |
185 unsigned int windows_changed :1; | |
186 unsigned int windows_structure_changed :1; | |
187 unsigned int window_face_cache_reset :1; /* used by expose handler */ | |
188 unsigned int echo_area_garbaged :1; /* used by Fredisplay_echo_area */ | |
189 unsigned int size_slipped :1; | |
190 | |
191 unsigned int size_change_pending :1; | |
192 unsigned int mirror_dirty :1; | |
193 | |
194 /* flag indicating if any window on this frame is displaying a subwindow */ | |
195 unsigned int subwindows_being_displayed :1; | |
196 }; | |
197 | |
198 /* Redefine basic properties more efficiently */ | |
199 | |
200 #undef FRAME_LIVE_P | |
201 #define FRAME_LIVE_P(f) (!EQ (FRAME_TYPE (f), Qdead)) | |
202 #undef FRAME_DEVICE | |
203 #define FRAME_DEVICE(f) ((f)->device) | |
204 | |
205 #define FRAME_TYPE_P(f, type) EQ (FRAME_TYPE (f), Q##type) | |
206 | |
207 #ifdef ERROR_CHECK_TYPES | |
208 DECLARE_INLINE_HEADER ( | |
209 struct frame * | |
210 error_check_frame_type (struct frame * f, Lisp_Object sym) | |
211 ) | |
212 { | |
213 assert (EQ (FRAME_TYPE (f), sym)); | |
214 return f; | |
215 } | |
216 # define FRAME_TYPE_DATA(f, type) \ | |
217 ((struct type##_frame *) error_check_frame_type (f, Q##type)->frame_data) | |
218 #else | |
219 # define FRAME_TYPE_DATA(f, type) \ | |
220 ((struct type##_frame *) (f)->frame_data) | |
221 #endif | |
222 | |
223 #define CHECK_FRAME_TYPE(x, type) \ | |
224 do { \ | |
225 CHECK_FRAME (x); \ | |
226 if (!FRAME_TYPE_P (XFRAME (x), type)) \ | |
227 dead_wrong_type_argument \ | |
228 (type##_console_methods->predicate_symbol, x); \ | |
229 } while (0) | |
230 #define CONCHECK_FRAME_TYPE(x, type) \ | |
231 do { \ | |
232 CONCHECK_FRAME (x); \ | |
233 if (!FRAME_TYPE_P (XFRAME (x), type)) \ | |
234 x = wrong_type_argument \ | |
235 (type##_console_methods->predicate_symbol, x); \ | |
236 } while (0) | |
237 | |
238 #define FRAME_DISPLAY_P(frm) \ | |
239 (DEVICE_DISPLAY_P (XDEVICE (FRAME_DEVICE (frm)))) | |
240 | |
241 #define CHECK_DISPLAY_FRAME(frm) \ | |
242 do { \ | |
243 CHECK_FRAME (frm); \ | |
244 CHECK_LIVE_FRAME (frm); \ | |
245 CHECK_DISPLAY_DEVICE (FRAME_DEVICE (XFRAME (frm))); \ | |
246 } while (0) | |
247 | |
248 #define CONCHECK_DISPLAY_FRAME(frm) \ | |
249 do { \ | |
250 CONCHECK_FRAME (frm); \ | |
251 CONCHECK_LIVE_FRAME (frm); \ | |
252 CONCHECK_DISPLAY_DEVICE (FRAME_DEVICE (XFRAME (frm))); \ | |
253 } while (0) | |
254 | |
255 #define FRAME_PRINTER_P(frm) \ | |
256 (DEVICE_PRINTER_P (XDEVICE (FRAME_DEVICE (frm)))) | |
257 | |
258 #define CHECK_PRINTER_FRAME(frm) \ | |
259 do { \ | |
260 CHECK_FRAME (frm); \ | |
261 CHECK_LIVE_FRAME (frm); \ | |
262 CHECK_PRINTER_DEVICE (FRAME_DEVICE (XFRAME (frm))); \ | |
263 } while (0) | |
264 | |
265 #define CONCHECK_PRINTER_FRAME(frm) \ | |
266 do { \ | |
267 CONCHECK_FRAME (frm); \ | |
268 CONCHECK_LIVE_FRAME (frm); \ | |
269 CONCHECK_PRINTER_DEVICE (FRAME_DEVICE (XFRAME (frm))); \ | |
270 } while (0) | |
271 | |
272 /* #### These should be in the frame-*.h files but there are | |
273 too many places where the abstraction is broken. Need to | |
274 fix. */ | |
275 | |
276 #define FRAME_X_P(frm) CONSOLE_TYPESYM_X_P (FRAME_TYPE (frm)) | |
277 #define CHECK_X_FRAME(z) CHECK_FRAME_TYPE (z, x) | |
278 #define CONCHECK_X_FRAME(z) CONCHECK_FRAME_TYPE (z, x) | |
279 | |
280 #define FRAME_GTK_P(frm) CONSOLE_TYPESYM_GTK_P (FRAME_TYPE (frm)) | |
281 #define CHECK_GTK_FRAME(z) CHECK_FRAME_TYPE (z, gtk) | |
282 #define CONCHECK_GTK_FRAME(z) CONCHECK_FRAME_TYPE (z, gtk) | |
283 | |
284 #define FRAME_TTY_P(frm) CONSOLE_TYPESYM_TTY_P (FRAME_TYPE (frm)) | |
285 #define CHECK_TTY_FRAME(z) CHECK_FRAME_TYPE (z, tty) | |
286 #define CONCHECK_TTY_FRAME(z) CONCHECK_FRAME_TYPE (z, tty) | |
287 | |
288 #define FRAME_STREAM_P(frm) CONSOLE_TYPESYM_STREAM_P (FRAME_TYPE (frm)) | |
289 #define CHECK_STREAM_FRAME(z) CHECK_FRAME_TYPE (z, stream) | |
290 #define CONCHECK_STREAM_FRAME(z) CONCHECK_FRAME_TYPE (z, stream) | |
291 | |
292 #define FRAME_WIN_P(frm) CONSOLE_TYPESYM_WIN_P (FRAME_TYPE (frm)) | |
293 | |
294 extern int frame_changed; | |
295 | |
296 #define MARK_FRAME_FACES_CHANGED(f) do { \ | |
297 struct frame *mffc_f = (f); \ | |
298 mffc_f->faces_changed = 1; \ | |
299 mffc_f->modiff++; \ | |
300 if (!NILP (mffc_f->device)) \ | |
301 { \ | |
302 struct device *mffc_d = XDEVICE (mffc_f->device); \ | |
303 MARK_DEVICE_FACES_CHANGED (mffc_d); \ | |
304 } \ | |
305 else \ | |
306 faces_changed = 1; \ | |
307 } while (0) | |
308 | |
309 #define MARK_FRAME_GLYPHS_CHANGED(f) do { \ | |
310 struct frame *mfgc_f = (f); \ | |
311 mfgc_f->glyphs_changed = 1; \ | |
312 mfgc_f->modiff++; \ | |
313 if (!NILP (mfgc_f->device)) \ | |
314 { \ | |
315 struct device *mfgc_d = XDEVICE (mfgc_f->device); \ | |
316 MARK_DEVICE_GLYPHS_CHANGED (mfgc_d); \ | |
317 } \ | |
318 else \ | |
319 glyphs_changed = 1; \ | |
320 } while (0) | |
321 | |
322 #define MARK_FRAME_SUBWINDOWS_CHANGED(f) do { \ | |
323 struct frame *mfgc_f = (f); \ | |
324 mfgc_f->subwindows_changed = 1; \ | |
325 mfgc_f->modiff++; \ | |
326 if (!NILP (mfgc_f->device)) \ | |
327 { \ | |
328 struct device *mfgc_d = XDEVICE (mfgc_f->device); \ | |
329 MARK_DEVICE_SUBWINDOWS_CHANGED (mfgc_d); \ | |
330 } \ | |
331 else \ | |
332 subwindows_changed = 1; \ | |
333 } while (0) | |
334 | |
335 #define MARK_FRAME_SUBWINDOWS_STATE_CHANGED(f) do { \ | |
336 struct frame *mfgc_f = (f); \ | |
337 mfgc_f->subwindows_state_changed = 1; \ | |
338 mfgc_f->modiff++; \ | |
339 if (!NILP (mfgc_f->device)) \ | |
340 { \ | |
341 struct device *mfgc_d = XDEVICE (mfgc_f->device); \ | |
342 MARK_DEVICE_SUBWINDOWS_STATE_CHANGED (mfgc_d); \ | |
343 } \ | |
344 else \ | |
345 subwindows_state_changed = 1; \ | |
346 } while (0) | |
347 | |
348 #define MARK_FRAME_TOOLBARS_CHANGED(f) do { \ | |
349 struct frame *mftc_f = (f); \ | |
350 mftc_f->toolbar_changed = 1; \ | |
351 mftc_f->modiff++; \ | |
352 if (!NILP (mftc_f->device)) \ | |
353 { \ | |
354 struct device *mftc_d = XDEVICE (mftc_f->device); \ | |
355 MARK_DEVICE_TOOLBARS_CHANGED (mftc_d); \ | |
356 } \ | |
357 else \ | |
358 toolbar_changed = 1; \ | |
359 } while (0) | |
360 | |
361 #define MARK_FRAME_GUTTERS_CHANGED(f) do { \ | |
362 struct frame *mftc_f = (f); \ | |
363 mftc_f->gutter_changed = 1; \ | |
364 mftc_f->modiff++; \ | |
365 if (!NILP (mftc_f->device)) \ | |
366 { \ | |
367 struct device *mftc_d = XDEVICE (mftc_f->device); \ | |
368 MARK_DEVICE_GUTTERS_CHANGED (mftc_d); \ | |
369 } \ | |
370 else \ | |
371 gutter_changed = 1; \ | |
372 } while (0) | |
373 | |
374 #define MARK_FRAME_SIZE_CHANGED(f) do { \ | |
375 struct frame *mfsc_f = (f); \ | |
376 mfsc_f->size_changed = 1; \ | |
377 mfsc_f->size_change_pending = 1; \ | |
378 mfsc_f->modiff++; \ | |
379 if (!NILP (mfsc_f->device)) \ | |
380 { \ | |
381 struct device *mfsc_d = XDEVICE (mfsc_f->device); \ | |
382 MARK_DEVICE_SIZE_CHANGED (mfsc_d); \ | |
383 } \ | |
384 else \ | |
385 size_changed = 1; \ | |
386 } while (0) | |
387 | |
388 #define MARK_FRAME_CHANGED(f) do { \ | |
389 struct frame *mfc_f = (f); \ | |
390 mfc_f->frame_changed = 1; \ | |
391 mfc_f->modiff++; \ | |
392 if (!NILP (mfc_f->device)) \ | |
393 { \ | |
394 struct device *mfc_d = XDEVICE (mfc_f->device); \ | |
395 MARK_DEVICE_FRAME_CHANGED (mfc_d); \ | |
396 } \ | |
397 else \ | |
398 frame_changed = 1; \ | |
399 } while (0) | |
400 | |
905 | 401 #define MARK_FRAME_LAYOUT_CHANGED(f) do { \ |
402 struct frame *mfc_f = (f); \ | |
403 mfc_f->frame_layout_changed = 1; \ | |
404 mfc_f->modiff++; \ | |
405 if (!NILP (mfc_f->device)) \ | |
406 { \ | |
407 struct device *mfc_d = XDEVICE (mfc_f->device); \ | |
408 MARK_DEVICE_FRAME_LAYOUT_CHANGED (mfc_d); \ | |
409 } \ | |
410 else \ | |
411 frame_layout_changed = 1; \ | |
412 } while (0) | |
413 | |
872 | 414 #define MARK_FRAME_WINDOWS_CHANGED(f) do { \ |
415 struct frame *mfwc_f = (f); \ | |
416 mfwc_f->windows_changed = 1; \ | |
417 mfwc_f->modiff++; \ | |
418 if (!NILP (mfwc_f->device)) \ | |
419 { \ | |
420 struct device *mfwc_d = XDEVICE (mfwc_f->device); \ | |
421 MARK_DEVICE_WINDOWS_CHANGED (mfwc_d); \ | |
422 } \ | |
423 else \ | |
424 windows_changed = 1; \ | |
425 } while (0) | |
426 | |
427 #define MARK_FRAME_WINDOWS_STRUCTURE_CHANGED(f) do { \ | |
428 struct frame *fwsc_f = (f); \ | |
429 fwsc_f->windows_structure_changed = 1; \ | |
430 fwsc_f->modiff++; \ | |
431 if (!NILP (fwsc_f->device)) \ | |
432 { \ | |
433 struct device *fwsc_d = XDEVICE (fwsc_f->device); \ | |
434 MARK_DEVICE_WINDOWS_STRUCTURE_CHANGED (fwsc_d); \ | |
435 } \ | |
436 else \ | |
437 windows_structure_changed = 1; \ | |
438 invalidate_vertical_divider_cache_in_frame (fwsc_f); \ | |
439 } while (0) | |
440 | |
441 #define MARK_FRAME_SIZE_SLIPPED(f) do { \ | |
442 struct frame *fwsc_f = (f); \ | |
443 fwsc_f->size_slipped = 1; \ | |
444 fwsc_f->modiff++; \ | |
445 if (!NILP (fwsc_f->device)) \ | |
446 { \ | |
447 struct device *fwsc_d = XDEVICE (fwsc_f->device); \ | |
448 MARK_DEVICE_FRAME_CHANGED (fwsc_d); \ | |
449 } \ | |
450 else \ | |
451 frame_changed = 1; \ | |
452 } while (0) | |
453 | |
454 #define CLEAR_FRAME_SIZE_SLIPPED(f) do { \ | |
455 struct frame *fwsc_f = (f); \ | |
456 fwsc_f->size_slipped = 0; \ | |
457 } while (0) | |
458 | |
459 #define SET_FRAME_CLEAR(f) MARK_FRAME_CHANGED (f); (f)->clear = 1 | |
460 | |
461 #define FRAME_MINIBUF_ONLY_P(f) \ | |
462 EQ (FRAME_ROOT_WINDOW (f), FRAME_MINIBUF_WINDOW (f)) | |
463 #define FRAME_HAS_MINIBUF_P(f) ((f)->has_minibuffer) | |
464 #define FRAME_HEIGHT(f) ((f)->height) | |
465 #define FRAME_WIDTH(f) ((f)->width) | |
466 #define FRAME_CHARHEIGHT(f) ((f)->char_height) | |
467 #define FRAME_CHARWIDTH(f) ((f)->char_width) | |
468 #define FRAME_PIXHEIGHT(f) ((f)->pixheight) | |
469 #define FRAME_PIXWIDTH(f) ((f)->pixwidth) | |
470 #define FRAME_PAGENUMBER(f) ((f)->page_number + 0) | |
471 #define FRAME_SET_PAGENUMBER(f,x) (f)->page_number = (x); | |
472 #ifdef HAVE_SCROLLBARS | |
473 #define FRAME_SCROLLBAR_WIDTH(f) \ | |
474 (NILP ((f)->vertical_scrollbar_visible_p) ? \ | |
5581
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5402
diff
changeset
|
475 0 : XFIXNUM ((f)->scrollbar_width)) |
872 | 476 #define FRAME_SCROLLBAR_HEIGHT(f) \ |
477 (NILP ((f)->horizontal_scrollbar_visible_p) ? \ | |
5581
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5402
diff
changeset
|
478 0 : XFIXNUM ((f)->scrollbar_height)) |
872 | 479 #else |
480 #define FRAME_SCROLLBAR_WIDTH(f) 0 | |
481 #define FRAME_SCROLLBAR_HEIGHT(f) 0 | |
482 #endif | |
483 | |
484 #define FRAME_NEW_HEIGHT(f) ((f)->new_height) | |
485 #define FRAME_NEW_WIDTH(f) ((f)->new_width) | |
486 #define FRAME_CURSOR_X(f) ((f)->cursor_x) | |
487 #define FRAME_CURSOR_Y(f) ((f)->cursor_y) | |
488 #define FRAME_VISIBLE_P(f) ((f)->visible) | |
489 #define FRAME_REPAINT_P(f) ((f)->visible>0) | |
490 #define FRAME_NO_SPLIT_P(f) ((f)->no_split) | |
491 #define FRAME_ICONIFIED_P(f) ((f)->iconified) | |
492 #define FRAME_FOCUS_FRAME(f) ((f)->focus_frame) | |
493 #define FRAME_MINIBUF_WINDOW(f) ((f)->minibuffer_window) | |
494 #define FRAME_ROOT_WINDOW(f) ((f)->root_window) | |
495 /* Catch people attempting to set this. */ | |
496 #define FRAME_SELECTED_WINDOW(f) NON_LVALUE ((f)->selected_window) | |
497 #define FRAME_SELECTED_XWINDOW(f) XWINDOW (FRAME_SELECTED_WINDOW (f)) | |
498 #define FRAME_LAST_NONMINIBUF_WINDOW(f) \ | |
499 NON_LVALUE ((f)->last_nonminibuf_window) | |
500 #define FRAME_SB_VCACHE(f) ((f)->sb_vcache) | |
501 #define FRAME_SB_HCACHE(f) ((f)->sb_hcache) | |
502 #define FRAME_SUBWINDOW_CACHE(f) ((f)->subwindow_instance_cache) | |
503 | |
504 #if 0 /* FSFmacs */ | |
505 | |
506 #define FRAME_VISIBLE_P(f) ((f)->visible != 0) | |
507 #define FRAME_SET_VISIBLE(f,p) \ | |
508 ((f)->async_visible = (p), FRAME_SAMPLE_VISIBILITY (f)) | |
509 | |
510 /* Emacs's redisplay code could become confused if a frame's | |
511 visibility changes at arbitrary times. For example, if a frame is | |
512 visible while the desired glyphs are being built, but becomes | |
513 invisible before they are updated, then some rows of the | |
514 desired_glyphs will be left marked as enabled after redisplay is | |
515 complete, which should never happen. The next time the frame | |
516 becomes visible, redisplay will probably barf. | |
517 | |
518 Currently, there are no similar situations involving iconified, but | |
519 the principle is the same. | |
520 | |
521 So instead of having asynchronous input handlers directly set and | |
522 clear the frame's visibility and iconification flags, they just set | |
523 the async_visible and async_iconified flags; the redisplay code | |
524 calls the FRAME_SAMPLE_VISIBILITY macro before doing any redisplay, | |
525 which sets visible and iconified from their asynchronous | |
526 counterparts. | |
527 | |
528 Synchronous code must use the FRAME_SET_VISIBLE macro. | |
529 | |
530 Also, if a frame used to be invisible, but has just become visible, | |
531 it must be marked as garbaged, since redisplay hasn't been keeping | |
532 up its contents. */ | |
533 #define FRAME_SAMPLE_VISIBILITY(f) \ | |
534 (((f)->async_visible && ! (f)->visible) ? SET_FRAME_GARBAGED (f) : 0, \ | |
535 (f)->visible = (f)->async_visible, \ | |
536 (f)->iconified = (f)->async_iconified) | |
537 | |
538 #endif /* FSFmacs */ | |
539 | |
5045 | 540 #define FRAME_INTERNAL_BORDER_WIDTH(f) ((f)->internal_border_width) |
541 #define FRAME_INTERNAL_BORDER_HEIGHT(f) ((f)->internal_border_width) | |
542 #define FRAME_INTERNAL_BORDER_SIZE(f, pos) ((f)->internal_border_width) | |
543 | |
544 /************************************************************************/ | |
545 /* toolbars */ | |
546 /************************************************************************/ | |
547 | |
548 /*---------------- Theoretical and real toolbar values ----------------*/ | |
549 | |
872 | 550 |
551 /* This returns the frame-local value; that tells you what you should | |
552 use when computing the frame size. It is *not* the actual toolbar | |
553 size because that depends on the selected window. Use the macros | |
554 below for that. | |
555 */ | |
556 | |
557 #ifdef HAVE_TOOLBARS | |
558 #define FRAME_RAW_THEORETICAL_TOOLBAR_VISIBLE(f, pos) \ | |
559 (!NILP((f)->toolbar_buttons[pos]) && !NILP ((f)->toolbar_visible_p[pos])) | |
560 #define FRAME_RAW_THEORETICAL_TOOLBAR_SIZE(f, pos) \ | |
5581
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5402
diff
changeset
|
561 (!NILP ((f)->toolbar_buttons[pos]) && FIXNUMP((f)->toolbar_size[pos]) ? \ |
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5402
diff
changeset
|
562 (XFIXNUM ((f)->toolbar_size[pos])) : 0) |
872 | 563 #define FRAME_RAW_THEORETICAL_TOOLBAR_BORDER_WIDTH(f, pos) \ |
5581
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5402
diff
changeset
|
564 (!NILP ((f)->toolbar_buttons[pos]) && FIXNUMP((f)->toolbar_border_width[pos]) ? \ |
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5402
diff
changeset
|
565 (XFIXNUM ((f)->toolbar_border_width[pos])) : 0) |
872 | 566 #else |
567 #define FRAME_RAW_THEORETICAL_TOOLBAR_VISIBLE(f, pos) 0 | |
568 #define FRAME_RAW_THEORETICAL_TOOLBAR_SIZE(f, pos) 0 | |
569 #define FRAME_RAW_THEORETICAL_TOOLBAR_BORDER_WIDTH(f, pos) 0 | |
570 #endif | |
571 | |
572 #define FRAME_THEORETICAL_TOOLBAR_SIZE(f, pos) \ | |
573 (FRAME_RAW_THEORETICAL_TOOLBAR_VISIBLE (f, pos) \ | |
574 ? FRAME_RAW_THEORETICAL_TOOLBAR_SIZE (f, pos) \ | |
575 : 0) | |
576 | |
577 #define FRAME_THEORETICAL_TOP_TOOLBAR_HEIGHT(f) \ | |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
578 FRAME_THEORETICAL_TOOLBAR_SIZE (f, TOP_EDGE) |
872 | 579 #define FRAME_THEORETICAL_BOTTOM_TOOLBAR_HEIGHT(f) \ |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
580 FRAME_THEORETICAL_TOOLBAR_SIZE (f, BOTTOM_EDGE) |
872 | 581 #define FRAME_THEORETICAL_LEFT_TOOLBAR_WIDTH(f) \ |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
582 FRAME_THEORETICAL_TOOLBAR_SIZE (f, LEFT_EDGE) |
872 | 583 #define FRAME_THEORETICAL_RIGHT_TOOLBAR_WIDTH(f) \ |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
584 FRAME_THEORETICAL_TOOLBAR_SIZE (f, RIGHT_EDGE) |
872 | 585 |
586 #define FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH(f, pos) \ | |
587 (FRAME_RAW_THEORETICAL_TOOLBAR_VISIBLE (f, pos) \ | |
588 ? FRAME_RAW_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, pos) \ | |
589 : 0) | |
590 | |
591 #define FRAME_THEORETICAL_TOP_TOOLBAR_BORDER_WIDTH(f) \ | |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
592 FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, TOP_EDGE) |
872 | 593 #define FRAME_THEORETICAL_BOTTOM_TOOLBAR_BORDER_WIDTH(f) \ |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
594 FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, BOTTOM_EDGE) |
872 | 595 #define FRAME_THEORETICAL_LEFT_TOOLBAR_BORDER_WIDTH(f) \ |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
596 FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, LEFT_EDGE) |
872 | 597 #define FRAME_THEORETICAL_RIGHT_TOOLBAR_BORDER_WIDTH(f) \ |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
598 FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, RIGHT_EDGE) |
872 | 599 |
600 /* This returns the window-local value rather than the frame-local value; | |
601 that tells you about what's actually visible rather than what should | |
602 be used when computing the frame size. */ | |
603 | |
604 #ifdef HAVE_TOOLBARS | |
605 #define FRAME_RAW_REAL_TOOLBAR_VISIBLE(f, pos) \ | |
606 (HAS_FRAMEMETH_P (f, initialize_frame_toolbars) \ | |
607 && !NILP (XWINDOW (FRAME_LAST_NONMINIBUF_WINDOW (f))->toolbar_visible_p[pos])) | |
608 #define FRAME_RAW_REAL_TOOLBAR_BORDER_WIDTH(f, pos) \ | |
5581
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5402
diff
changeset
|
609 ((FIXNUMP (XWINDOW \ |
872 | 610 (FRAME_LAST_NONMINIBUF_WINDOW (f))->toolbar_border_width[pos])) ? \ |
5581
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5402
diff
changeset
|
611 (XFIXNUM (XWINDOW \ |
872 | 612 (FRAME_LAST_NONMINIBUF_WINDOW (f))->toolbar_border_width[pos])) \ |
613 : 0) | |
614 #define FRAME_RAW_REAL_TOOLBAR_SIZE(f, pos) \ | |
5581
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5402
diff
changeset
|
615 ((FIXNUMP (XWINDOW \ |
872 | 616 (FRAME_LAST_NONMINIBUF_WINDOW (f))->toolbar_size[pos])) ? \ |
5581
56144c8593a8
Mechanically change INT to FIXNUM in our sources.
Aidan Kehoe <kehoea@parhasard.net>
parents:
5402
diff
changeset
|
617 (XFIXNUM (XWINDOW \ |
872 | 618 (FRAME_LAST_NONMINIBUF_WINDOW (f))->toolbar_size[pos])) : 0) |
619 #define FRAME_REAL_TOOLBAR(f, pos) \ | |
620 (XWINDOW (FRAME_LAST_NONMINIBUF_WINDOW (f))->toolbar[pos]) | |
621 #else | |
622 #define FRAME_RAW_REAL_TOOLBAR_VISIBLE(f, pos) 0 | |
623 #define FRAME_RAW_REAL_TOOLBAR_BORDER_WIDTH(f, pos) 0 | |
624 #define FRAME_RAW_REAL_TOOLBAR_SIZE(f, pos) 0 | |
625 #define FRAME_REAL_TOOLBAR(f, pos) Qnil | |
626 #endif | |
627 | |
628 /* Note to Chuck | |
629 Note to Chuck | |
630 Note to Chuck: | |
631 | |
632 The former definitions of FRAME_REAL_FOO_TOOLBAR_VISIBLE | |
633 looked at the toolbar data to see what was there. The | |
634 current ones look at the current values of the specifiers. | |
635 This is a semantic change; the former definition returned | |
636 what was *actually* there right at the moment, while the | |
637 current one returns what *ought* to be there once redisplay | |
638 has run to completion. I think this new definition is more | |
639 correct in almost all circumstances and is much less likely | |
640 to lead to strange race conditions. I'm not completely | |
641 sure that there aren't some places in the redisplay code | |
642 that use these macros and expect the former semantics, so | |
643 if you encounter some odd toolbar behavior, you might want | |
644 to look into this. --ben */ | |
645 | |
646 #define FRAME_REAL_TOOLBAR_VISIBLE(f, pos) \ | |
647 ((!NILP (FRAME_REAL_TOOLBAR (f, pos)) \ | |
648 && FRAME_RAW_REAL_TOOLBAR_SIZE (f, pos) > 0) \ | |
649 ? FRAME_RAW_REAL_TOOLBAR_VISIBLE (f, pos) \ | |
650 : 0) | |
651 #define FRAME_REAL_TOOLBAR_SIZE(f, pos) \ | |
652 ((!NILP (FRAME_REAL_TOOLBAR (f, pos)) \ | |
653 && FRAME_RAW_REAL_TOOLBAR_VISIBLE (f, pos)) \ | |
654 ? FRAME_RAW_REAL_TOOLBAR_SIZE (f, pos) \ | |
655 : 0) | |
656 #define FRAME_REAL_TOOLBAR_BORDER_WIDTH(f, pos) \ | |
657 ((!NILP (FRAME_REAL_TOOLBAR (f, pos)) \ | |
658 && FRAME_RAW_REAL_TOOLBAR_VISIBLE (f, pos)) \ | |
659 ? FRAME_RAW_REAL_TOOLBAR_BORDER_WIDTH (f, pos) \ | |
660 : 0) | |
661 | |
5045 | 662 #define FRAME_REAL_TOOLBAR_BOUNDS(f, pos) \ |
663 (FRAME_REAL_TOOLBAR_SIZE (f, pos) + \ | |
664 2 * FRAME_REAL_TOOLBAR_BORDER_WIDTH (f, pos)) | |
665 | |
872 | 666 #define FRAME_REAL_TOP_TOOLBAR_HEIGHT(f) \ |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
667 FRAME_REAL_TOOLBAR_SIZE (f, TOP_EDGE) |
872 | 668 #define FRAME_REAL_BOTTOM_TOOLBAR_HEIGHT(f) \ |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
669 FRAME_REAL_TOOLBAR_SIZE (f, BOTTOM_EDGE) |
872 | 670 #define FRAME_REAL_LEFT_TOOLBAR_WIDTH(f) \ |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
671 FRAME_REAL_TOOLBAR_SIZE (f, LEFT_EDGE) |
872 | 672 #define FRAME_REAL_RIGHT_TOOLBAR_WIDTH(f) \ |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
673 FRAME_REAL_TOOLBAR_SIZE (f, RIGHT_EDGE) |
872 | 674 |
675 #define FRAME_REAL_TOP_TOOLBAR_BORDER_WIDTH(f) \ | |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
676 FRAME_REAL_TOOLBAR_BORDER_WIDTH (f, TOP_EDGE) |
872 | 677 #define FRAME_REAL_BOTTOM_TOOLBAR_BORDER_WIDTH(f) \ |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
678 FRAME_REAL_TOOLBAR_BORDER_WIDTH (f, BOTTOM_EDGE) |
872 | 679 #define FRAME_REAL_LEFT_TOOLBAR_BORDER_WIDTH(f) \ |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
680 FRAME_REAL_TOOLBAR_BORDER_WIDTH (f, LEFT_EDGE) |
872 | 681 #define FRAME_REAL_RIGHT_TOOLBAR_BORDER_WIDTH(f) \ |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
682 FRAME_REAL_TOOLBAR_BORDER_WIDTH (f, RIGHT_EDGE) |
872 | 683 |
684 #define FRAME_REAL_TOP_TOOLBAR_VISIBLE(f) \ | |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
685 FRAME_REAL_TOOLBAR_VISIBLE (f, TOP_EDGE) |
872 | 686 #define FRAME_REAL_BOTTOM_TOOLBAR_VISIBLE(f) \ |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
687 FRAME_REAL_TOOLBAR_VISIBLE (f, BOTTOM_EDGE) |
872 | 688 #define FRAME_REAL_LEFT_TOOLBAR_VISIBLE(f) \ |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
689 FRAME_REAL_TOOLBAR_VISIBLE (f, LEFT_EDGE) |
872 | 690 #define FRAME_REAL_RIGHT_TOOLBAR_VISIBLE(f) \ |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
691 FRAME_REAL_TOOLBAR_VISIBLE (f, RIGHT_EDGE) |
872 | 692 |
5045 | 693 #define FRAME_REAL_TOP_TOOLBAR_BOUNDS(f) \ |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
694 FRAME_REAL_TOOLBAR_BOUNDS (f, TOP_EDGE) |
5045 | 695 #define FRAME_REAL_BOTTOM_TOOLBAR_BOUNDS(f) \ |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
696 FRAME_REAL_TOOLBAR_BOUNDS (f, BOTTOM_EDGE) |
5045 | 697 #define FRAME_REAL_LEFT_TOOLBAR_BOUNDS(f) \ |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
698 FRAME_REAL_TOOLBAR_BOUNDS (f, LEFT_EDGE) |
5045 | 699 #define FRAME_REAL_RIGHT_TOOLBAR_BOUNDS(f) \ |
5077
d372b17f63ce
clean up toolbar/gutter edge geometry
Ben Wing <ben@xemacs.org>
parents:
5045
diff
changeset
|
700 FRAME_REAL_TOOLBAR_BOUNDS (f, RIGHT_EDGE) |
5045 | 701 |
702 /************************************************************************/ | |
703 /* frame dimensions defined using toolbars and gutters */ | |
704 /************************************************************************/ | |
705 | |
5078
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
706 /* Bounds of the area framed by the toolbars is the client area -- |
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
707 (0, 0) - (FRAME_PIXWIDTH, FRAME_PIXHEIGHT). */ |
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
708 |
5090 | 709 /* Bounds of the area framed by the internal border width -- inside of the |
710 toolbars, outside of everything else. */ | |
711 | |
712 #define FRAME_TOP_INTERNAL_BORDER_START(f) \ | |
713 FRAME_REAL_TOP_TOOLBAR_BOUNDS (f) | |
714 #define FRAME_TOP_INTERNAL_BORDER_END(f) \ | |
715 (FRAME_TOP_INTERNAL_BORDER_START (f) + FRAME_INTERNAL_BORDER_HEIGHT (f)) | |
5078
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
716 |
5090 | 717 #define FRAME_BOTTOM_INTERNAL_BORDER_START(f) \ |
718 (FRAME_BOTTOM_INTERNAL_BORDER_END (f) - FRAME_INTERNAL_BORDER_HEIGHT (f)) | |
719 #define FRAME_BOTTOM_INTERNAL_BORDER_END(f) \ | |
720 (FRAME_PIXHEIGHT (f) - FRAME_REAL_BOTTOM_TOOLBAR_BOUNDS (f)) | |
721 | |
722 #define FRAME_LEFT_INTERNAL_BORDER_START(f) \ | |
723 FRAME_REAL_LEFT_TOOLBAR_BOUNDS (f) | |
724 #define FRAME_LEFT_INTERNAL_BORDER_END(f) \ | |
725 (FRAME_LEFT_INTERNAL_BORDER_START (f) + FRAME_INTERNAL_BORDER_WIDTH (f)) | |
726 | |
727 #define FRAME_RIGHT_INTERNAL_BORDER_START(f) \ | |
728 (FRAME_RIGHT_INTERNAL_BORDER_END (f) - FRAME_INTERNAL_BORDER_WIDTH (f)) | |
729 #define FRAME_RIGHT_INTERNAL_BORDER_END(f) \ | |
730 (FRAME_PIXWIDTH (f) - FRAME_REAL_RIGHT_TOOLBAR_BOUNDS (f)) | |
5078
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
731 |
5090 | 732 /* Bounds of the area framed by the gutter -- inside of the |
733 toolbars and internal border width. */ | |
734 | |
735 #define FRAME_TOP_GUTTER_START(f) \ | |
736 FRAME_TOP_INTERNAL_BORDER_END (f) | |
737 #define FRAME_TOP_GUTTER_END(f) \ | |
738 (FRAME_TOP_GUTTER_START (f) + FRAME_TOP_GUTTER_BOUNDS (f)) | |
5078
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
739 |
5090 | 740 #ifdef BOTTOM_GUTTER_IS_OUTSIDE_MINIBUFFER |
741 #define FRAME_BOTTOM_GUTTER_START(f) \ | |
742 (FRAME_BOTTOM_GUTTER_END (f) - FRAME_BOTTOM_GUTTER_BOUNDS (f)) | |
743 #define FRAME_BOTTOM_GUTTER_END(f) \ | |
744 FRAME_BOTTOM_INTERNAL_BORDER_START (f) | |
745 #endif /* BOTTOM_GUTTER_IS_OUTSIDE_MINIBUFFER */ | |
746 | |
747 #define FRAME_LEFT_GUTTER_START(f) \ | |
748 FRAME_LEFT_INTERNAL_BORDER_END (f) | |
749 #define FRAME_LEFT_GUTTER_END(f) \ | |
750 (FRAME_LEFT_GUTTER_START (f) + FRAME_LEFT_GUTTER_BOUNDS (f)) | |
751 | |
752 #define FRAME_RIGHT_GUTTER_START(f) \ | |
753 (FRAME_RIGHT_GUTTER_END (f) - FRAME_RIGHT_GUTTER_BOUNDS (f)) | |
754 #define FRAME_RIGHT_GUTTER_END(f) \ | |
755 FRAME_RIGHT_INTERNAL_BORDER_START (f) | |
5078
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
756 |
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
757 /* These are the bounds of the paned area -- inside of the toolbars, |
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
758 gutters, and internal border width. The paned area is the same as the |
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
759 area occupied by windows, including the minibuffer. See long comment in |
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
760 frame.c. */ |
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
761 |
5090 | 762 #define FRAME_PANED_TOP_EDGE(f) FRAME_TOP_GUTTER_END (f) |
763 #ifdef BOTTOM_GUTTER_IS_OUTSIDE_MINIBUFFER | |
764 #define FRAME_PANED_BOTTOM_EDGE(f) FRAME_BOTTOM_GUTTER_START (f) | |
765 #endif /* BOTTOM_GUTTER_IS_OUTSIDE_MINIBUFFER */ | |
766 #define FRAME_PANED_LEFT_EDGE(f) FRAME_LEFT_GUTTER_END (f) | |
767 #define FRAME_PANED_RIGHT_EDGE(f) FRAME_RIGHT_GUTTER_START (f) | |
5078
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
768 |
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
769 /* Thickness of non-paned area at edge of frame; |
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
770 |
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
771 FRAME_PANED_TOP_EDGE (f) == FRAME_NONPANED_SIZE (f, TOP_EDGE) |
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
772 FRAME_PANED_LEFT_EDGE (f) == FRAME_NONPANED_SIZE (f, LEFT_EDGE) |
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
773 FRAME_PANED_BOTTOM_EDGE (f) == |
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
774 FRAME_PIXHEIGHT (f) - FRAME_NONPANED_SIZE (f, BOTTOM_EDGE) |
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
775 FRAME_PANED_RIGHT_EDGE (f) == |
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
776 FRAME_PIXWIDTH (f) - FRAME_NONPANED_SIZE (f, RIGHT_EDGE) |
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
777 |
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
778 */ |
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
779 #define FRAME_NONPANED_SIZE(f, pos) \ |
5090 | 780 (FRAME_REAL_TOOLBAR_BOUNDS (f, pos) + FRAME_INTERNAL_BORDER_SIZE (f, pos) + \ |
781 FRAME_GUTTER_BOUNDS (f, pos)) | |
5078
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
782 |
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
783 |
a04cf0fea770
fix for clipped minibuffer window
Ben Wing <ben@xemacs.org>
parents:
5077
diff
changeset
|
784 |
872 | 785 #endif /* INCLUDED_frame_impl_h_ */ |