From: Gerd Moellmann Date: Tue, 7 Aug 2001 14:19:26 +0000 (+0000) Subject: (Frecenter): If ARG < 0, and on a window system X-Git-Tag: emacs-pretest-21.0.105~264 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d466fa4dcf7844926c7c19a628680d7c10d3b6be;p=emacs.git (Frecenter): If ARG < 0, and on a window system frame, count in some empty lines when we can't move -ARG lines down. --- diff --git a/src/window.c b/src/window.c index 5abff76c434..abd2e6230ab 100644 --- a/src/window.c +++ b/src/window.c @@ -4586,18 +4586,26 @@ and redisplay normally--don't erase and redraw the frame.") { 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);