From: Jan Djärv Date: Fri, 11 Jan 2013 04:57:45 +0000 (+0100) Subject: Introduce scroll-bar-adjust-thumb-portion. X-Git-Tag: emacs-24.3.90~173^2~7^2~316 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=ec782c5f13fbcebe3b02106357c7daa0681a2b08;p=emacs.git Introduce scroll-bar-adjust-thumb-portion. * xterm.c (scroll-bar-adjust-thumb-portion): New variable to determine whether scroll bar thumb size should be adjusted or not. Use variable for MOTIF. * gtkutil.c (scroll-bar-adjust-thumb-portion): Use variable for GTK. --- diff --git a/src/ChangeLog b/src/ChangeLog index 5c6c5180be5..ce6ce861a79 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,12 @@ +2012-12-31 Adam Sjøgren + + * xterm.c (scroll-bar-adjust-thumb-portion): New variable to + determine whether scroll bar thumb size should be adjusted or + not. Use variable for MOTIF. + + * gtkutil.c (scroll-bar-adjust-thumb-portion): Use variable for + GTK. + 2013-01-13 Jan Djärv * nsterm.m (keyDown:): Set processingCompose to NO if an emacs key diff --git a/src/gtkutil.c b/src/gtkutil.c index 6daf189f74c..af845f69e62 100644 --- a/src/gtkutil.c +++ b/src/gtkutil.c @@ -3795,13 +3795,17 @@ xg_set_toolkit_scroll_bar_thumb (struct scroll_bar *bar, adj = gtk_range_get_adjustment (GTK_RANGE (wscroll)); - /* We do the same as for MOTIF in xterm.c, assume 30 chars per line - rather than the real portion value. This makes the thumb less likely - to resize and that looks better. */ - portion = WINDOW_TOTAL_LINES (XWINDOW (bar->window)) * 30; - /* When the thumb is at the bottom, position == whole. - So we need to increase `whole' to make space for the thumb. */ - whole += portion; + if (scroll_bar_adjust_thumb_portion_p) + { + /* We do the same as for MOTIF in xterm.c, use 30 chars per + line rather than the real portion value. This makes the + thumb less likely to resize and that looks better. */ + portion = WINDOW_TOTAL_LINES (XWINDOW (bar->window)) * 30; + + /* When the thumb is at the bottom, position == whole. + So we need to increase `whole' to make space for the thumb. */ + whole += portion; + } if (whole <= 0) top = 0, shown = 1; diff --git a/src/xterm.c b/src/xterm.c index f63f10566f6..cbae1bc4b0d 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -4802,21 +4802,24 @@ x_set_toolkit_scroll_bar_thumb (struct scroll_bar *bar, int portion, int positio #ifdef USE_MOTIF - /* We use an estimate of 30 chars per line rather than the real - `portion' value. This has the disadvantage that the thumb size - is not very representative, but it makes our life a lot easier. - Otherwise, we have to constantly adjust the thumb size, which - we can't always do quickly enough: while dragging, the size of - the thumb might prevent the user from dragging the thumb all the - way to the end. but Motif and some versions of Xaw3d don't allow - updating the thumb size while dragging. Also, even if we can update - its size, the update will often happen too late. - If you don't believe it, check out revision 1.650 of xterm.c to see - what hoops we were going through and the still poor behavior we got. */ - portion = WINDOW_TOTAL_LINES (XWINDOW (bar->window)) * 30; - /* When the thumb is at the bottom, position == whole. - So we need to increase `whole' to make space for the thumb. */ - whole += portion; + if (scroll_bar_adjust_thumb_portion_p) + { + /* We use an estimate of 30 chars per line rather than the real + `portion' value. This has the disadvantage that the thumb size + is not very representative, but it makes our life a lot easier. + Otherwise, we have to constantly adjust the thumb size, which + we can't always do quickly enough: while dragging, the size of + the thumb might prevent the user from dragging the thumb all the + way to the end. but Motif and some versions of Xaw3d don't allow + updating the thumb size while dragging. Also, even if we can update + its size, the update will often happen too late. + If you don't believe it, check out revision 1.650 of xterm.c to see + what hoops we were going through and the still poor behavior we got. */ + portion = WINDOW_TOTAL_LINES (XWINDOW (bar->window)) * 30; + /* When the thumb is at the bottom, position == whole. + So we need to increase `whole' to make space for the thumb. */ + whole += portion; + } if (whole <= 0) top = 0, shown = 1; @@ -10784,6 +10787,14 @@ With MS Windows or Nextstep, the value is t. */); Vx_toolkit_scroll_bars = Qnil; #endif + DEFVAR_BOOL ("scroll-bar-adjust-thumb-portion", + scroll_bar_adjust_thumb_portion_p, + doc: /* Non-nil means adjust the thumb in the +scroll bar to be less likely to resize which looks better. +Set to nil if you want the thumb to fill the whole scroll bar +when the entire buffer is visible. */); + scroll_bar_adjust_thumb_portion_p = 1; + staticpro (&last_mouse_motion_frame); last_mouse_motion_frame = Qnil;