/* 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.
You should have received a copy of the GNU General Public License
along with GNU Emacs; see the file COPYING. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA. */
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA. */
/* Don't multiply include: dispextern.h includes macterm.h which
includes frame.h some emacs source includes both dispextern.h and
#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 extra width (in pixels) currently allotted for fringes. */
int left_fringe_width, right_fringe_width;
-#ifdef MULTI_KBOARD
- /* XXX Maybe this should be moved to struct display, too. */
- /* A pointer to the kboard structure associated with this frame.
- For termcap frames, it will be the same as
- display->display_info.tty->kboard.
- For X frames, it will be the same as
- display->display_info.x->kboard. */
- struct kboard *kboard;
-#endif
-
/* See FULLSCREEN_ enum below */
int want_fullscreen;
/* 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)->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;