my $rememberer = MakeHideDaddyChildButton(
-buttonDaddy => $top_frame,
-hidersDaddy => $mw, # gets resized
-hiders => [ $top_frame, $middle_frame ], #daddys kiddys
);
$rememberer->pack;
This does leave the problem that after a resize, the 'hide' action does not minimize the container frame. Any idea how to get that fixed?
Um, repack the container frame (or its parent, or mainwindow ) .... or better idea, only ever forget/repack the container frame
Might need to resize (->geometry)
I'd have posted an example, but I was already working on this one, keep shooting, and watch the canvas resize :) the mainwindow doesn't resize
#!/usr/bin/perl --
use strict; use warnings;
use Tk;
my $packArgs = do {
my @packargs = (
[ qw/-expand 0 / ],
[ qw/-expand 1 -fill x / ],
[ qw/-expand 1 -fill y / ],
[ qw/-expand 1 -fill both / ],
);
my $ix = -1;
my $xx = @packargs ;
sub {
$ix++;
warn $ix % $xx ;
return @{ $packargs[ $ix % $xx ] };
};
};
my $mw = tkinit;
$mw->Button(
-text => 'BANG!',
-command => \&bangBang
)->pack(qw/-side top -anchor n/);
my $ca = $mw->Canvas( background => 'white' ) ->pack( $packArgs->() );
$ca->createOval(
50, 50,
100, 100,
-fill => 'pink',
);
MainLoop;
exit 0;
sub bangBang {
my $b = $Tk::event->W;
$mw->Busy;
$b->configure(-state => "disabled");
my $text = $b->cget(qw/ -text /);
unless( $text =~ s/(\d+)/ $1 + 1 /e ){
$text .= " 1";
}
$b->configure( -text => $text);
$ca->packForget;
$mw->update;
sleep 1;
$ca->pack( $packArgs->() );
$mw->Unbusy;
$b->configure(-state => "normal");
$mw->update;
}
|