Bug#329475: libgtk2.0-0: Unexpected behaviour in wheel scrolling
with scrollbars
Robin Redeker
elmex at x-paste.de
Thu Sep 22 00:44:48 UTC 2005
Package: libgtk2.0-0
Version: 2.6.10-1
Severity: normal
I have a unexpected behaviour of the mouse wheel scrolling the scrollbar
in some Gtk programs. In one program it scrolls one page, in others (or
even the same, but a different content of the scrolled window) it
scrolls less or much more. (and for example in mozilla only some few
lines).
I looked up the source in gtk2 gtk+2.0-2.6.10:
gtk/gtkrange.c, function _gtk_range_get_wheel_delta:
if (GTK_IS_SCROLLBAR (range))
delta = pow (adj->page_size, 2.0 / 3.0);
else
delta = adj->step_increment * 2;
The behaviour of the scrollbar is changed explicitly
in GtkRange. The problem with pow (adj->page_size, 2.0 / 3.0)
is, that it sets the delta depending on the magnitude of
the value scrollbar uses.
This leads to an unexpected behaviour when scrolling the
scrollbar with the mouse wheel:
the wheel scrolls only by a small amount in windows with
few content (or when the range used by the application is small),
and on other windows, with much content, it scrolls much more.
This leads to scrollbars that look the same and behave the same when
people click on the arrows, the knob or the other areas of the
scrollbar, with the sole exception of the scrollwheel.
In some programs that use the number of entries in a list
for the range it leads to large jumps with many entries
and page-size jumps with less entries.
In programs that use a range < 1, it even scrolls less than
a page.
There is also no chance for the developers of Gtk2
programs to directly influence this behaviour.
In contrast the scrollbar documentation says this:
The "step_increment" and "page_increment" fields are used
when the user asks to step down (using the small
stepper arrows) or page down (using for example the PageDown key).
However when the user asks to 'step down' or 'page down'
using the scrollwheel a completly different value is used.
I would find it more logical if a range 0..100, page_size = 10
(currently scrolling 3 pages) would behave exactly the same
as a range 0..10, page_size = 1 (currently scrolling 1 page)
or 0..1, page_size = 0.1 (currently scrolling 1/3 of a page).
It's also questionable to enforce the behaviour of a single subclass
(GtkScrollbar) by selectively changing the behaviour in the super class
(GtkRange).
For example i would find the default behaviour
adj->step_increment * 2
is deterministic in all cases.
-- System Information:
Debian Release: testing/unstable
APT prefers unstable
APT policy: (500, 'unstable'), (500, 'testing'), (1, 'experimental')
Architecture: i386 (i686)
Kernel: Linux 2.6.12.3
Locale: LANG=en_US, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Versions of packages libgtk2.0-0 depends on:
ii libatk1.0-0 1.10.1-2 The ATK accessibility toolkit
ii libc6 2.3.5-4 GNU C Library: Shared libraries an
ii libfontconfig1 2.3.2-1 generic font configuration library
ii libfreetype6 2.1.7-2.1 FreeType 2 font engine, shared lib
ii libglib2.0-0 2.8.0-1 The GLib library of C routines
ii libgtk2.0-bin 2.6.10-1 The programs for the GTK+ graphica
ii libgtk2.0-common 2.6.10-1 Common files for the GTK+ graphica
ii libjpeg62 6b-9 The Independent JPEG Group's JPEG
ii libpango1.0-0 1.8.2-1 Layout and rendering of internatio
ii libpng12-0 1.2.8rel-1 PNG library - runtime
ii libtiff4 3.7.3-1 Tag Image File Format (TIFF) libra
ii libx11-6 4.3.0.dfsg.1-5 X Window System protocol client li
ii libxcursor1 1.1.3-1 X cursor management library
ii libxext6 4.3.0.dfsg.1-5 X Window System miscellaneous exte
ii libxft2 2.1.2-6 FreeType-based font drawing librar
ii libxi6 4.3.0.dfsg.1-5 X Window System Input extension li
ii libxinerama1 6.8.2.dfsg.1-7 X Window System multi-head display
ii libxrandr2 4.3.0.dfsg.1-5 X Window System Resize, Rotate and
ii libxrender1 1:0.9.0-2 X Rendering Extension client libra
ii xlibs 4.3.0.dfsg.1-5 X Window System client libraries m
ii zlib1g 1:1.2.1.1-3 compression library - runtime
-- no debconf information
More information about the Pkg-gnome-maintainers
mailing list