unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Owen Taylor <otaylor@redhat.com>
Cc: emacs-devel@gnu.org
Subject: Re: Gtk scrollbar: thumb too short
Date: 28 Mar 2003 12:27:43 -0500	[thread overview]
Message-ID: <1048872463.17161.132.camel@localhost.localdomain> (raw)
In-Reply-To: <E18yvfS-00079B-00@fencepost.gnu.org>

On Fri, 2003-03-28 at 10:21, Richard Stallman wrote:
>     > What happens if the app specifies a position that is less than one
>     > page away from the end?  Is that considered invalid?
> 
>     Not invalid, but the position is silently changed to be a page away from the 
>     end.  GTK scroll bars adjust position values to be in the interval
>     [minimum value for the scroll bar, maximum value - one page size]
> 
> I think GTK should have an option to accept such values
> and display them in some sensible way.
> 
>     > My suggestion is to display a thumb that rises from the bottom of the
>     > scroll bar, but is shorter than normal, as if the bottom of the thumb
>     > were hidden beyond the end of the scroll bar.  Others may think
>     > of a better way to indicate this situation.
> 
>     As the native scroll bars do?  The disadvantage is that then the
>     thumb size in relation to the scroll bar size looses the
>     connection of how much of the buffer you are seeing w.r.t. the
>     size of the buffer.
> 
> Either we are miscommunicating about something basic, or I disagree.
> In what I envision, the visible thumb size would reflect the amount of
> real text visible in the window.  As window-start gets closer to
> point-max, the amount of visible text decreases, and so should the
> thumb size.

This is certainly _also_ a possible interpretation the scrollbar thumb
size:

 n_characters_visible / n_total_characters

is as logical as:

 (n_characters_visible + (factor) * n_dummy_lines) /
 (n_total_characters + (factor) * n_dummy_lines)

But if you take this interpretation then when you "overscroll",
then the scrollbar should simply get smaller, not go off the end
of the scrollbar. 

An observation I'd make is that a scrollbar really encodes two
things:

 - A value
 - A percentage of a total size

If we look at the scrollbar on the screen, we have:

 v = thumb_start / (trough_pixels - thumb_pixels)
 p = thumb_pixels / trough_pixels

For the normal GTK+ case these two quantities are related to the
document size.

 v = start_of_visible / MAX (size_of_visible, size_of_document) - size_of_visible
 p = size_of_visible / MAX (size_of_visible, size_of_document)

Or, in terms of GtkAdjustment parameters

 v = value / (max - page_size)
 p = page_size / max

For what you want in Emacs, v and p are computed differently:

 v = start_of_visible / character_index_of_start_of_last_line
 p = visible_chars / total_chars

What we simply need to do is compute GtkAdjustment parameters that
give these same v and p.

Fixing, say, max = total_characters, then we have:

 max = total_characters
 page_size = max * p = visible_characters
 value = v * (max - page_size) 
       = (start_of_visible / character_index_of_start_of_last_line) * 
         (total_chars - visible_chars)

Now, clearly there are some complexities from the fact that
visible_chars changes as the position changes. But I think the
approach is workable and will be a whole lot less confusing
then some sort of idea of the thumb of the scrollbar going off
the edge of the scrollbar trough.

Regards,
                                              Owen

  reply	other threads:[~2003-03-28 17:27 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 [this message]
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
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=1048872463.17161.132.camel@localhost.localdomain \
    --to=otaylor@redhat.com \
    --cc=emacs-devel@gnu.org \
    /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).