diff options
| author | Eli Zaretskii | 2017-11-09 18:22:42 +0200 |
|---|---|---|
| committer | Eli Zaretskii | 2017-11-09 18:22:42 +0200 |
| commit | 9dde8be9cd8dc9defdae282ed24eaf2dd6bf4c31 (patch) | |
| tree | 1de84cbeea58de648d41515ef7be70cac66632bf /src | |
| parent | 0da08f2f8ef1946978f0974e9e8cdb87fece018c (diff) | |
| download | emacs-9dde8be9cd8dc9defdae282ed24eaf2dd6bf4c31.tar.gz emacs-9dde8be9cd8dc9defdae282ed24eaf2dd6bf4c31.zip | |
Fix redisplay of overlay-arrows on GUI frames
* src/xdisp.c (try_window_reusing_current_matrix)
(try_cursor_movement): Disallow these optimizations if the buffer
has overlay arrow(s) shown on the fringe(s). (Bug#29198)
Diffstat (limited to 'src')
| -rw-r--r-- | src/xdisp.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/xdisp.c b/src/xdisp.c index 69b74dc6298..5fdd39b0c94 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -16066,8 +16066,10 @@ try_cursor_movement (Lisp_Object window, struct text_pos startp, | |||
| 16066 | since the handling of this_line_start_pos, etc., in redisplay | 16066 | since the handling of this_line_start_pos, etc., in redisplay |
| 16067 | handles the same cases. */ | 16067 | handles the same cases. */ |
| 16068 | && !EQ (window, minibuf_window) | 16068 | && !EQ (window, minibuf_window) |
| 16069 | && (FRAME_WINDOW_P (f) | 16069 | /* When overlay arrow is shown in current buffer, point movement |
| 16070 | || !overlay_arrow_in_current_buffer_p ())) | 16070 | is no longer "simple", as it typically causes the overlay |
| 16071 | arrow to move as well. */ | ||
| 16072 | && !overlay_arrow_in_current_buffer_p ()) | ||
| 16071 | { | 16073 | { |
| 16072 | int this_scroll_margin, top_scroll_margin; | 16074 | int this_scroll_margin, top_scroll_margin; |
| 16073 | struct glyph_row *row = NULL; | 16075 | struct glyph_row *row = NULL; |
| @@ -17698,7 +17700,11 @@ try_window_reusing_current_matrix (struct window *w) | |||
| 17698 | /* Don't try to reuse the display if windows have been split | 17700 | /* Don't try to reuse the display if windows have been split |
| 17699 | or such. */ | 17701 | or such. */ |
| 17700 | || windows_or_buffers_changed | 17702 | || windows_or_buffers_changed |
| 17701 | || f->cursor_type_changed) | 17703 | || f->cursor_type_changed |
| 17704 | /* This function cannot handle buffers where the overlay arrow | ||
| 17705 | is shown on the fringes, because if the arrow position | ||
| 17706 | changes, we cannot just reuse the current matrix. */ | ||
| 17707 | || overlay_arrow_in_current_buffer_p ()) | ||
| 17702 | return false; | 17708 | return false; |
| 17703 | 17709 | ||
| 17704 | /* Can't do this if showing trailing whitespace. */ | 17710 | /* Can't do this if showing trailing whitespace. */ |