Package: gv Version: 1:3.7.1-1bfw2 Severity: normal Tags: patch The TOC widget scrolls downwards when selecting its last visible entry. This makes sense for long lists that do not fit into the widget so you can keep track of where you are while browsing throuh the document. However, the widget also scrolls downwards if you select the very last entry which is not necessary as there are no more entries to come. In particular, this is unexpected and very annoying for short lists where all entries can be perfectly seen as it hides the first entry.
The attached patch fixes this behavior by preventing the widget to scroll downwards if it is the very last entry that gets selected. As a result, the downward and upward scrolling behavior gets consistent when reaching the very last or first entry. -- System Information: Debian Release: squeeze/sid APT prefers testing APT policy: (500, 'testing') Architecture: i386 (x86_64) Kernel: Linux 2.6.33.1-64 (SMP w/16 CPU cores; PREEMPT) Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968) Shell: /bin/sh linked to /bin/dash Versions of packages gv depends on: ii dpkg 1.15.7.2 Debian package management system ii ghostscript-x 8.71~dfsg2-6bfw1 The GPL Ghostscript PostScript/PDF ii install-info 4.13a.dfsg.1-5 Manage installed documentation in ii libc6 2.11.2-2bfw1 Embedded GNU C Library: Shared lib ii libx11-6 2:1.3.3-3 X11 client-side library ii libxinerama1 2:1.1-3 X11 Xinerama extension library ii libxmu6 2:1.0.5-1 X11 miscellaneous utility library ii libxt6 1:1.0.7-1 X11 toolkit intrinsics library ii xaw3dg 1.5+E-18 Xaw3d widget set Versions of packages gv recommends: ii xaw3dg 1.5+E-18 Xaw3d widget set gv suggests no packages. -- Configuration Files: /etc/X11/app-defaults/GV changed [not included] -- no debconf information
diff -u -r gv-3.7.1/src/misc.c gv-3.7.1-patched/src/misc.c --- gv-3.7.1/src/misc.c 2010-06-03 18:36:25.000000000 +0200 +++ gv-3.7.1-patched/src/misc.c 2010-08-27 14:18:31.692487366 +0200 @@ -323,7 +323,7 @@ else VlistSetFirstVisible(newtoc, entry); b = True; - } else { + } else if (entry < VlistEntries(newtoc) - 1) { /* sadly newtoc does not know it's height, so it cannot be told * to made an item visible and we need to trick: */ lastvisible = VlistEntryOfPosition(newtoc, newtocClip->core.height);