]> code.delx.au - gnu-emacs/blobdiff - src/window.h
* macfns.c (mac_window): Replace WindowPtr with WindowRef.
[gnu-emacs] / src / window.h
index ab9469a26190f0a81596fc38ae27dbd1b16766aa..372b80f326bb823095ac6c10c8c490b404c1e61a 100644 (file)
@@ -1,12 +1,13 @@
 /* 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,
@@ -16,8 +17,8 @@ GNU General Public License for more details.
 
 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
@@ -179,7 +180,6 @@ struct window
        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;
@@ -237,6 +237,11 @@ struct window
     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;
@@ -286,11 +291,6 @@ struct window
        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.  */
@@ -318,7 +318,7 @@ struct window
     |  |   +--------------------------- LEFT_MARGIN_COLS
     |  +------------------------------- LEFT_FRINGE_WIDTH
     +---------------------------------- LEFT_SCROLL_BAR_COLS
-    
+
 */
 
 
@@ -511,6 +511,18 @@ struct window
       / 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)                    \
@@ -636,22 +648,28 @@ struct window
    : 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)      \
@@ -747,8 +765,8 @@ EXFUN (Fdisplay_buffer, 3);
 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);
@@ -760,6 +778,7 @@ extern Lisp_Object window_from_coordinates P_ ((struct frame *, int, int,
 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));
@@ -801,7 +820,7 @@ extern int command_loop_level;
 
 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;
 
@@ -848,6 +867,7 @@ extern Lisp_Object Vwindow_list;
 
 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);
@@ -872,5 +892,9 @@ extern void init_window P_ ((void));
 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) */