http://qs321.pair.com?node_id=926462

halley has asked for the wisdom of the Perl Monks concerning the following question:

I am playing around some more with Tk::Canvas, and in particular, the scrolled variety. The scrollbar mechanisms seem really primitive.

my $c = $parent->Scrolled('Canvas', -width => $width, -height => $height, -background => 'beige', -scrollbars => 'osoe', -scrollregion => [ 0, 0, $width, $height ]);

I've constructed a Scrolled Canvas, which apparently returns a ref of type Tk::Frame. That must have the children, including a Canvas and a couple of Scrollbars.

I also found the Tk::Autoscroll class, which didn't come with my build of Perl/Tk, but was easy enough to add.

When dragging around an item in a large scrolled canvas, I want to auto-scroll to keep the dragged item in view. This doesn't seem so hard, except knowing where the scroller is viewing at the current time.

I can't figure out the way to go from a blessed Canvas ref (given in the drag events), to calculate or query the area of the scrollregion that is currently visible.

Before I go digging farther, I bet someone already has some code that calculates the visible area.

--
[ e d @ h a l l e y . c c ]