bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#1036: [PATCH] Add scroll-bar-adjust-thumb-portion.


From: Jan D.
Subject: bug#1036: [PATCH] Add scroll-bar-adjust-thumb-portion.
Date: Fri, 04 Jan 2013 14:46:14 +0100
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20121026 Thunderbird/16.0.2

Hello.

Before installing this, can someone confirm that this is a tiny change?

    Jan D.


Adam Sjøgren skrev 2012-12-31 02:48:
On Mon, 03 Dec 2012 12:22:11 -0500, Stefan wrote:

If we are to provide a user option for this, we should do it for all
toolkits.
Yes, we should do that (and share more of the code, as well).
Here is a new patch that handles both toolskits that use the "* 30"
method.

Let me know what else I can do to move this forward.


   Thanks!

    Adam


---
  src/ChangeLog |    9 +++++++++
  src/gtkutil.c |   18 +++++++++++-------
  src/xterm.c   |   41 ++++++++++++++++++++++++++---------------
  3 files changed, 46 insertions(+), 22 deletions(-)

diff --git a/src/ChangeLog b/src/ChangeLog
index 08b0a59..d653cb5 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,12 @@
+2012-12-31  Adam Sjøgren  <asjo@koldfront.dk>
+
+       * 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.
+
  2012-12-30  Paul Eggert  <eggert@cs.ucla.edu>
* coding.c (Qmac): Now static.
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 7b05cff..ba532c2 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 374b628..446565a 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -4803,21 +4803,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;
@@ -10785,6 +10788,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;






reply via email to

[Prev in Thread] Current Thread [Next in Thread]