emacs-devel
[Top][All Lists]
Advanced

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

Re: Gtk scrollbar: thumb too short


From: Jan D.
Subject: Re: Gtk scrollbar: thumb too short
Date: Fri, 28 Mar 2003 19:25:08 +0100

I think there is a strong case to be made that the length of the
scrollbar trough is

 MAX (length of document, maximum visible position)

rather than simple the length of the document. Consider the case
where the document is shorter than the screen height. In that case,
there is a strong expectation that the thumb extends the entire
length of the trough, and Emacs does that currently.

Actually it doesn't for GTK and Motif scroll bars.  If there are
three lines in a buffer and the window can display 25, space is
made at the bottom so that one can scroll those three lines.
We tell the scroll bar that the maximum size is 28 lines
and the page size is 25 (more or less).


If you _didn't_ do that, then you'd have a scrollbar that only
occupies part of the trough but that it was impossible to drag
up and down. While that might make logical sense, it would be
highly confusing.

If it could not be manipulated that would be bad.

So if this interpretation of the trough length corresponding
to:

 MAX (length of document, maximum visible position)

is used for documents shorter than the screen, I don't see a
reason why it can't be used for the case of overscrolling as
well. The main difficulty would be when to take the overscrolled
area out of the trough size computation... usually you
want to do it immediately, but when the user is dragging the
scrollbar, probably not until they release the mouse.

To do that with GTK+ currently, is a bit of a hack, you
have to connect to the ::button-release-event signal on the
scrollbar. But I think it would be a reasonable RFE for GTK+
to have some clean way of finding out when the drag finishes.

If GTK had some way to indicate that the user pressed on the arrow it
would be easy to take that into account also.

        Jan D.





reply via email to

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