changeset 17019:481772010c86

(Fpos_visible_in_window_p): Bug fix. Specify big negative number for the argument TOHPOS of compute_motion(). We don't need to calculate to (HPOS==0), but can stop immediately when VPOS pasts HEIGHT.
author Karl Heuer <kwzh@gnu.org>
date Thu, 20 Feb 1997 06:42:13 +0000
parents f13a67b3ec8d
children 5cf5e7c9fe55
files src/window.c
diffstat 1 files changed, 12 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/window.c	Thu Feb 20 06:41:36 1997 +0000
+++ b/src/window.c	Thu Feb 20 06:42:13 1997 +0000
@@ -253,8 +253,17 @@
 	return Qnil;
 
       /* If that info is not correct, calculate afresh */
+      /* BUG FIX for the 7th arg (TOHPOS).
+
+	 '0' is harmless, however, ' - (1 << (BITS_PER_SHORT - 1))' is
+	 more appropriate here.  In case of HSCROLL > 0, this can avoid
+	 needless calculation done until (HPOS == 0).
+
+	 We want to determine if the position POSINT is in HEIGHT or
+	 not.  We don't have to do calculation until (HPOS == 0).  We
+	 can stop it when VPOS goes beyond HEIGHT.  */
       posval = *compute_motion (top, 0, (hscroll ? 1 - hscroll : 0), 0,
-				posint, height, 0,
+				posint, height, - (1 << (BITS_PER_SHORT - 1)),
 				window_internal_width (w) - 1,
 				hscroll, 0, w);
 
@@ -1573,7 +1582,7 @@
 
       Fset_marker (w->start, make_number (pos.bufpos), w->buffer);
       w->start_at_line_beg = ((pos.bufpos == BEGV
-			       || FETCH_CHAR (pos.bufpos - 1) == '\n') ? Qt
+			       || FETCH_BYTE (pos.bufpos - 1) == '\n') ? Qt
 			      : Qnil);
       /* We need to do this, so that the window-scroll-functions
 	 get called.  */
@@ -3055,7 +3064,7 @@
 
   Fset_marker (w->start, make_number (pos.bufpos), w->buffer);
   w->start_at_line_beg = ((pos.bufpos == BEGV
-			   || FETCH_CHAR (pos.bufpos - 1) == '\n')
+			   || FETCH_BYTE (pos.bufpos - 1) == '\n')
 			  ? Qt : Qnil);
   w->force_start = Qt;