diff options
| author | YAMAMOTO Mitsuharu | 2011-09-10 15:54:04 +0900 |
|---|---|---|
| committer | YAMAMOTO Mitsuharu | 2011-09-10 15:54:04 +0900 |
| commit | 3390454c621048dcd996f497aba5e807c49dcfaf (patch) | |
| tree | ff00816edadc8a6eda5f875c2fbab074790db3a0 /src | |
| parent | edb7b4dc8b089385d8b0d12081227fc416fae23e (diff) | |
| download | emacs-3390454c621048dcd996f497aba5e807c49dcfaf.tar.gz emacs-3390454c621048dcd996f497aba5e807c49dcfaf.zip | |
* xdisp.c (expose_window): Save original value of phys_cursor_on_p and turn window cursor on if cleared (Bug#9415).
Diffstat (limited to 'src')
| -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 @@ | |||
| 1 | 2011-09-10 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | ||
| 2 | |||
| 3 | * xdisp.c (expose_window): Save original value of phys_cursor_on_p | ||
| 4 | and turn window cursor on if cleared (Bug#9415). | ||
| 5 | |||
| 1 | 2011-09-07 Andreas Schwab <schwab@linux-m68k.org> | 6 | 2011-09-07 Andreas Schwab <schwab@linux-m68k.org> |
| 2 | 7 | ||
| 3 | * search.c (boyer_moore): Take unibyte characters from pattern | 8 | * 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) | |||
| 24249 | { | 24249 | { |
| 24250 | int yb = window_text_bottom_y (w); | 24250 | int yb = window_text_bottom_y (w); |
| 24251 | struct glyph_row *row; | 24251 | struct glyph_row *row; |
| 24252 | int cursor_cleared_p; | 24252 | int cursor_cleared_p, phys_cursor_on_p; |
| 24253 | struct glyph_row *first_overlapping_row, *last_overlapping_row; | 24253 | struct glyph_row *first_overlapping_row, *last_overlapping_row; |
| 24254 | 24254 | ||
| 24255 | TRACE ((stderr, "expose_window (%d, %d, %d, %d)\n", | 24255 | TRACE ((stderr, "expose_window (%d, %d, %d, %d)\n", |
| @@ -24269,6 +24269,13 @@ expose_window (w, fr) | |||
| 24269 | else | 24269 | else |
| 24270 | cursor_cleared_p = 0; | 24270 | cursor_cleared_p = 0; |
| 24271 | 24271 | ||
| 24272 | /* If the row containing the cursor extends face to end of line, | ||
| 24273 | then expose_area might overwrite the cursor outside the | ||
| 24274 | rectangle and thus notice_overwritten_cursor might clear | ||
| 24275 | w->phys_cursor_on_p. We remember the original value and | ||
| 24276 | check later if it is changed. */ | ||
| 24277 | phys_cursor_on_p = w->phys_cursor_on_p; | ||
| 24278 | |||
| 24272 | /* Update lines intersecting rectangle R. */ | 24279 | /* Update lines intersecting rectangle R. */ |
| 24273 | first_overlapping_row = last_overlapping_row = NULL; | 24280 | first_overlapping_row = last_overlapping_row = NULL; |
| 24274 | for (row = w->current_matrix->rows; | 24281 | for (row = w->current_matrix->rows; |
| @@ -24335,7 +24342,8 @@ expose_window (w, fr) | |||
| 24335 | x_draw_vertical_border (w); | 24342 | x_draw_vertical_border (w); |
| 24336 | 24343 | ||
| 24337 | /* Turn the cursor on again. */ | 24344 | /* Turn the cursor on again. */ |
| 24338 | if (cursor_cleared_p) | 24345 | if (cursor_cleared_p |
| 24346 | || (phys_cursor_on_p && !w->phys_cursor_on_p)) | ||
| 24339 | update_window_cursor (w, 1); | 24347 | update_window_cursor (w, 1); |
| 24340 | } | 24348 | } |
| 24341 | } | 24349 | } |