diff options
| author | Gerd Moellmann | 2001-10-17 15:29:12 +0000 |
|---|---|---|
| committer | Gerd Moellmann | 2001-10-17 15:29:12 +0000 |
| commit | 23e8bd8665b9f024438f6cd5a915482b285e4010 (patch) | |
| tree | a2435337eefb68033b2840f25adeef563f838834 /src | |
| parent | 9c6ba6d10c11eca11586e8fb3841435fc9a61dc9 (diff) | |
| download | emacs-23e8bd8665b9f024438f6cd5a915482b285e4010.tar.gz emacs-23e8bd8665b9f024438f6cd5a915482b285e4010.zip | |
(try_window_id): Undo last change. Give up if
window ends in strings.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 5 | ||||
| -rw-r--r-- | src/xdisp.c | 48 |
2 files changed, 28 insertions, 25 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 67bf8de2fb5..cfb78753687 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,9 +1,12 @@ | |||
| 1 | 2001-10-17 Gerd Moellmann <gerd@gnu.org> | 1 | 2001-10-17 Gerd Moellmann <gerd@gnu.org> |
| 2 | 2 | ||
| 3 | * xdisp.c (try_window_id): Undo last change. Give up if | ||
| 4 | window ends in strings. | ||
| 5 | |||
| 3 | * xdisp.c (try_window_id): Don't display lines after the window | 6 | * xdisp.c (try_window_id): Don't display lines after the window |
| 4 | end if the rest of the window after the window end was already | 7 | end if the rest of the window after the window end was already |
| 5 | blank. | 8 | blank. |
| 6 | 9 | ||
| 7 | * xdisp.c (try_window_id): Remove code that was only there | 10 | * xdisp.c (try_window_id): Remove code that was only there |
| 8 | for the release of 21.1. | 11 | for the release of 21.1. |
| 9 | 12 | ||
diff --git a/src/xdisp.c b/src/xdisp.c index f1d1f792685..69fd0c73c6c 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -11476,6 +11476,12 @@ try_window_id (w) | |||
| 11476 | if (!TEXT_POS_EQUAL_P (start, row->start.pos)) | 11476 | if (!TEXT_POS_EQUAL_P (start, row->start.pos)) |
| 11477 | GIVE_UP (16); | 11477 | GIVE_UP (16); |
| 11478 | 11478 | ||
| 11479 | /* Give up if the window ends in strings. Overlay strings | ||
| 11480 | at the end are difficult to handle, so don't try. */ | ||
| 11481 | row = MATRIX_ROW (current_matrix, XFASTINT (w->window_end_vpos)); | ||
| 11482 | if (MATRIX_ROW_START_CHARPOS (row) == MATRIX_ROW_END_CHARPOS (row)) | ||
| 11483 | GIVE_UP (20); | ||
| 11484 | |||
| 11479 | /* Compute the position at which we have to start displaying new | 11485 | /* Compute the position at which we have to start displaying new |
| 11480 | lines. Some of the lines at the top of the window might be | 11486 | lines. Some of the lines at the top of the window might be |
| 11481 | reusable because they are not displaying changed text. Find the | 11487 | reusable because they are not displaying changed text. Find the |
| @@ -11565,7 +11571,7 @@ try_window_id (w) | |||
| 11565 | } | 11571 | } |
| 11566 | } | 11572 | } |
| 11567 | else if (last_unchanged_at_beg_row == NULL) | 11573 | else if (last_unchanged_at_beg_row == NULL) |
| 11568 | GIVE_UP (18); | 11574 | GIVE_UP (19); |
| 11569 | 11575 | ||
| 11570 | 11576 | ||
| 11571 | #if GLYPH_DEBUG | 11577 | #if GLYPH_DEBUG |
| @@ -11827,29 +11833,23 @@ try_window_id (w) | |||
| 11827 | ++last_row; | 11833 | ++last_row; |
| 11828 | } | 11834 | } |
| 11829 | 11835 | ||
| 11830 | if (IT_CHARPOS (it) < ZV) | 11836 | /* We may start in a continuation line. If so, we have to |
| 11837 | get the right continuation_lines_width and current_x. */ | ||
| 11838 | it.continuation_lines_width = last_row->continuation_lines_width; | ||
| 11839 | it.hpos = it.current_x = 0; | ||
| 11840 | |||
| 11841 | /* Display the rest of the lines at the window end. */ | ||
| 11842 | it.glyph_row = MATRIX_ROW (desired_matrix, it.vpos); | ||
| 11843 | while (it.current_y < it.last_visible_y | ||
| 11844 | && !fonts_changed_p) | ||
| 11831 | { | 11845 | { |
| 11832 | /* Otherwise, the rest of the window after the window | 11846 | /* Is it always sure that the display agrees with lines in |
| 11833 | end was blank, and scrolling didn't change that. */ | 11847 | the current matrix? I don't think so, so we mark rows |
| 11834 | 11848 | displayed invalid in the current matrix by setting their | |
| 11835 | /* We may start in a continuation line. If so, we have to | 11849 | enabled_p flag to zero. */ |
| 11836 | get the right continuation_lines_width and current_x. */ | 11850 | MATRIX_ROW (w->current_matrix, it.vpos)->enabled_p = 0; |
| 11837 | it.continuation_lines_width = last_row->continuation_lines_width; | 11851 | if (display_line (&it)) |
| 11838 | it.hpos = it.current_x = 0; | 11852 | last_text_row_at_end = it.glyph_row - 1; |
| 11839 | |||
| 11840 | /* Display the rest of the lines at the window end. */ | ||
| 11841 | it.glyph_row = MATRIX_ROW (desired_matrix, it.vpos); | ||
| 11842 | while (it.current_y < it.last_visible_y | ||
| 11843 | && !fonts_changed_p) | ||
| 11844 | { | ||
| 11845 | /* Is it always sure that the display agrees with lines in | ||
| 11846 | the current matrix? I don't think so, so we mark rows | ||
| 11847 | displayed invalid in the current matrix by setting their | ||
| 11848 | enabled_p flag to zero. */ | ||
| 11849 | MATRIX_ROW (w->current_matrix, it.vpos)->enabled_p = 0; | ||
| 11850 | if (display_line (&it)) | ||
| 11851 | last_text_row_at_end = it.glyph_row - 1; | ||
| 11852 | } | ||
| 11853 | } | 11853 | } |
| 11854 | } | 11854 | } |
| 11855 | 11855 | ||
| @@ -11940,7 +11940,7 @@ try_window_id (w) | |||
| 11940 | XFASTINT (w->window_end_vpos) + 1, | 11940 | XFASTINT (w->window_end_vpos) + 1, |
| 11941 | bottom_vpos, 0); | 11941 | bottom_vpos, 0); |
| 11942 | #endif | 11942 | #endif |
| 11943 | 11943 | ||
| 11944 | IF_DEBUG (debug_end_pos = XFASTINT (w->window_end_pos); | 11944 | IF_DEBUG (debug_end_pos = XFASTINT (w->window_end_pos); |
| 11945 | debug_end_vpos = XFASTINT (w->window_end_vpos)); | 11945 | debug_end_vpos = XFASTINT (w->window_end_vpos)); |
| 11946 | 11946 | ||