From: Kim F. Storm Date: Fri, 1 Feb 2002 21:15:03 +0000 (+0000) Subject: (x_erase_phys_cursor): Don't erase cursor if cursor row X-Git-Tag: emacs-21.2~136 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=70cccbbb358ffef338b519f590492fc9588ef858;p=emacs.git (x_erase_phys_cursor): Don't erase cursor if cursor row is invisible. This can happen if cursor is on top line of a window, and we switch to a buffer with a header line. --- diff --git a/src/ChangeLog b/src/ChangeLog index abaf23e6951..183d10a3700 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,11 @@ +2002-02-01 Kim F. Storm + + * xterm.c (x_erase_phys_cursor): Don't erase cursor if cursor row + is invisible. This can happen if cursor is on top line of a + window, and we switch to a buffer with a header line. + + * w32term.c (x_erase_phys_cursor): ditto. + 2002-02-01 Eli Zaretskii * coding.c (decode_composition_emacs_mule): Give up if NCOMPONENT diff --git a/src/w32term.c b/src/w32term.c index 12704fb8bc1..c9c38b51cb3 100644 --- a/src/w32term.c +++ b/src/w32term.c @@ -9383,6 +9383,12 @@ x_erase_phys_cursor (w) if (!cursor_row->enabled_p) goto mark_cursor_off; + /* If row is completely invisible, don't attempt to delete a cursor which + isn't there. This can happen if cursor is at top of a window, and + we switch to a buffer with a header line in that window. */ + if (cursor_row->visible_height <= 0) + goto mark_cursor_off; + /* This can happen when the new row is shorter than the old one. In this case, either x_draw_glyphs or clear_end_of_line should have cleared the cursor. Note that we wouldn't be diff --git a/src/xterm.c b/src/xterm.c index bda75c3f38f..993d217e03d 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -11355,6 +11355,12 @@ x_erase_phys_cursor (w) if (!cursor_row->enabled_p) goto mark_cursor_off; + /* If row is completely invisible, don't attempt to delete a cursor which + isn't there. This can happen if cursor is at top of a window, and + we switch to a buffer with a header line in that window. */ + if (cursor_row->visible_height <= 0) + goto mark_cursor_off; + /* This can happen when the new row is shorter than the old one. In this case, either x_draw_glyphs or clear_end_of_line should have cleared the cursor. Note that we wouldn't be