diff options
| author | Eli Zaretskii | 2011-10-19 13:46:17 +0200 |
|---|---|---|
| committer | Eli Zaretskii | 2011-10-19 13:46:17 +0200 |
| commit | 12b32963196147a21ac0945396d24ab67e4a221a (patch) | |
| tree | 53fd220297aa1c787b40dceb43d2de89ecd26d82 /src | |
| parent | ba9d54beb679c2edef04667051cb1b775ab1f5bd (diff) | |
| download | emacs-12b32963196147a21ac0945396d24ab67e4a221a.tar.gz emacs-12b32963196147a21ac0945396d24ab67e4a221a.zip | |
Followup to 2011-10-19T09:48:35Z!eliz@gnu.org.
src/xdisp.c (try_window_reusing_current_matrix): If a line ends in a display
vector or the next line starts in a display vector, continue
redrawing the window even though the character position of
start_row was reached.
Fixes: debbugs:9771
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 4 | ||||
| -rw-r--r-- | src/xdisp.c | 13 |
2 files changed, 14 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 9abbe450d3d..c6a23a773de 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -2,6 +2,10 @@ | |||
| 2 | 2 | ||
| 3 | * xdisp.c (start_display): If the character at POS is displayed | 3 | * xdisp.c (start_display): If the character at POS is displayed |
| 4 | via a display vector, reset IT->current.dpvec_index to zero. | 4 | via a display vector, reset IT->current.dpvec_index to zero. |
| 5 | (try_window_reusing_current_matrix): If a line ends in a display | ||
| 6 | vector or the next line starts in a display vector, continue | ||
| 7 | redrawing the window even though the character position of | ||
| 8 | start_row was reached. | ||
| 5 | (Bug#9771, part 2) | 9 | (Bug#9771, part 2) |
| 6 | 10 | ||
| 7 | 2011-10-18 Chong Yidong <cyd@gnu.org> | 11 | 2011-10-18 Chong Yidong <cyd@gnu.org> |
diff --git a/src/xdisp.c b/src/xdisp.c index 50ddd6b08b8..0757feed1d9 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -16078,13 +16078,20 @@ try_window_reusing_current_matrix (struct window *w) | |||
| 16078 | 16078 | ||
| 16079 | start_vpos = MATRIX_ROW_VPOS (start_row, w->current_matrix); | 16079 | start_vpos = MATRIX_ROW_VPOS (start_row, w->current_matrix); |
| 16080 | } | 16080 | } |
| 16081 | /* If we have reached alignment, | 16081 | /* If we have reached alignment, we can copy the rest of the |
| 16082 | we can copy the rest of the rows. */ | 16082 | rows. */ |
| 16083 | if (IT_CHARPOS (it) == CHARPOS (start)) | 16083 | if (IT_CHARPOS (it) == CHARPOS (start) |
| 16084 | /* Don't accept "alignment" inside a display vector, | ||
| 16085 | since start_row could have started in the middle of | ||
| 16086 | that same display vector (thus their character | ||
| 16087 | positions match), and we have no way of telling if | ||
| 16088 | that is the case. */ | ||
| 16089 | && it.current.dpvec_index < 0) | ||
| 16084 | break; | 16090 | break; |
| 16085 | 16091 | ||
| 16086 | if (display_line (&it)) | 16092 | if (display_line (&it)) |
| 16087 | last_text_row = it.glyph_row - 1; | 16093 | last_text_row = it.glyph_row - 1; |
| 16094 | |||
| 16088 | } | 16095 | } |
| 16089 | 16096 | ||
| 16090 | /* A value of current_y < last_visible_y means that we stopped | 16097 | /* A value of current_y < last_visible_y means that we stopped |