]> git.eshelyaron.com Git - emacs.git/commitdiff
(try_window_reusing_current_matrix): Ensure that window cursor
authorChong Yidong <cyd@stupidchicken.com>
Fri, 7 Nov 2008 00:29:07 +0000 (00:29 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Fri, 7 Nov 2008 00:29:07 +0000 (00:29 +0000)
position is valid after scrolling.

src/xdisp.c

index 7814bac5195dc763ce0fb1f01d76a15df77db0b8..ee5ecbab447948bd62ab4a59fedfb327bc791b84 100644 (file)
@@ -14393,13 +14393,6 @@ try_window_reusing_current_matrix (w)
        if (display_line (&it))
          last_text_row = it.glyph_row - 1;
 
-      /* Give up If point isn't in a row displayed or reused.  */
-      if (w->cursor.vpos < 0)
-       {
-         clear_glyph_matrix (w->desired_matrix);
-         return 0;
-       }
-
       /* If point is in a reused row, adjust y and vpos of the cursor
         position.  */
       if (pt_row)
@@ -14408,6 +14401,16 @@ try_window_reusing_current_matrix (w)
          w->cursor.y -= first_reusable_row->y - start_row->y;
        }
 
+      /* Give up if point isn't in a row displayed or reused.  (This
+        also handles the case where w->cursor.vpos < nrows_scrolled
+        after the calls to display_line, which can happen with scroll
+        margins.  See bug#1295.)  */
+      if (w->cursor.vpos < 0)
+       {
+         clear_glyph_matrix (w->desired_matrix);
+         return 0;
+       }
+
       /* Scroll the display.  */
       run.current_y = first_reusable_row->y;
       run.desired_y = WINDOW_HEADER_LINE_HEIGHT (w);