unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Luc Teirlinck <teirllm@dms.auburn.edu>
Cc: kai.grossjohann@gmx.net
Subject: Re: Gtk scrollbar: thumb too short
Date: Mon, 14 Apr 2003 20:24:32 -0500 (CDT)	[thread overview]
Message-ID: <200304150124.h3F1OWT06102@eel.dms.auburn.edu> (raw)
In-Reply-To: <E194fZK-0006FP-00@fencepost.gnu.org> (message from Richard Stallman on Sun, 13 Apr 2003 07:22:42 -0400)

Richard Stallman wrote:

   There is some chance we will change the behavior of the native
   scrollbar; people have proposed some interesting ideas.  However,
   people have not yet implemented them, and if they do, we will have
   to try them out before deciding whether to use them.  So I would
   say the chance of a change is less than 50%.

If I understand correctly Kai made three proposals:

1. Implement stickiness.
2. Only allow overscrolling if the end of the buffer was visible at
   the start of scrolling.
3. Use the Motiv - current GTK behavior but color the piece of the
   scrollbar that corresponds to the empty space at the bottom
   differently.

If I understand correctly, you only considered 1. and 2. worth a try.

Personally, I only feel comfortable implementing 2. and only for the
native scrollbar.  (I am not familiar enough with the other
scrollbars.)

Below is a rough implementation, only meant for people to "play" with
to see if they like it.  If people are interested, I would make the
new behavior customizable and one could then decide what the default
behavior should be.  Note that my implementation only applies to the
native scrollbar.

Description of new behavior:

First time scrolling stops with the last screenfull of real text
visible, unless the end of the buffer is visible at the outset and
stays visible.  In other words, if you scroll up to see what is above
and scroll back down, you can not (immediately) overscroll.  To
overscroll, you have to first scroll to the bottom (unless you already
are there), grab the thumb (*not* click above the thumb) and scroll
down, without first scrolling up.

I personally would only recommend making the new behavior a
customizable option, with the old behavior the default.

Since this is just a rough implementation, I do not yet send a diff,
but instead the new versions of scroll-bar-drag and scroll-bar-drag-1.
One can put these in a file in emacs-lisp-mode, do C-M-x and start
playing.  Of course, like any new behavior, one first has to get used
to it, and then use it in some actual "real work", before one can
really judge.  The new behavior is meant for people who only
occasionally want to overscroll, and most of the time only want to
scroll to the end of the buffer.  In the final version, you will
always be able to temporarily (or on a buffer-by-buffer basis) change
your usual default, using the customizable variable I would define.
First, however, I want to check whether there is any interest.

===File ~/dragstuff.el======================================
(defun scroll-bar-drag-1 (event)
  (let* ((start-position (event-start event))
	 (window (nth 0 start-position))
	 (portion-whole (nth 2 start-position)))
    (save-excursion
      (set-buffer (window-buffer window))
      ;; Calculate position relative to the accessible part of the buffer.
      (goto-char (+ (point-min)
		    (scroll-bar-scale portion-whole
				      (- (point-max) (point-min)))))
      (beginning-of-line)
      (set-window-start window (point))
      (if (eq (window-end nil t) (point-max))
	  (when (and (boundp end-visible) (not end-visible))
	    (goto-char (point-max))
	    (beginning-of-line)
	    (recenter -1))
	(setq end-visible nil)))))

(defun scroll-bar-drag (event)
  "Scroll the window by dragging the scroll bar slider.
If you click outside the slider, the window scrolls to bring the slider there."
  (interactive "e")
  (let* (done
	 end-visible
	 (echo-keystrokes 0)
	 (end-position (event-end event))
	 (window (nth 0 end-position))
	 (before-scroll))
    (with-current-buffer (window-buffer window)
      (setq before-scroll point-before-scroll))
    (save-selected-window
      (select-window window)
      (setq end-visible (= (point-max) (window-end nil t)))
      (setq before-scroll
	    (or before-scroll (point))))
    (scroll-bar-drag-1 event)
    (track-mouse
      (while (not done)
	(setq event (read-event))
	(if (eq (car-safe event) 'mouse-movement)
	    (setq event (read-event)))
	(cond ((eq (car-safe event) 'scroll-bar-movement)
	       (scroll-bar-drag-1 event))
	      (t
	       ;; Exit when we get the drag event; ignore that event.
	       (setq done t)))))
    (sit-for 0)
    (with-current-buffer (window-buffer window)
      (setq point-before-scroll before-scroll))))

============================================================

  reply	other threads:[~2003-04-15  1:24 UTC|newest]

Thread overview: 143+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-03-25 14:51 Gtk scrollbar: thumb too short Kai Großjohann
2003-03-25 18:54 ` Jan D.
2003-03-25 19:55   ` Stefan Monnier
2003-03-26 18:26     ` Jan D.
2003-03-26 19:07       ` Stefan Monnier
2003-03-27  3:29   ` Richard Stallman
2003-03-27 14:51     ` Stefan Monnier
2003-03-27 15:48     ` Owen Taylor
2003-03-27 16:30       ` Stefan Monnier
2003-03-27 21:07         ` Owen Taylor
2003-03-27 21:41           ` Stefan Monnier
2003-03-27 21:42           ` Luc Teirlinck
2003-03-27 21:41             ` Owen Taylor
2003-03-27 22:18               ` Luc Teirlinck
2003-03-27 22:46                 ` Jody Goldberg
2003-03-28  2:15               ` Luc Teirlinck
2003-03-28  4:28                 ` Owen Taylor
2003-03-28  6:07                   ` Luc Teirlinck
2003-03-29 18:38                     ` Richard Stallman
2003-03-28 13:35                   ` Stefan Monnier
2003-03-28 13:55                     ` Luc Teirlinck
2003-03-27 16:50       ` Andreas Schwab
2003-03-27 18:27         ` Jan D.
2003-03-27 20:54         ` Owen Taylor
2003-03-28  1:48           ` Miles Bader
2003-03-28  1:42       ` Miles Bader
2003-03-28  1:51         ` Miles Bader
2003-03-28 15:04           ` Kim F. Storm
     [not found]             ` <m21y0rruj4.fsf@primate.xs4all.nl>
2003-03-28 23:57               ` Kim F. Storm
     [not found]                 ` <m2wuijqdu3.fsf@primate.xs4all.nl>
2003-03-29  1:26                   ` Kim F. Storm
2003-03-31  7:52             ` Miles Bader
2003-03-31 11:04               ` Kim F. Storm
2003-03-28 12:43         ` Robert J. Chassell
2003-03-28 13:34           ` Luc Teirlinck
2003-03-28 15:11             ` Robert J. Chassell
2003-03-28 15:50               ` Luc Teirlinck
2003-03-28 13:38           ` Stefan Monnier
2003-03-28 16:18             ` Robert J. Chassell
2003-03-28 16:49               ` Stefan Monnier
2003-03-29 18:39             ` Richard Stallman
2003-03-29 18:43               ` Stefan Monnier
2003-03-28 15:20       ` Richard Stallman
2003-03-28 15:44         ` Owen Taylor
2003-03-28 18:25           ` Jan D.
2003-03-27 18:41     ` Jan D.
2003-03-28 15:21       ` Richard Stallman
2003-03-28 17:27         ` Owen Taylor
2003-03-30 19:24           ` Richard Stallman
2003-03-31 18:12             ` Owen Taylor
2003-03-31 22:06               ` Luc Teirlinck
2003-03-31 22:16                 ` Owen Taylor
2003-03-31 22:27                   ` Luc Teirlinck
2003-03-31 23:29                   ` Luc Teirlinck
2003-03-31 22:23               ` Robert J. Chassell
2003-04-01  0:28               ` Luc Teirlinck
2003-04-01 17:48                 ` Owen Taylor
2003-04-02  1:39                   ` Miles Bader
2003-04-02  2:30                   ` Luc Teirlinck
2003-04-01  9:38               ` Richard Stallman
2003-04-01 17:26                 ` Owen Taylor
2003-04-02  1:33                   ` Miles Bader
2003-04-02  3:30                     ` Luc Teirlinck
2003-04-02  3:55                       ` Miles Bader
2003-04-02  4:29                         ` Luc Teirlinck
2003-04-02  4:42                           ` Miles Bader
2003-04-02 11:07                           ` Kai Großjohann
2003-04-02 13:52                             ` Luc Teirlinck
2003-04-02 13:11                               ` Kai Großjohann
2003-04-02 14:42                                 ` Luc Teirlinck
2003-04-02 14:03                                   ` Kai Großjohann
2003-04-03 10:38                               ` Richard Stallman
2003-04-07 15:35                                 ` Owen Taylor
2003-04-07 16:57                                   ` Stefan Monnier
2003-04-07 18:30                                     ` Owen Taylor
2003-04-07 18:38                                       ` Stefan Monnier
2003-04-07 18:57                                         ` Owen Taylor
2003-04-07 19:02                                           ` Stefan Monnier
2003-04-07 19:21                                             ` Owen Taylor
2003-04-07 19:30                                               ` Stefan Monnier
2003-04-08  2:30                                   ` Richard Stallman
2003-04-08 14:56                                     ` Owen Taylor
2003-04-08 23:36                                       ` Miles Bader
2003-04-09  1:58                                       ` Richard Stallman
2003-04-09 14:46                                         ` Owen Taylor
2003-04-10  6:22                                           ` Richard Stallman
2003-04-10  6:48                                             ` Miles Bader
2003-04-11  8:51                                               ` Richard Stallman
2003-04-10 17:37                                             ` Jan D.
2003-04-11  8:51                                               ` Richard Stallman
2003-04-11 12:26                                                 ` Luc Teirlinck
2003-04-11 12:53                                                   ` Jan D.
2003-04-11 13:08                                                     ` Luc Teirlinck
2003-04-11 14:02                                                       ` Kai Großjohann
2003-04-11 14:28                                                         ` Stefan Monnier
2003-04-11 15:33                                                           ` Kai Großjohann
2003-04-12  3:02                                                             ` Luc Teirlinck
2003-04-12  8:56                                                               ` Kai Großjohann
2003-04-12 11:58                                                                 ` Miles Bader
2003-04-12 14:56                                                                 ` Luc Teirlinck
2003-04-12 14:58                                                                   ` Kai Großjohann
2003-04-13 11:22                                                                   ` Richard Stallman
2003-04-15  1:24                                                                     ` Luc Teirlinck [this message]
2003-04-15  1:31                                                                       ` Miles Bader
2003-04-15  1:42                                                                         ` Luc Teirlinck
2003-04-15  7:18                                                                       ` Kai Großjohann
2003-04-15 13:01                                                                         ` Luc Teirlinck
2003-04-16  4:39                                                                       ` Richard Stallman
2003-04-17  3:59                                                                         ` Luc Teirlinck
2003-04-17  4:09                                                                           ` Luc Teirlinck
2003-04-11 15:23                                                         ` Andreas Schwab
2003-04-11 16:30                                                           ` Kai Großjohann
2003-04-11 16:55                                                             ` Robert J. Chassell
2003-04-11 20:42                                                               ` Kai Großjohann
2003-04-11 21:33                                                                 ` Robert J. Chassell
2003-04-12  0:05                                                                 ` Miles Bader
2003-04-12  0:47                                                                   ` Luc Teirlinck
2003-04-12  2:11                                                                     ` Miles Bader
2003-04-11 19:09                                                           ` NEWS and invisible text Stefan Monnier
2003-04-14 23:09                                                             ` Kevin Rodgers
2003-04-21  0:59                                                               ` Richard Stallman
2003-04-11 16:36                                                         ` Gtk scrollbar: thumb too short Robert J. Chassell
2003-04-11 17:07                                                           ` Kai Großjohann
2003-04-11 17:46                                                             ` Luc Teirlinck
2003-04-11 21:13                                                             ` Robert J. Chassell
2003-04-12 17:07                                                         ` Richard Stallman
2003-04-11 13:12                                                     ` Luc Teirlinck
2003-04-11 16:13                                                     ` Robert J. Chassell
2003-04-12 17:07                                                   ` Richard Stallman
2003-04-10 17:33                                     ` Jan D.
2003-04-02 12:56                           ` Robert J. Chassell
2003-04-02 14:07                           ` Stefan Monnier
2003-04-03  1:34                             ` Miles Bader
2003-04-03 15:35                               ` Stefan Monnier
2003-04-02  9:19                   ` Richard Stallman
2003-03-28 18:12         ` Jan D.
2003-03-28 22:25           ` Robert J. Chassell
2003-03-28 22:35           ` Robert J. Chassell
2003-03-29 17:06             ` Jan D.
2003-03-26 16:47 ` Richard Stallman
2003-03-26 18:32   ` Jan D.
2003-03-27 19:04     ` Richard Stallman
2003-04-01 19:29 ` Kai Großjohann
     [not found] <200303271914.h2RJEdbL026474@stubby.bodenonline.com>
     [not found] ` <3E834774.6080604@swipnet.se>
     [not found]   ` <200303271904.h2RJ48b0029268@rum.cs.yale.edu>
2003-03-27 23:23     ` Stefan Monnier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200304150124.h3F1OWT06102@eel.dms.auburn.edu \
    --to=teirllm@dms.auburn.edu \
    --cc=kai.grossjohann@gmx.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).