aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog10
-rw-r--r--src/search.c4
-rw-r--r--src/xdisp.c12
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 @@
12011-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
62011-09-18 Andreas Schwab <schwab@linux-m68k.org>
7
8 * search.c (boyer_moore): Take unibyte characters from pattern
9 literally. (Bug#9458)
10
12011-09-18 Eli Zaretskii <eliz@gnu.org> 112011-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 }