diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 10 | ||||
| -rw-r--r-- | src/search.c | 4 | ||||
| -rw-r--r-- | src/xdisp.c | 12 |
3 files changed, 22 insertions, 4 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index a7bfd9b7d22..e5962fa8fed 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,13 @@ | |||
| 1 | 2011-09-18 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 | |||
| 6 | 2011-09-18 Andreas Schwab <schwab@linux-m68k.org> | ||
| 7 | |||
| 8 | * search.c (boyer_moore): Take unibyte characters from pattern | ||
| 9 | literally. (Bug#9458) | ||
| 10 | |||
| 1 | 2011-09-18 Eli Zaretskii <eliz@gnu.org> | 11 | 2011-09-18 Eli Zaretskii <eliz@gnu.org> |
| 2 | 12 | ||
| 3 | * xdisp.c (reseat_at_next_visible_line_start): Fix last change. | 13 | * xdisp.c (reseat_at_next_visible_line_start): Fix last change. |
diff --git a/src/search.c b/src/search.c index b3d67e6c431..a3b4e1dcbce 100644 --- a/src/search.c +++ b/src/search.c | |||
| @@ -1760,7 +1760,7 @@ boyer_moore (EMACS_INT n, unsigned char *base_pat, | |||
| 1760 | ch = -1; | 1760 | ch = -1; |
| 1761 | } | 1761 | } |
| 1762 | 1762 | ||
| 1763 | if (ch >= 0200) | 1763 | if (ch >= 0200 && multibyte) |
| 1764 | j = (ch & 0x3F) | 0200; | 1764 | j = (ch & 0x3F) | 0200; |
| 1765 | else | 1765 | else |
| 1766 | j = *ptr; | 1766 | j = *ptr; |
| @@ -1779,7 +1779,7 @@ boyer_moore (EMACS_INT n, unsigned char *base_pat, | |||
| 1779 | while (1) | 1779 | while (1) |
| 1780 | { | 1780 | { |
| 1781 | TRANSLATE (ch, inverse_trt, ch); | 1781 | TRANSLATE (ch, inverse_trt, ch); |
| 1782 | if (ch >= 0200) | 1782 | if (ch >= 0200 && multibyte) |
| 1783 | j = (ch & 0x3F) | 0200; | 1783 | j = (ch & 0x3F) | 0200; |
| 1784 | else | 1784 | else |
| 1785 | j = ch; | 1785 | j = ch; |
diff --git a/src/xdisp.c b/src/xdisp.c index f4e26bf68b6..921a332fdc6 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -27261,7 +27261,7 @@ expose_window (struct window *w, XRectangle *fr) | |||
| 27261 | { | 27261 | { |
| 27262 | int yb = window_text_bottom_y (w); | 27262 | int yb = window_text_bottom_y (w); |
| 27263 | struct glyph_row *row; | 27263 | struct glyph_row *row; |
| 27264 | int cursor_cleared_p; | 27264 | int cursor_cleared_p, phys_cursor_on_p; |
| 27265 | struct glyph_row *first_overlapping_row, *last_overlapping_row; | 27265 | struct glyph_row *first_overlapping_row, *last_overlapping_row; |
| 27266 | 27266 | ||
| 27267 | TRACE ((stderr, "expose_window (%d, %d, %d, %d)\n", | 27267 | TRACE ((stderr, "expose_window (%d, %d, %d, %d)\n", |
| @@ -27281,6 +27281,13 @@ expose_window (struct window *w, XRectangle *fr) | |||
| 27281 | else | 27281 | else |
| 27282 | cursor_cleared_p = 0; | 27282 | cursor_cleared_p = 0; |
| 27283 | 27283 | ||
| 27284 | /* If the row containing the cursor extends face to end of line, | ||
| 27285 | then expose_area might overwrite the cursor outside the | ||
| 27286 | rectangle and thus notice_overwritten_cursor might clear | ||
| 27287 | w->phys_cursor_on_p. We remember the original value and | ||
| 27288 | check later if it is changed. */ | ||
| 27289 | phys_cursor_on_p = w->phys_cursor_on_p; | ||
| 27290 | |||
| 27284 | /* Update lines intersecting rectangle R. */ | 27291 | /* Update lines intersecting rectangle R. */ |
| 27285 | first_overlapping_row = last_overlapping_row = NULL; | 27292 | first_overlapping_row = last_overlapping_row = NULL; |
| 27286 | for (row = w->current_matrix->rows; | 27293 | for (row = w->current_matrix->rows; |
| @@ -27347,7 +27354,8 @@ expose_window (struct window *w, XRectangle *fr) | |||
| 27347 | x_draw_vertical_border (w); | 27354 | x_draw_vertical_border (w); |
| 27348 | 27355 | ||
| 27349 | /* Turn the cursor on again. */ | 27356 | /* Turn the cursor on again. */ |
| 27350 | if (cursor_cleared_p) | 27357 | if (cursor_cleared_p |
| 27358 | || (phys_cursor_on_p && !w->phys_cursor_on_p)) | ||
| 27351 | update_window_cursor (w, 1); | 27359 | update_window_cursor (w, 1); |
| 27352 | } | 27360 | } |
| 27353 | } | 27361 | } |