/* Define frame-object for GNU Emacs.
- Copyright (C) 1993-1994, 1999-2011 Free Software Foundation, Inc.
+ Copyright (C) 1993-1994, 1999-2012 Free Software Foundation, Inc.
This file is part of GNU Emacs.
/* Nonzero means there is at least one garbaged frame. */
extern int frame_garbaged;
-/* Nonzero means FRAME_MESSAGE_BUF (selected_frame) is being used by
- print. */
-
-extern int message_buf_print;
-
\f
/* The structure representing a frame. */
struct frame
{
- EMACS_UINT size;
- struct Lisp_Vector *next;
+ struct vectorlike_header header;
/* All Lisp_Object components must come first.
That ensures they are all aligned normally. */
struct face_cache *face_cache;
/* Number of elements in `menu_bar_vector' that have meaningful data. */
- EMACS_INT menu_bar_items_used;
+ int menu_bar_items_used;
/* A buffer to hold the frame's name. We can't use the Lisp
string's pointer (`name', above) because it might get relocated. */
/* Size of this frame, excluding fringes, scroll bars etc.,
in units of canonical characters. */
- EMACS_INT text_lines, text_cols;
+ int text_lines, text_cols;
/* Total size of this frame (i.e. its native window), in units of
canonical characters. */
- EMACS_INT total_lines, total_cols;
+ int total_lines, total_cols;
/* New text height and width for pending size change.
0 if no change pending. */
if greater than 1, then the frame is obscured - we still consider
it to be "visible" as seen from lisp, but we don't bother
updating it. We must take care to garbage the frame when it
- ceaces to be obscured though.
+ ceases to be obscured though.
iconified is nonzero if the frame is currently iconified.
does not have FRAME_X_DISPLAY_INFO. */
#ifdef HAVE_WINDOW_SYSTEM
# define MOUSE_HL_INFO(F) \
- (FRAME_WINDOW_P(F) \
- ? &(FRAME_X_DISPLAY_INFO(F)->mouse_highlight) \
- : &(((F)->output_data.tty->display_info)->mouse_highlight))
+ (FRAME_WINDOW_P(F) \
+ ? &FRAME_X_DISPLAY_INFO(F)->mouse_highlight \
+ : &(F)->output_data.tty->display_info->mouse_highlight)
#else
# define MOUSE_HL_INFO(F) \
- (&(((F)->output_data.tty->display_info)->mouse_highlight))
+ (&(F)->output_data.tty->display_info->mouse_highlight)
#endif
/* Nonzero if frame F is still alive (not deleted). */
/* Lines above the top-most window in frame F. */
#define FRAME_TOP_MARGIN(F) \
- (FRAME_MENU_BAR_LINES (F) + FRAME_TOOL_BAR_LINES (F))
+ (FRAME_MENU_BAR_LINES (F) + FRAME_TOOL_BAR_LINES (F))
/* Pixel height of the top margin above. */
and which side they are on. */
#define FRAME_VERTICAL_SCROLL_BAR_TYPE(f) ((f)->vertical_scroll_bar_type)
#define FRAME_HAS_VERTICAL_SCROLL_BARS(f) \
- ((f)->vertical_scroll_bar_type != vertical_scroll_bar_none)
+ ((f)->vertical_scroll_bar_type != vertical_scroll_bar_none)
#define FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT(f) \
- ((f)->vertical_scroll_bar_type == vertical_scroll_bar_left)
+ ((f)->vertical_scroll_bar_type == vertical_scroll_bar_left)
#define FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT(f) \
- ((f)->vertical_scroll_bar_type == vertical_scroll_bar_right)
+ ((f)->vertical_scroll_bar_type == vertical_scroll_bar_right)
/* Width that a scroll bar in frame F should have, if there is one.
Measured in pixels.
the right in this frame, or there are no scroll bars, value is 0. */
#define FRAME_LEFT_SCROLL_BAR_COLS(f) \
- (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT (f) \
- ? FRAME_CONFIG_SCROLL_BAR_COLS (f) \
- : 0)
+ (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT (f) \
+ ? FRAME_CONFIG_SCROLL_BAR_COLS (f) \
+ : 0)
/* Width of a left scroll bar in frame F, measured in pixels */
-#define FRAME_LEFT_SCROLL_BAR_AREA_WIDTH(f) \
+#define FRAME_LEFT_SCROLL_BAR_AREA_WIDTH(f) \
(FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT (f) \
? (FRAME_CONFIG_SCROLL_BAR_COLS (f) * FRAME_COLUMN_WIDTH (f)) \
: 0)
the left in this frame, or there are no scroll bars, value is 0. */
#define FRAME_RIGHT_SCROLL_BAR_COLS(f) \
- (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT (f) \
- ? FRAME_CONFIG_SCROLL_BAR_COLS (f) \
- : 0)
+ (FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT (f) \
+ ? FRAME_CONFIG_SCROLL_BAR_COLS (f) \
+ : 0)
/* Width of a right scroll bar area in frame F, measured in pixels */
-#define FRAME_RIGHT_SCROLL_BAR_AREA_WIDTH(f) \
+#define FRAME_RIGHT_SCROLL_BAR_AREA_WIDTH(f) \
(FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT (f) \
? (FRAME_CONFIG_SCROLL_BAR_COLS (f) * FRAME_COLUMN_WIDTH (f)) \
: 0)
/* Actual width of a scroll bar in frame F, measured in columns. */
#define FRAME_SCROLL_BAR_COLS(f) \
- (FRAME_HAS_VERTICAL_SCROLL_BARS (f) \
- ? FRAME_CONFIG_SCROLL_BAR_COLS (f) \
- : 0)
+ (FRAME_HAS_VERTICAL_SCROLL_BARS (f) \
+ ? FRAME_CONFIG_SCROLL_BAR_COLS (f) \
+ : 0)
/* Actual width of a scroll bar area in frame F, measured in pixels. */
not including scroll bars and fringes. */
#define SET_FRAME_COLS(f, val) \
- (FRAME_COLS (f) = (val), \
- (f)->total_cols = FRAME_TOTAL_COLS_ARG (f, FRAME_COLS (f)))
+ (FRAME_COLS (f) = (val), \
+ (f)->total_cols = FRAME_TOTAL_COLS_ARG (f, FRAME_COLS (f)))
/* Given a value WIDTH for frame F's nominal width,
return the value that FRAME_TOTAL_COLS should have. */
#define FRAME_TOTAL_COLS_ARG(f, width) \
- ((width) \
- + FRAME_SCROLL_BAR_COLS (f) \
- + FRAME_FRINGE_COLS (f))
+ ((width) \
+ + FRAME_SCROLL_BAR_COLS (f) \
+ + FRAME_FRINGE_COLS (f))
/* Maximum + 1 legitimate value for FRAME_CURSOR_X. */
#define FRAME_CURSOR_X_LIMIT(f) \
- (FRAME_COLS (f) + FRAME_LEFT_SCROLL_BAR_COLS (f))
+ (FRAME_COLS (f) + FRAME_LEFT_SCROLL_BAR_COLS (f))
/* Nonzero if frame F has scroll bars. */
extern void set_menu_bar_lines (struct frame *, Lisp_Object, Lisp_Object);
extern struct frame *make_initial_frame (void);
-extern struct frame *make_terminal_frame (struct terminal *);
extern struct frame *make_frame (int);
#ifdef HAVE_WINDOW_SYSTEM
extern struct frame *make_minibuffer_frame (void);
struct kboard *,
Lisp_Object);
#endif /* HAVE_WINDOW_SYSTEM */
-extern int other_visible_frames (struct frame *);
extern void frame_make_pointer_invisible (void);
extern void frame_make_pointer_visible (void);
extern Lisp_Object delete_frame (Lisp_Object, Lisp_Object);
float. Value is a C integer. */
#define FRAME_PIXEL_X_FROM_CANON_X(F, X) \
- (INTEGERP (X) \
- ? XINT (X) * FRAME_COLUMN_WIDTH (F) \
- : (int) (XFLOAT_DATA (X) * FRAME_COLUMN_WIDTH (F)))
+ (INTEGERP (X) \
+ ? XINT (X) * FRAME_COLUMN_WIDTH (F) \
+ : (int) (XFLOAT_DATA (X) * FRAME_COLUMN_WIDTH (F)))
/* Convert canonical value Y to pixels. F is the frame whose
canonical character height is to be used. X must be a Lisp integer
or float. Value is a C integer. */
#define FRAME_PIXEL_Y_FROM_CANON_Y(F, Y) \
- (INTEGERP (Y) \
- ? XINT (Y) * FRAME_LINE_HEIGHT (F) \
- : (int) (XFLOAT_DATA (Y) * FRAME_LINE_HEIGHT (F)))
+ (INTEGERP (Y) \
+ ? XINT (Y) * FRAME_LINE_HEIGHT (F) \
+ : (int) (XFLOAT_DATA (Y) * FRAME_LINE_HEIGHT (F)))
/* Convert pixel-value X to canonical units. F is the frame whose
canonical character width is to be used. X is a C integer. Result
otherwise it's a Lisp integer. */
#define FRAME_CANON_X_FROM_PIXEL_X(F, X) \
- ((X) % FRAME_COLUMN_WIDTH (F) != 0 \
- ? make_float ((double) (X) / FRAME_COLUMN_WIDTH (F)) \
- : make_number ((X) / FRAME_COLUMN_WIDTH (F)))
+ ((X) % FRAME_COLUMN_WIDTH (F) != 0 \
+ ? make_float ((double) (X) / FRAME_COLUMN_WIDTH (F)) \
+ : make_number ((X) / FRAME_COLUMN_WIDTH (F)))
/* Convert pixel-value Y to canonical units. F is the frame whose
canonical character height is to be used. Y is a C integer.
otherwise it's a Lisp integer. */
#define FRAME_CANON_Y_FROM_PIXEL_Y(F, Y) \
- ((Y) % FRAME_LINE_HEIGHT (F) \
- ? make_float ((double) (Y) / FRAME_LINE_HEIGHT (F)) \
- : make_number ((Y) / FRAME_LINE_HEIGHT (F)))
+ ((Y) % FRAME_LINE_HEIGHT (F) \
+ ? make_float ((double) (Y) / FRAME_LINE_HEIGHT (F)) \
+ : make_number ((Y) / FRAME_LINE_HEIGHT (F)))
\f
extern Lisp_Object Qauto_raise, Qauto_lower;
extern Lisp_Object Qborder_color, Qborder_width;
-extern Lisp_Object Qbuffer_predicate, Qbuffer_list, Qburied_buffer_list;
+extern Lisp_Object Qbuffer_predicate;
extern Lisp_Object Qcursor_color, Qcursor_type;
extern Lisp_Object Qfont;
extern Lisp_Object Qbackground_color, Qforeground_color;
extern Lisp_Object Qx, Qw32, Qmac, Qpc, Qns;
extern Lisp_Object Qvisible;
extern Lisp_Object Qdisplay_type;
-extern Lisp_Object Qbackground_mode;
extern Lisp_Object Qx_resource_name;
extern Lisp_Object Qface_set_after_frame_default;
+#ifdef WINDOWSNT
extern void x_fullscreen_adjust (struct frame *f, int *, int *,
int *, int *);
+#endif
extern void x_set_frame_parameters (struct frame *, Lisp_Object);
-extern void x_report_frame_params (struct frame *, Lisp_Object *);
extern void x_set_fullscreen (struct frame *, Lisp_Object, Lisp_Object);
extern void x_set_line_spacing (struct frame *, Lisp_Object, Lisp_Object);