Mercurial > emacs
changeset 6620:990d7d5095dc
(adjust_window_charstarts): New function.
(direct_output_for_insert): Call it.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 01 Apr 1994 02:10:14 +0000 |
parents | b3631c88ec7e |
children | 82404c81aac8 |
files | src/dispnew.c |
diffstat | 1 files changed, 28 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/dispnew.c Fri Apr 01 02:09:44 1994 +0000 +++ b/src/dispnew.c Fri Apr 01 02:10:14 1994 +0000 @@ -892,6 +892,33 @@ #endif +/* Adjust by ADJUST the charstart values in window W + before vpos VPOS, which counts relative to the frame + (not relative to W itself). */ + +void +adjust_window_charstarts (w, vpos, adjust) + struct window *w; + int vpos; + int adjust; +{ + int left = XFASTINT (w->left); + int top = XFASTINT (w->top); + int right = left + window_internal_height (w); + int height = window_internal_height (w); + int i; + + for (i = vpos + 1; i < top + height; i++) + { + int *charstart + = FRAME_CURRENT_GLYPHS (XFRAME (WINDOW_FRAME (w)))->charstarts[i]; + int j; + for (j = left; j < right; j++) + if (charstart[j] > 0) + charstart[j] += adjust; + } +} + /* On discovering that the redisplay for a window was no good, cancel the columns of that window, so that when the window is displayed over again get_display_line will not complain. */ @@ -979,6 +1006,7 @@ #endif current_frame->glyphs[vpos][hpos] = MAKE_GLYPH (frame, g, face); current_frame->charstarts[vpos][hpos] = point; + adjust_window_charstarts (w, vpos, 1); } unchanged_modified = MODIFF; beg_unchanged = GPT - BEG;