Package: tk8.4 Version: 8.4.9-1 Severity: normal The bug is in /usr/lib/tk8.4/spinbox.tcl. It's possible for a spinbox button to get effectively "stuck down" so that its action gets invoked repeatedly until the application is killed.
The <B1-Leave> event is used to start a repeating chain of AutoScan invocations, each of which schedules the next one, continuing until some other event (like a <ButtonRelease-1> or a <B1-Enter>) cancels the next scheduled invocation, whose ID is stored in Priv(afterId). The assumption is that a <B1-Leave> event means the user dragged from inside the widget to outside widget, which means the user must be trying to select a bunch of text, which ought to continue scrolling as long as the button is held down outside the widget. But some window managers can cause a <B1-Leave> event without any dragging and without any corresponding button release. In my case, olvwm allows me to select a window (to give it the focus) by clicking on it while holding down the WMGrab modifier (which I have configured to be Control, but I don't think that's relevant). As a side effect, this causes a <B1-Leave> event (I don't know why), but no button release. Therefore, a never-ending chain of AutoScan invocations is launched, with no immediate possibility of a <ButtonRelease-1> or a <B1-Enter> because the button is not even down. This background activity is invisible to the user because it has no effect on the display. However... If the user then clicks on one of the spinbox buttons, the background chain of AutoScan calls can collide with the chain of Invoke calls, because both use Priv(afterId) to store the ID of the next scheduled call. The button is supposed to trigger its -command action repeatedly as long as it is held down, and the button release triggers the cancelation of the next call. But because the ID is shared, the button release can instead end up terminating the background chain of AutoScan calls, leaving the chain of Invoke calls going forever. To reproduce this effect, run olvwm (or olwm) and the following script: #!/usr/bin/wish proc foo {} { puts stderr "DEBUG foo" } spinbox .foo -command foo pack .foo Click on the spinbox text area while holding down the WMGrab modifier (which I think is Alt by default), then click on one of the buttons once or twice. You should see an endless stream of "DEBUG foo" on stderr. More clues can be gathered by adding debug statements in /usr/lib/tk8.4/spinbox.tcl. I think perhaps AutoScan needs to check whether a text selection is actually in progress (initiated by a button press) rather than assume that a <B1-Leave> implies that the button is currently down. It would probably also be a good idea to use separate variables to store AutoScan's after ID and Invoke's after ID. -- System Information: Debian Release: 3.1 APT prefers testing APT policy: (900, 'testing'), (700, 'unstable') Architecture: i386 (i686) Kernel: Linux 2.6.9-2-686 Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1) Versions of packages tk8.4 depends on: ii libc6 2.3.2.ds1-20 GNU C Library: Shared libraries an ii libx11-6 4.3.0.dfsg.1-10 X Window System protocol client li ii tcl8.4 8.4.9-1 Tcl (the Tool Command Language) v8 ii xlibs 4.3.0.dfsg.1-10 X Keyboard Extension (XKB) configu -- no debconf information -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]