(notice_overwritten_cursor): Handle the special case
authorGerd Moellmann <gerd@gnu.org>
Tue, 23 Apr 2002 15:44:46 +0000 (15:44 +0000)
committerGerd Moellmann <gerd@gnu.org>
Tue, 23 Apr 2002 15:44:46 +0000 (15:44 +0000)
of the cursor being in the first blank non-text line at the
end of a window.

src/ChangeLog
src/xterm.c

index 54ee39a..8a8b1ad 100644 (file)
@@ -1,5 +1,9 @@
 2002-04-23  Gerd Moellmann  <gerd@gnu.org>
 
+       * xterm.c (notice_overwritten_cursor): Handle the special case
+       of the cursor being in the first blank non-text line at the
+       end of a window.
+       
        * xterm.c (x_draw_hollow_cursor, x_draw_bar_cursor)
        (x_draw_phys_cursor_glyph): Set phys_cursor_width here.
        (x_display_and_set_cursor): Don't set phys_cursor_width here, for
index 9088d7a..d0a521d 100644 (file)
@@ -11243,9 +11243,14 @@ notice_overwritten_cursor (w, area, x0, x1, y0, y1)
             actually scrolling, so we don't come here.  When not
             scrolling, the rows above the old cursor row must have
             changed, and in this case these rows must have written
-            over the cursor image.  Likewise if part of the cursor is
-            below y1.  */
-         if ((y0 >= cy0 && y0 < cy1) || (y1 >= cy0 && y1 < cy1))
+            over the cursor image.
+
+            Likewise if part of the cursor is below y1, with the
+            exception of the cursor being in the first blank row at
+            the buffer and window end because update_text_area
+            doesn't draw that row.  */
+         if (((y0 >= cy0 && y0 < cy1) || (y1 >= cy0 && y1 < cy1))
+             && w->current_matrix->rows[w->phys_cursor.vpos].displays_text_p)
            w->phys_cursor_on_p = 0;
        }
     }