Mercurial > emacs
changeset 33059:8fab1b57781b
(displayed_window_lines): Change buffers if necessary.
Fix computation of displayed lines.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Mon, 30 Oct 2000 12:51:17 +0000 |
parents | 62535102746c |
children | cbc5cc2c5a55 |
files | src/window.c |
diffstat | 1 files changed, 18 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/window.c Mon Oct 30 12:21:45 2000 +0000 +++ b/src/window.c Mon Oct 30 12:51:17 2000 +0000 @@ -4324,19 +4324,35 @@ struct it it; struct text_pos start; int height = window_box_height (w); + struct buffer *old_buffer; + int bottom_y; + + if (XBUFFER (w->buffer) != current_buffer) + { + old_buffer = current_buffer; + set_buffer_internal (XBUFFER (w->buffer)); + } + else + old_buffer = NULL; SET_TEXT_POS_FROM_MARKER (start, w->start); start_display (&it, w, start); move_it_vertically (&it, height); + if (old_buffer) + set_buffer_internal (old_buffer); + /* Add in empty lines at the bottom of the window. */ - if (it.current_y < height) + bottom_y = it.current_y + it.max_ascent + it.max_descent; + if (bottom_y < height) { struct frame *f = XFRAME (w->frame); - int rest = height - it.current_y; + int rest = height - bottom_y; int lines = (rest + CANON_Y_UNIT (f) - 1) / CANON_Y_UNIT (f); it.vpos += lines; } + else if (bottom_y > height) + ++it.vpos; return it.vpos; }