mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-04 11:40:22 +00:00
Merge changes from emacs-23 branch
This commit is contained in:
commit
5ed99d3685
@ -1,3 +1,13 @@
|
||||
2011-09-18 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-18 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* search.c (boyer_moore): Take unibyte characters from pattern
|
||||
literally. (Bug#9458)
|
||||
|
||||
2011-09-18 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* xdisp.c (reseat_at_next_visible_line_start): Fix last change.
|
||||
|
@ -1760,7 +1760,7 @@ boyer_moore (EMACS_INT n, unsigned char *base_pat,
|
||||
ch = -1;
|
||||
}
|
||||
|
||||
if (ch >= 0200)
|
||||
if (ch >= 0200 && multibyte)
|
||||
j = (ch & 0x3F) | 0200;
|
||||
else
|
||||
j = *ptr;
|
||||
@ -1779,7 +1779,7 @@ boyer_moore (EMACS_INT n, unsigned char *base_pat,
|
||||
while (1)
|
||||
{
|
||||
TRANSLATE (ch, inverse_trt, ch);
|
||||
if (ch >= 0200)
|
||||
if (ch >= 0200 && multibyte)
|
||||
j = (ch & 0x3F) | 0200;
|
||||
else
|
||||
j = ch;
|
||||
|
12
src/xdisp.c
12
src/xdisp.c
@ -27261,7 +27261,7 @@ expose_window (struct window *w, XRectangle *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",
|
||||
@ -27281,6 +27281,13 @@ expose_window (struct window *w, XRectangle *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;
|
||||
@ -27347,7 +27354,8 @@ expose_window (struct window *w, XRectangle *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);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user