/* Define frame-object for GNU Emacs.
- Copyright (C) 1993, 1994, 1999, 2000, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1993, 1994, 1999, 2000, 2001, 2002, 2003, 2004,
+ 2005, 2006 Free Software Foundation, Inc.
This file is part of GNU Emacs.
#define FRAME_FOREGROUND_PIXEL(f) ((f)->foreground_pixel)
#define FRAME_BACKGROUND_PIXEL(f) ((f)->background_pixel)
-struct display;
+struct terminal;
struct frame
{
Actually, we don't specify exactly what is stored here at all; the
scroll bar implementation code can use it to store anything it likes.
This field is marked by the garbage collector. It is here
- instead of in the `display' structure so that the garbage
+ instead of in the `device' structure so that the garbage
collector doesn't need to look inside the window-system-dependent
structure. */
Lisp_Object scroll_bars;
/* List of buffers viewed in this frame, for other-buffer. */
Lisp_Object buffer_list;
+ /* List of buffers that were viewed, then buried in this frame. The
+ most recently buried buffer is first. For last-buffer. */
+ Lisp_Object buried_buffer_list;
+
/* A dummy window used to display menu bars under X when no X
toolkit support is available. */
Lisp_Object menu_bar_window;
/* The output method says how the contents of this frame are
displayed. It could be using termcap, or using an X window.
- This must be the same as the display->type. */
+ This must be the same as the terminal->type. */
enum output_method output_method;
- /* The display that this frame uses. If this is NULL, then the
- frame is deleted. */
- struct display *display;
+ /* The terminal device that this frame uses. If this is NULL, then
+ the frame has been deleted. */
+ struct terminal *terminal;
- /* Display-dependent, frame-local auxiliary data used for displaying
+ /* Device-dependent, frame-local auxiliary data used for displaying
the contents. When the frame is deleted, this data is deleted as
well. */
union output_data
/* The baud rate that was used to calculate costs for this frame. */
int cost_calculation_baud_rate;
- /* Nonzero if the mouse has moved on this display
+ /* Nonzero if the mouse has moved on this display device
since the last time we checked. */
char mouse_moved;
realized. Reset to zero whenever the default face changes.
Used to see the difference between a font change and face change. */
unsigned default_face_done_p : 1;
+
+ /* Set to non-zero if this frame has already been hscrolled during
+ current redisplay. */
+ unsigned already_hscrolled_p : 1;
+
+ /* Set to non-zero when current redisplay has updated frame. */
+ unsigned updated_p : 1;
};
#ifdef MULTI_KBOARD
-#define FRAME_KBOARD(f) ((f)->display->kboard)
+#define FRAME_KBOARD(f) ((f)->terminal->kboard)
#else
#define FRAME_KBOARD(f) (&the_only_kboard)
#endif
#endif
/* Nonzero if frame F is still alive (not deleted). */
-#define FRAME_LIVE_P(f) ((f)->display != 0)
+#define FRAME_LIVE_P(f) ((f)->terminal != 0)
/* Nonzero if frame F is a minibuffer-only frame. */
#define FRAME_MINIBUF_ONLY_P(f) \
extern Lisp_Object Qframep, Qframe_live_p;
extern Lisp_Object Qtty, Qtty_type;
-extern Lisp_Object Qdisplay_id, Qdisplay_live_p;
+extern Lisp_Object Qterminal, Qterminal_live_p;
+extern Lisp_Object Qenvironment;
extern struct frame *last_nonminibuf_frame;
extern struct frame *make_initial_frame P_ ((void));
-extern struct frame *make_terminal_frame P_ ((struct display *));
+extern struct frame *make_terminal_frame P_ ((struct terminal *));
extern struct frame *make_frame P_ ((int));
#ifdef HAVE_WINDOW_SYSTEM
extern struct frame *make_minibuffer_frame P_ ((void));
Display-related Macros
***********************************************************************/
-/* Canonical y-unit on frame F.
+/* Canonical y-unit on frame F.
This value currently equals the line height of the frame (which is
the height of the default font of F). */
#define FRAME_LINE_HEIGHT(F) ((F)->line_height)
-/* Canonical x-unit on frame F.
+/* Canonical x-unit on frame F.
This value currently equals the average width of the default font of F. */
#define FRAME_COLUMN_WIDTH(F) ((F)->column_width)
extern Lisp_Object Qauto_raise, Qauto_lower;
extern Lisp_Object Qborder_color, Qborder_width;
-extern Lisp_Object Qbuffer_predicate, Qbuffer_list;
+extern Lisp_Object Qbuffer_predicate, Qbuffer_list, Qburied_buffer_list;
extern Lisp_Object Qcursor_color, Qcursor_type;
extern Lisp_Object Qfont;
extern Lisp_Object Qbackground_color, Qforeground_color;