/* Synched up with: FSF 19.30. */
-#ifndef _XEMACS_FRAME_H_
-#define _XEMACS_FRAME_H_
+#ifndef INCLUDED_frame_h_
+#define INCLUDED_frame_h_
#ifdef HAVE_SCROLLBARS
#include "scrollbar.h"
int order_count;
#endif
+ /* Current page number for a printer frame. */
+ int page_number;
+
/* Width of the internal border. This is a line of background color
just inside the window's border. It is normally only non-zero on
X frames, but we put it here to avoid introducing window system
int modiff;
- /* subwindow cache elements for this frame */
- subwindow_cachel_dynarr *subwindow_cachels;
-
struct expose_ignore* subwindow_exposures;
struct expose_ignore* subwindow_exposures_tail;
unsigned int current_toolbar_size[4];
#endif
- /* Dynamic array of display lines for gutters */
- display_line_dynarr *current_display_lines;
- display_line_dynarr *desired_display_lines;
+ /* Size of gutters as seen by redisplay. This is used to determine
+ whether to re-layout windows by a call to change_frame_size early
+ in redisplay_frame. */
+ unsigned int current_gutter_bounds[4];
+
+ /* Dynamic arrays of display lines for gutters */
+ display_line_dynarr *current_display_lines[4];
+ display_line_dynarr *desired_display_lines[4];
/* A structure of auxiliary data specific to the device type.
struct x_frame is used for X window frames; defined in console-x.h */
/* one-bit flags: */
+ /* Is focusing onto this frame disabled? (Modal dialog boxes) */
+ unsigned int disabled :1;
+
/* Are we finished initializing? */
unsigned int init_finished :1;
EXFUN (Fselect_frame, 1);
EXFUN (Fset_frame_pointer, 2);
EXFUN (Fset_frame_position, 3);
+EXFUN (Fset_frame_properties, 2);
EXFUN (Fset_frame_size, 4);
extern Lisp_Object Qbackground_toolbar_color, Qbell_volume, Qborder_color;
DECLARE_LRECORD (frame, struct frame);
#define XFRAME(x) XRECORD (x, frame, struct frame)
#define XSETFRAME(x, p) XSETRECORD (x, p, frame)
+#define wrap_frame(p) wrap_object (p)
#define FRAMEP(x) RECORDP (x, frame)
#define CHECK_FRAME(x) CHECK_RECORD (x, frame)
#define CONCHECK_FRAME(x) CONCHECK_RECORD (x, frame)
#define FRAME_TYPE_P(f, type) EQ (FRAME_TYPE (f), Q##type)
#ifdef ERROR_CHECK_TYPECHECK
-INLINE struct frame *
+INLINE_HEADER struct frame *
error_check_frame_type (struct frame * f, Lisp_Object sym);
-INLINE struct frame *
+INLINE_HEADER struct frame *
error_check_frame_type (struct frame * f, Lisp_Object sym)
{
assert (EQ (FRAME_TYPE (f), sym));
(type##_console_methods->predicate_symbol, x); \
} while (0)
+#define FRAME_DISPLAY_P(frm) \
+ (DEVICE_DISPLAY_P (XDEVICE (FRAME_DEVICE (frm))))
+
+#define CHECK_DISPLAY_FRAME(frm) \
+ do { \
+ CHECK_FRAME (frm); \
+ CHECK_LIVE_FRAME (frm); \
+ CHECK_DISPLAY_DEVICE (FRAME_DEVICE (XFRAME (frm))); \
+ } while (0)
+
+#define CONCHECK_DISPLAY_FRAME(frm) \
+ do { \
+ CONCHECK_FRAME (frm); \
+ CONCHECK_LIVE_FRAME (frm); \
+ CONCHECK_DISPLAY_DEVICE (FRAME_DEVICE (XFRAME (frm))); \
+ } while (0)
+
+#define FRAME_PRINTER_P(frm) \
+ (DEVICE_PRINTER_P (XDEVICE (FRAME_DEVICE (frm))))
+
+#define CHECK_PRINTER_FRAME(frm) \
+ do { \
+ CHECK_FRAME (frm); \
+ CHECK_LIVE_FRAME (frm); \
+ CHECK_PRINTER_DEVICE (FRAME_DEVICE (XFRAME (frm))); \
+ } while (0)
+
+#define CONCHECK_PRINTER_FRAME(frm) \
+ do { \
+ CONCHECK_FRAME (frm); \
+ CONCHECK_LIVE_FRAME (frm); \
+ CONCHECK_PRINTER_DEVICE (FRAME_DEVICE (XFRAME (frm))); \
+ } while (0)
+
/* #### These should be in the frame-*.h files but there are
too many places where the abstraction is broken. Need to
fix. */
#define MARK_FRAME_SUBWINDOWS_CHANGED(f) do { \
struct frame *mfgc_f = (f); \
- mfgc_f->subwindows_changed = 1; \
+ mfgc_f->subwindows_changed = 1; \
mfgc_f->modiff++; \
if (!NILP (mfgc_f->device)) \
{ \
MARK_DEVICE_SUBWINDOWS_CHANGED (mfgc_d); \
} \
else \
- subwindows_changed = 1; \
+ subwindows_changed = 1; \
} while (0)
#define MARK_FRAME_SUBWINDOWS_STATE_CHANGED(f) do { \
struct frame *mfgc_f = (f); \
- mfgc_f->subwindows_state_changed = 1; \
+ mfgc_f->subwindows_state_changed = 1; \
mfgc_f->modiff++; \
if (!NILP (mfgc_f->device)) \
{ \
toolbar_changed = 1; \
} while (0)
-#define MARK_FRAME_GUTTERS_CHANGED(f) do { \
+#define MARK_FRAME_GUTTERS_CHANGED(f) do { \
struct frame *mftc_f = (f); \
mftc_f->gutter_changed = 1; \
mftc_f->modiff++; \
if (!NILP (mftc_f->device)) \
{ \
struct device *mftc_d = XDEVICE (mftc_f->device); \
- MARK_DEVICE_GUTTERS_CHANGED (mftc_d); \
+ MARK_DEVICE_GUTTERS_CHANGED (mftc_d); \
} \
else \
gutter_changed = 1; \
#define FRAME_MINIBUF_ONLY_P(f) \
EQ (FRAME_ROOT_WINDOW (f), FRAME_MINIBUF_WINDOW (f))
-#define FRAME_HAS_MINIBUF_P(f) ((f)->has_minibuffer)
-#define FRAME_HEIGHT(f) ((f)->height)
-#define FRAME_WIDTH(f) ((f)->width)
-#define FRAME_CHARHEIGHT(f) ((f)->char_height)
-#define FRAME_CHARWIDTH(f) ((f)->char_width)
-#define FRAME_PIXHEIGHT(f) ((f)->pixheight)
-#define FRAME_PIXWIDTH(f) ((f)->pixwidth)
+#define FRAME_HAS_MINIBUF_P(f) ((f)->has_minibuffer)
+#define FRAME_HEIGHT(f) ((f)->height)
+#define FRAME_WIDTH(f) ((f)->width)
+#define FRAME_CHARHEIGHT(f) ((f)->char_height)
+#define FRAME_CHARWIDTH(f) ((f)->char_width)
+#define FRAME_PIXHEIGHT(f) ((f)->pixheight)
+#define FRAME_PIXWIDTH(f) ((f)->pixwidth)
+#define FRAME_PAGENUMBER(f) ((f)->page_number + 0)
+#define FRAME_SET_PAGENUMBER(f,x) (f)->page_number = (x);
#ifdef HAVE_SCROLLBARS
#define FRAME_SCROLLBAR_WIDTH(f) \
(NILP ((f)->vertical_scrollbar_visible_p) ? \
#define FW_FRAME(obj) \
(WINDOWP (obj) ? WINDOW_FRAME (XWINDOW (obj)) \
- : (FRAMEP (obj) ? obj \
- : Qnil))
+ : (FRAMEP (obj) ? obj \
+ : Qnil))
#define FRAME_NEW_HEIGHT(f) ((f)->new_height)
#define FRAME_NEW_WIDTH(f) ((f)->new_width)
NON_LVALUE ((f)->last_nonminibuf_window)
#define FRAME_SB_VCACHE(f) ((f)->sb_vcache)
#define FRAME_SB_HCACHE(f) ((f)->sb_hcache)
-#define FRAME_SUBWINDOW_CACHE(f) ((f)->subwindow_cachels)
+#define FRAME_SUBWINDOW_CACHE(f) ((f)->subwindow_instance_cache)
#if 0 /* FSFmacs */
FRAME_THEORETICAL_TOOLBAR_SIZE (f, RIGHT_TOOLBAR)
#define FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH(f, pos) \
- (FRAME_RAW_THEORETICAL_TOOLBAR_VISIBLE (f, pos) \
+ (FRAME_RAW_THEORETICAL_TOOLBAR_VISIBLE (f, pos) \
? FRAME_RAW_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, pos) \
: 0)
if you encounter some odd toolbar behavior, you might want
to look into this. --ben */
-#define FRAME_REAL_TOOLBAR_VISIBLE(f, pos) \
- ((!NILP (FRAME_REAL_TOOLBAR (f, pos)) \
- && FRAME_RAW_REAL_TOOLBAR_SIZE (f, pos) > 0) \
- ? FRAME_RAW_REAL_TOOLBAR_VISIBLE (f, pos) \
+#define FRAME_REAL_TOOLBAR_VISIBLE(f, pos) \
+ ((!NILP (FRAME_REAL_TOOLBAR (f, pos)) \
+ && FRAME_RAW_REAL_TOOLBAR_SIZE (f, pos) > 0) \
+ ? FRAME_RAW_REAL_TOOLBAR_VISIBLE (f, pos) \
: 0)
-#define FRAME_REAL_TOOLBAR_SIZE(f, pos) \
- ((!NILP (FRAME_REAL_TOOLBAR (f, pos)) \
- && FRAME_RAW_REAL_TOOLBAR_VISIBLE (f, pos)) \
- ? FRAME_RAW_REAL_TOOLBAR_SIZE (f, pos) \
+#define FRAME_REAL_TOOLBAR_SIZE(f, pos) \
+ ((!NILP (FRAME_REAL_TOOLBAR (f, pos)) \
+ && FRAME_RAW_REAL_TOOLBAR_VISIBLE (f, pos)) \
+ ? FRAME_RAW_REAL_TOOLBAR_SIZE (f, pos) \
: 0)
#define FRAME_REAL_TOOLBAR_BORDER_WIDTH(f, pos) \
- ((!NILP (FRAME_REAL_TOOLBAR (f, pos)) \
+ ((!NILP (FRAME_REAL_TOOLBAR (f, pos)) \
&& FRAME_RAW_REAL_TOOLBAR_VISIBLE (f, pos)) \
? FRAME_RAW_REAL_TOOLBAR_BORDER_WIDTH (f, pos) \
: 0)
#define FRAME_REAL_RIGHT_TOOLBAR_VISIBLE(f) \
FRAME_REAL_TOOLBAR_VISIBLE (f, RIGHT_TOOLBAR)
-#define FRAME_TOP_BORDER_START(f) \
- (FRAME_REAL_TOP_TOOLBAR_HEIGHT (f) + \
+#define FRAME_TOP_BORDER_START(f) \
+ (FRAME_REAL_TOP_TOOLBAR_HEIGHT (f) + \
2 * FRAME_REAL_TOP_TOOLBAR_BORDER_WIDTH (f))
-#define FRAME_TOP_BORDER_END(f) \
+#define FRAME_TOP_BORDER_END(f) \
(FRAME_TOP_BORDER_START (f) + FRAME_BORDER_HEIGHT (f))
-#define FRAME_BOTTOM_BORDER_START(f) \
- (FRAME_PIXHEIGHT (f) - FRAME_BORDER_HEIGHT (f) - \
- FRAME_REAL_BOTTOM_TOOLBAR_HEIGHT (f) - \
+#define FRAME_BOTTOM_BORDER_START(f) \
+ (FRAME_PIXHEIGHT (f) - FRAME_BORDER_HEIGHT (f) - \
+ FRAME_REAL_BOTTOM_TOOLBAR_HEIGHT (f) - \
2 * FRAME_REAL_BOTTOM_TOOLBAR_BORDER_WIDTH (f))
-#define FRAME_BOTTOM_BORDER_END(f) \
- (FRAME_PIXHEIGHT (f) - FRAME_REAL_BOTTOM_TOOLBAR_HEIGHT (f) - \
+#define FRAME_BOTTOM_BORDER_END(f) \
+ (FRAME_PIXHEIGHT (f) - FRAME_REAL_BOTTOM_TOOLBAR_HEIGHT (f) - \
2 * FRAME_REAL_BOTTOM_TOOLBAR_BORDER_WIDTH (f))
-#define FRAME_LEFT_BORDER_START(f) \
- (FRAME_REAL_LEFT_TOOLBAR_WIDTH (f) + \
+#define FRAME_LEFT_BORDER_START(f) \
+ (FRAME_REAL_LEFT_TOOLBAR_WIDTH (f) + \
2 * FRAME_REAL_LEFT_TOOLBAR_BORDER_WIDTH (f))
-#define FRAME_LEFT_BORDER_END(f) \
+#define FRAME_LEFT_BORDER_END(f) \
(FRAME_LEFT_BORDER_START (f) + FRAME_BORDER_WIDTH (f))
-#define FRAME_RIGHT_BORDER_START(f) \
- (FRAME_PIXWIDTH (f) - FRAME_BORDER_WIDTH (f) - \
- FRAME_REAL_RIGHT_TOOLBAR_WIDTH(f) - \
+#define FRAME_RIGHT_BORDER_START(f) \
+ (FRAME_PIXWIDTH (f) - FRAME_BORDER_WIDTH (f) - \
+ FRAME_REAL_RIGHT_TOOLBAR_WIDTH(f) - \
2 * FRAME_REAL_RIGHT_TOOLBAR_BORDER_WIDTH (f))
-#define FRAME_RIGHT_BORDER_END(f) \
- (FRAME_PIXWIDTH (f) - FRAME_REAL_RIGHT_TOOLBAR_WIDTH (f) - \
+#define FRAME_RIGHT_BORDER_END(f) \
+ (FRAME_PIXWIDTH (f) - FRAME_REAL_RIGHT_TOOLBAR_WIDTH (f) - \
2 * FRAME_REAL_RIGHT_TOOLBAR_BORDER_WIDTH(f))
/* Equivalent in FSF Emacs:
DEVICE_FRAME_LOOP (frmcons, XDEVICE (XCAR (devcons)))
void update_frame_title (struct frame *f);
-Lisp_Object next_frame (Lisp_Object f, Lisp_Object frametype,
- Lisp_Object console);
-Lisp_Object prev_frame (Lisp_Object f, Lisp_Object frametype,
- Lisp_Object console);
-void store_in_alist (Lisp_Object *alistptr,
- CONST char *propname,
- Lisp_Object val);
+Lisp_Object next_frame (Lisp_Object, Lisp_Object, Lisp_Object);
+Lisp_Object previous_frame (Lisp_Object, Lisp_Object, Lisp_Object);
void pixel_to_char_size (struct frame *f, int pixel_width, int pixel_height,
int *char_width, int *char_height);
void char_to_pixel_size (struct frame *f, int char_width, int char_height,
void io_error_delete_frame (Lisp_Object frame);
Lisp_Object find_some_frame (int (*predicate) (Lisp_Object, void *),
void *closure);
-int device_matches_console_spec (Lisp_Object frame, Lisp_Object device,
- Lisp_Object console);
+int device_matches_device_spec (Lisp_Object device, Lisp_Object device_spec);
Lisp_Object frame_first_window (struct frame *f);
int show_gc_cursor (struct frame *f, Lisp_Object cursor);
void set_frame_selected_window (struct frame *f, Lisp_Object window);
void init_frame (void);
-#endif /* _XEMACS_FRAME_H_ */
+#endif /* INCLUDED_frame_h_ */