# HG changeset patch # User Gerd Moellmann # Date 997193966 0 # Node ID b1f9c6a7a0026036ad3ee444233caf0807c745f9 # Parent e8b8baf33da586300c655a059feaaa42681c78e3 (Frecenter): If ARG < 0, and on a window system frame, count in some empty lines when we can't move -ARG lines down. diff -r e8b8baf33da5 -r b1f9c6a7a002 src/window.c --- a/src/window.c Tue Aug 07 13:36:14 2001 +0000 +++ b/src/window.c Tue Aug 07 14:19:26 2001 +0000 @@ -4586,18 +4586,26 @@ { struct it it; struct text_pos pt; - int y0, y1, h; + int y0, y1, h, nlines; SET_TEXT_POS (pt, PT, PT_BYTE); start_display (&it, w, pt); y0 = it.current_y; - /* The amount of pixels we have to move hack is the window + /* The amount of pixels we have to move back is the window height minus what's displayed in the line containing PT, and the lines below. */ - move_it_by_lines (&it, - XINT (arg) - 1, 1); + nlines = - XINT (arg) - 1; + move_it_by_lines (&it, nlines, 1); + y1 = it.current_y - y0; h = line_bottom_y (&it) - y1; + + /* If we can't move down NLINES lines because we hit + the end of the buffer, count in some empty lines. */ + if (it.vpos < nlines) + y1 += (nlines - it.vpos) * CANON_Y_UNIT (it.f); + y0 = it.last_visible_y - y1 - h; start_display (&it, w, pt);