diff options
author | YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | 2011-09-10 15:54:04 +0900 |
---|---|---|
committer | YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | 2011-09-10 15:54:04 +0900 |
commit | 3390454c621048dcd996f497aba5e807c49dcfaf (patch) | |
tree | ff00816edadc8a6eda5f875c2fbab074790db3a0 | |
parent | edb7b4dc8b089385d8b0d12081227fc416fae23e (diff) | |
download | emacs-3390454c621048dcd996f497aba5e807c49dcfaf.tar.gz |
* xdisp.c (expose_window): Save original value of phys_cursor_on_p and turn window cursor on if cleared (Bug#9415).
-rw-r--r-- | src/ChangeLog | 5 | ||||
-rw-r--r-- | src/xdisp.c | 12 |
2 files changed, 15 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 52f41c4cd73..fa31b3d6f0e 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2011-09-10 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> + + * xdisp.c (expose_window): Save original value of phys_cursor_on_p + and turn window cursor on if cleared (Bug#9415). + 2011-09-07 Andreas Schwab <schwab@linux-m68k.org> * search.c (boyer_moore): Take unibyte characters from pattern diff --git a/src/xdisp.c b/src/xdisp.c index b8a8ea7484d..ebd660acc06 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -24249,7 +24249,7 @@ expose_window (w, fr) { int yb = window_text_bottom_y (w); struct glyph_row *row; - int cursor_cleared_p; + int cursor_cleared_p, phys_cursor_on_p; struct glyph_row *first_overlapping_row, *last_overlapping_row; TRACE ((stderr, "expose_window (%d, %d, %d, %d)\n", @@ -24269,6 +24269,13 @@ expose_window (w, fr) else cursor_cleared_p = 0; + /* If the row containing the cursor extends face to end of line, + then expose_area might overwrite the cursor outside the + rectangle and thus notice_overwritten_cursor might clear + w->phys_cursor_on_p. We remember the original value and + check later if it is changed. */ + phys_cursor_on_p = w->phys_cursor_on_p; + /* Update lines intersecting rectangle R. */ first_overlapping_row = last_overlapping_row = NULL; for (row = w->current_matrix->rows; @@ -24335,7 +24342,8 @@ expose_window (w, fr) x_draw_vertical_border (w); /* Turn the cursor on again. */ - if (cursor_cleared_p) + if (cursor_cleared_p + || (phys_cursor_on_p && !w->phys_cursor_on_p)) update_window_cursor (w, 1); } } |