You can use yview(moveto=>$fract) instead of yviewMoveTo($fract).
Here is a convenience fix for the Perl/Tk Chatterbox Client.
Change sub updChatterbox to:
sub updChatterbox {
my ($mytopchar, $myposition) = $Chatfield->yview(); # retreive sc
+roll pos
&Status('Checking for new chat messages...');
foreach (&getFromServer('chat')) { &printChat("$_"); }
&Status($status_idle);
if ($myposition == 1) {
$Chatfield->yview(moveto=>$myposition);
}
else {
$Chatfield->yview(moveto=>$mytopchar); # restore scroll pos
}
}
This allows you to scroll back and read aged chat without having the client jump to the bottom. No more cutting and pasting!!
Update: If I had bothered to actually pay attention while browsing through the Tk CB code, I would have seen the part about $Chatfield->see('end');
Here is a nicer fix:
if ($myposition == 1) {
$Chatfield->yview(moveto=>$myposition);
}
else {
$Chatfield->yview(moveto=>$mytopchar); # restore scroll pos
}
-dystrophy |