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: Owen Taylor
Subject: Re: Gtk scrollbar: thumb too short
Date: 07 Apr 2003 15:21:00 -0400

On Mon, 2003-04-07 at 15:02, Stefan Monnier wrote:
> > > > > IIUC, the scrollbar widget has the following:
> > > > > 
> > > > >       total-size
> > > > >       minimum thumb size
> > > > >       thumb size
> > > > >       thumb position
> > > > > 
> > > > > Where minimum-thumb-size is (for all intents and purposes here) a 
> > > > > constant.
> > > > > Let's simplify things and subtract minimum thumb size from the current
> > > > > thumb size and from the total, we get:
> > > > > 
> > > > >       total-size
> > > > >       thumb size
> > > > >       thumb position
> > > > >
> > > > > where
> > > > >       
> > > > >       0 <= thumb-size <= total-size
> > > > >       thumb-size + thumb-position <= total-size
> > > > 
> > > > This isn't a "simplification", it is a different algorithm
> > > > from what GTK+ uses. The scrollbar thumb size in GTK+
> > > > is:
> > > > 
> > > >  MAX (min_size, total_size * document_page_size/document_size)
> > > 
> > > [ I assume that total_size = document_size to simplify the discussion ]
> > 
> > > So if min_size is 10, total_size is 100 and page_size is 1, how does
> > > the user get to see the last page ?
> > 
> > The 0-99 possible values for position in the document are mapped
> > linearly onto the 0-90 possible values for the position of the
> > slider thumb.
> 
> My point exactly:
> for all intents and purposes (other than actual drawing on
> the screen which you might care about but we don't), we can
> subtract 10 from all sizes and pretend the total_size is 90
> and minimum_size is 0 (and can thus be ignored).

The difference from your computations and the GTK+ computations
is that GTK+ only subtracts the minimum size from the total 
trough size, while you are also subtracting it from the thumb
size.

Regards,
                                         Owen






reply via email to

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