/* Window definitions for GNU Emacs.
- Copyright (C) 1985, 1986, 1993, 1995, 1997, 1998, 1999, 2000, 2001, 2003
- Free Software Foundation, Inc.
+ Copyright (C) 1985, 1986, 1993, 1995, 1997, 1998, 1999, 2000, 2001,
+ 2002, 2003, 2004, 2005, 2006, 2007, 2008
+ Free Software Foundation, Inc.
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
+the Free Software Foundation; either version 3, or (at your option)
any later version.
GNU Emacs is distributed in the hope that it will be useful,
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. */
#ifndef WINDOW_H_INCLUDED
#define WINDOW_H_INCLUDED
no scroll bar. A value of t means use frame value. */
Lisp_Object vertical_scroll_bar_type;
-/* The rest are currently not used or only half used */
/* Frame coords of mark as of last time display completed */
/* May be nil if mark does not exist or was not on frame */
Lisp_Object last_mark_x;
struct glyph_matrix *current_matrix;
struct glyph_matrix *desired_matrix;
+ /* Scaling factor for the glyph_matrix size calculation in this window.
+ Used if window contains many small images or uses proportional fonts,
+ as the normal may yield a matrix which is too small. */
+ int nrows_scale_factor, ncols_scale_factor;
+
/* Cursor position as of last update that completed without
pause. This is the position of last_point. */
struct cursor_pos last_cursor;
be changed during redisplay. If point is not in the window,
accept that. */
unsigned frozen_window_start_p : 1;
-
- /* 1 means that this window's height is temporarily fixed. Used
- in resize_mini_window to precent resizing selected_window, if
- possible. */
- unsigned height_fixed_p : 1;
};
/* 1 if W is a minibuffer window. */
| | +--------------------------- LEFT_MARGIN_COLS
| +------------------------------- LEFT_FRINGE_WIDTH
+---------------------------------- LEFT_SCROLL_BAR_COLS
-
+
*/
/ WINDOW_FRAME_COLUMN_WIDTH (W)) \
: FRAME_FRINGE_COLS (WINDOW_XFRAME (W)))
+/* Column-width of the left and right fringe. */
+
+#define WINDOW_LEFT_FRINGE_COLS(W) \
+ ((WINDOW_LEFT_FRINGE_WIDTH ((W)) \
+ + WINDOW_FRAME_COLUMN_WIDTH (W) - 1) \
+ / WINDOW_FRAME_COLUMN_WIDTH (W))
+
+#define WINDOW_RIGHT_FRINGE_COLS(W) \
+ ((WINDOW_RIGHT_FRINGE_WIDTH ((W)) \
+ + WINDOW_FRAME_COLUMN_WIDTH (W) - 1) \
+ / WINDOW_FRAME_COLUMN_WIDTH (W))
+
/* Pixel-width of the left and right fringe. */
#define WINDOW_LEFT_FRINGE_WIDTH(W) \
: WINDOW_LEFT_EDGE_X (W))
-/* Height in pixels of the mode line. May be zero if W doesn't have a
- mode line. */
+/* Height in pixels, and in lines, of the mode line.
+ May be zero if W doesn't have a mode line. */
#define WINDOW_MODE_LINE_HEIGHT(W) \
(WINDOW_WANTS_MODELINE_P ((W)) \
? CURRENT_MODE_LINE_HEIGHT (W) \
: 0)
-/* Height in pixels of the header line. Zero if W doesn't have a header
- line. */
+#define WINDOW_MODE_LINE_LINES(W) \
+ (!! WINDOW_WANTS_MODELINE_P ((W)))
+
+/* Height in pixels, and in lines, of the header line.
+ Zero if W doesn't have a header line. */
#define WINDOW_HEADER_LINE_HEIGHT(W) \
(WINDOW_WANTS_HEADER_LINE_P ((W)) \
? CURRENT_HEADER_LINE_HEIGHT (W) \
: 0)
+#define WINDOW_HEADER_LINE_LINES(W) \
+ (!! WINDOW_WANTS_HEADER_LINE_P ((W)))
+
/* Pixel height of window W without mode line. */
#define WINDOW_BOX_HEIGHT_NO_MODE_LINE(W) \
EXFUN (Fset_window_buffer, 3);
EXFUN (Fset_window_hscroll, 2);
EXFUN (Fwindow_hscroll, 1);
-EXFUN (Fset_window_vscroll, 2);
-EXFUN (Fwindow_vscroll, 1);
+EXFUN (Fset_window_vscroll, 3);
+EXFUN (Fwindow_vscroll, 2);
EXFUN (Fset_window_margins, 3);
EXFUN (Fwindow_live_p, 1);
EXFUN (Fset_window_point, 2);
EXFUN (Fwindow_dedicated_p, 1);
extern int window_height P_ ((Lisp_Object));
extern int window_width P_ ((Lisp_Object));
+EXFUN (Fwindow_full_width_p, 1);
extern void set_window_height P_ ((Lisp_Object, int, int));
extern void set_window_width P_ ((Lisp_Object, int, int));
extern void change_window_heights P_ ((Lisp_Object, int));
extern int minibuf_level;
-/* true iff we should redraw the mode lines on the next redisplay. */
+/* true if we should redraw the mode lines on the next redisplay. */
extern int update_mode_lines;
EXFUN (Fwindow_end, 2);
EXFUN (Fselected_window, 0);
+EXFUN (Fwindow_minibuffer_p, 1);
EXFUN (Fdelete_window, 1);
EXFUN (Fwindow_buffer, 1);
EXFUN (Fget_buffer_window, 2);
extern void syms_of_window P_ ((void));
extern void keys_of_window P_ ((void));
+extern int window_box_text_cols P_ ((struct window *w));
#endif /* not WINDOW_H_INCLUDED */
+
+/* arch-tag: d4a6942f-e433-4ffe-ac10-2c3574f28577
+ (do not change this comment) */