Mercurial > emacs
changeset 50323:c0fcb555d31d
(set_vertical_scroll_bar): New fun. Extracted from redisplay_window.
(redisplay_window): Use it.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Fri, 28 Mar 2003 14:11:55 +0000 |
parents | 445b4a2ecf62 |
children | d9a401f2769d |
files | src/xdisp.c |
diffstat | 1 files changed, 37 insertions(+), 29 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xdisp.c Thu Mar 27 22:40:29 2003 +0000 +++ b/src/xdisp.c Fri Mar 28 14:11:55 2003 +0000 @@ -11210,6 +11210,41 @@ return rc; } +void +set_vertical_scroll_bar (w) + struct window *w; +{ + int start, end, whole; + + /* Calculate the start and end positions for the current window. + At some point, it would be nice to choose between scrollbars + which reflect the whole buffer size, with special markers + indicating narrowing, and scrollbars which reflect only the + visible region. + + Note that mini-buffers sometimes aren't displaying any text. */ + if (!MINI_WINDOW_P (w) + || (w == XWINDOW (minibuf_window) + && NILP (echo_area_buffer[0]))) + { + struct buffer *buf = XBUFFER (w->buffer); + whole = BUF_ZV (buf) - BUF_BEGV (buf); + start = marker_position (w->start) - BUF_BEGV (buf); + /* I don't think this is guaranteed to be right. For the + moment, we'll pretend it is. */ + end = BUF_Z (buf) - XFASTINT (w->window_end_pos) - BUF_BEGV (buf); + + if (end < start) + end = start; + if (whole < (end - start)) + whole = end - start; + } + else + start = end = whole = 0; + + /* Indicate what this scroll bar ought to be displaying now. */ + set_vertical_scroll_bar_hook (w, end - start, whole, start); +} /* Redisplay leaf window WINDOW. JUST_THIS_ONE_P non-zero means only selected_window is redisplayed. @@ -11899,35 +11934,8 @@ if (FRAME_HAS_VERTICAL_SCROLL_BARS (f)) { - int start, end, whole; - - /* Calculate the start and end positions for the current window. - At some point, it would be nice to choose between scrollbars - which reflect the whole buffer size, with special markers - indicating narrowing, and scrollbars which reflect only the - visible region. - - Note that mini-buffers sometimes aren't displaying any text. */ - if (!MINI_WINDOW_P (w) - || (w == XWINDOW (minibuf_window) - && NILP (echo_area_buffer[0]))) - { - whole = ZV - BEGV; - start = marker_position (w->start) - BEGV; - /* I don't think this is guaranteed to be right. For the - moment, we'll pretend it is. */ - end = (Z - XFASTINT (w->window_end_pos)) - BEGV; - - if (end < start) - end = start; - if (whole < (end - start)) - whole = end - start; - } - else - start = end = whole = 0; - - /* Indicate what this scroll bar ought to be displaying now. */ - set_vertical_scroll_bar_hook (w, end - start, whole, start); + /* Set the thumb's position and size. */ + set_vertical_scroll_bar (w); /* Note that we actually used the scroll bar attached to this window, so it shouldn't be deleted at the end of redisplay. */