int modiff;
- /* subwindow cache elements for this frame */
- subwindow_cachel_dynarr *subwindow_cachels;
-
struct expose_ignore* subwindow_exposures;
struct expose_ignore* subwindow_exposures_tail;
/* Size of toolbars 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_toolbar_size[4];
+ 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. */
+ 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;
unsigned int extents_changed :1;
unsigned int faces_changed :1;
unsigned int frame_changed :1;
+ unsigned int frame_layout_changed :1; /* The layout of frame
+ elements has changed. */
unsigned int subwindows_changed :1;
unsigned int subwindows_state_changed :1;
unsigned int glyphs_changed :1;
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));
#define CHECK_X_FRAME(z) CHECK_FRAME_TYPE (z, x)
#define CONCHECK_X_FRAME(z) CONCHECK_FRAME_TYPE (z, x)
+#define FRAME_GTK_P(frm) CONSOLE_TYPESYM_GTK_P (FRAME_TYPE (frm))
+#define CHECK_GTK_FRAME(z) CHECK_FRAME_TYPE (z, gtk)
+#define CONCHECK_GTK_FRAME(z) CONCHECK_FRAME_TYPE (z, gtk)
+
#define FRAME_TTY_P(frm) CONSOLE_TYPESYM_TTY_P (FRAME_TYPE (frm))
#define CHECK_TTY_FRAME(z) CHECK_FRAME_TYPE (z, tty)
#define CONCHECK_TTY_FRAME(z) CONCHECK_FRAME_TYPE (z, tty)
frame_changed = 1; \
} while (0)
+#define MARK_FRAME_LAYOUT_CHANGED(f) do { \
+ struct frame *mfc_f = (f); \
+ mfc_f->frame_layout_changed = 1; \
+ mfc_f->modiff++; \
+ if (!NILP (mfc_f->device)) \
+ { \
+ struct device *mfc_d = XDEVICE (mfc_f->device); \
+ MARK_DEVICE_FRAME_LAYOUT_CHANGED (mfc_d); \
+ } \
+ else \
+ frame_layout_changed = 1; \
+} while (0)
+
#define MARK_FRAME_WINDOWS_CHANGED(f) do { \
struct frame *mfwc_f = (f); \
mfwc_f->windows_changed = 1; \
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 */
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);
+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);