Tk has already mouse wheel support, however, there is no binding in
perl/Tk. If you want to make Text or Listbox widgets
mouse-wheel-aware, you can use the method below (borrowed from the
Tcl/Tk library), e.g. $text->BindMouseWheel. Note that I changed the
scrolling delta from the original 4 or 5 lines to 3 (which seems to
match the behaviour on my NT machine).
# not yet tested on Unix
sub Tk::Widget::BindMouseWheel {
my($w) = @_;
# The MouseWheel will typically only fire on Windows. However,
# someone could use the "event generate" command to produce one
# on other platforms.
$w->bind('<MouseWheel>',
[ sub { $_[0]->yview('scroll',-($_[1]/120)*3,'units') },
+ Tk::Ev("D")]);
if ($Tk::platform eq 'unix') {
# Support for mousewheels on Linux/Unix commonly comes through
+ mapping
# the wheel to the extended buttons. If you have a mousewheel
+, find
# Linux configuration info at:
# http://www.inria.fr/koala/colas/mouse-wheel-scroll/
$w->bind('<4>',
sub { $_[0]->yview('scroll', -3, 'units')
unless $Tk::strictMotif;
});
$w->bind('<5>',
sub { $_[0]->yview('scroll', 3, 'units')
unless $Tk::strictMotif;
});
}
}
|