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.  */