diff options
Diffstat (limited to 'Master/tlpkg/tlperl0/lib/auto/Tk/Scrollbar/ButtonDown.al')
-rwxr-xr-x | Master/tlpkg/tlperl0/lib/auto/Tk/Scrollbar/ButtonDown.al | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl0/lib/auto/Tk/Scrollbar/ButtonDown.al b/Master/tlpkg/tlperl0/lib/auto/Tk/Scrollbar/ButtonDown.al new file mode 100755 index 00000000000..d80e2217abc --- /dev/null +++ b/Master/tlpkg/tlperl0/lib/auto/Tk/Scrollbar/ButtonDown.al @@ -0,0 +1,55 @@ +# NOTE: Derived from ..\blib\lib\Tk\Scrollbar.pm. +# Changes made here will be lost when autosplit is run again. +# See AutoSplit.pm. +package Tk::Scrollbar; + +#line 116 "..\blib\lib\Tk\Scrollbar.pm (autosplit into ..\blib\lib\auto\Tk\Scrollbar\ButtonDown.al)" +# tkScrollButtonDown -- +# This procedure is invoked when a button is pressed in a scrollbar. +# It changes the way the scrollbar is displayed and takes actions +# depending on where the mouse is. +# +# Arguments: +# w - The scrollbar widget. +# x, y - Mouse coordinates. + +sub ButtonDown +{my $w = shift; + my $e = $w->XEvent; + my $element = $w->identify($e->x,$e->y); + $w->configure('-activerelief' => 'sunken'); + if ($e->b == 1 and + (defined($element) && $element eq 'slider')) + { + $w->StartDrag($e->x,$e->y); + } + elsif ($e->b == 2 and + (defined($element) && $element =~ /^(trough[12]|slider)$/o)) + { + my $pos = $w->fraction($e->x, $e->y); + my($head, $tail) = $w->get; + my $len = $tail - $head; + + $head = $pos - $len/2; + $tail = $pos + $len/2; + if ($head < 0) { + $head = 0; + $tail = $len; + } + elsif ($tail > 1) { + $head = 1 - $len; + $tail = 1; + } + $w->ScrlToPos($head); + $w->set($head, $tail); + + $w->StartDrag($e->x,$e->y); + } + else + { + $w->Select($element,'initial'); + } +} + +# end of Tk::Scrollbar::ButtonDown +1; |