changeset 30743:51d0f4273e89

(Fwindow_end): Rewritten to not use Fvertical_motion, because that function doesn't cope with variable-height lines.
author Gerd Moellmann <gerd@gnu.org>
date Thu, 10 Aug 2000 19:14:59 +0000
parents e25bfc3f618c
children 6181f12f7f51
files src/window.c
diffstat 1 files changed, 13 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/src/window.c	Thu Aug 10 19:13:28 2000 +0000
+++ b/src/window.c	Thu Aug 10 19:14:59 2000 +0000
@@ -783,29 +783,29 @@
       && ! (! NILP (w->window_end_valid)
 	    && XFASTINT (w->last_modified) >= MODIFF))
     {
-      int opoint = PT, opoint_byte = PT_BYTE;
+      struct text_pos startp;
+      struct it it;
 
       /* In case W->start is out of the range, use something
          reasonable.  This situation occured when loading a file with
          `-l' containing a call to `rmail' with subsequent other
          commands.  At the end, W->start happened to be BEG, while
-         rmail had already narrowed the buffer.  This leads to an
-         abort in temp_set_pt_both.  */
+         rmail had already narrowed the buffer.  */
       if (XMARKER (w->start)->charpos < BEGV)
-	TEMP_SET_PT_BOTH (BEGV, BEGV_BYTE);
+	SET_TEXT_POS (startp, BEGV, BEGV_BYTE);
       else if (XMARKER (w->start)->charpos > ZV)
-	TEMP_SET_PT_BOTH (ZV, ZV_BYTE);
+	SET_TEXT_POS (startp, ZV, ZV_BYTE);
       else
-	TEMP_SET_PT_BOTH (XMARKER (w->start)->charpos,
-			  XMARKER (w->start)->bytepos);
-      
-      Fvertical_motion (make_number (window_internal_height (w)), Qnil);
-      XSETINT (value, PT);
-      TEMP_SET_PT_BOTH (opoint, opoint_byte);
+	SET_TEXT_POS_FROM_MARKER (startp, w->start);
+
+      /* Cannot use Fvertical_motion because that function doesn't
+	 cope with variable-height lines.  */
+      start_display (&it, w, startp);
+      move_it_vertically (&it, window_box_height (w));
+      value = make_number (IT_CHARPOS (it));
     }
   else
-    XSETINT (value,
-	     BUF_Z (XBUFFER (buf)) - XFASTINT (w->window_end_pos));
+    XSETINT (value, BUF_Z (XBUFFER (buf)) - XFASTINT (w->window_end_pos));
 
   return value;
 }