Many thanks. I have tried your suggestion and it seems to do the trick! And, as you say, it also loses the "flicker".
Once again, many thanks Geoff -----Original Message----- From: Jack [mailto:[email protected]] Sent: Monday, October 26, 2009 3:44 AM To: 'Geoff Horsnell'; [email protected] Subject: RE: Strange Perl/Tk action Ok. I get it now. First off - sorry for the top post. It's just the way my mail works. I don't see the canvas resize on Vista, however I do see it flicker. I don't doubt that it resizes though, I just cannot reproduce it. I guess the main question I have is "why are you rebuilding the entire menu just to disable an entry?". Instead you should just use the entryconfigure method and target the entry you wish to disable. Here is one way of doing that (fully working code - just cut, paste and run): ####################### use Tk; use strict; my $mw=tkinit; $mw->Canvas->pack; create_all_menus_only_once(); MainLoop; sub create_all_menus_only_once { my $menub = $mw->Menu(-type => "menubar"); $mw->configure (-menu => $menub); my $submenu = create_menu1($menub); $menub->cascade( -label => "Edit", -underline => 0, -tearoff =>0, -menu=>$submenu); } sub create_menu1 { my $mainmenu = shift; my $menu1 = $mainmenu->Menu(-tearoff=>0); #First entry $menu1->command(-label => 'A Switch to B', -command=>[\&switch,$menu1,'A']); #Second entry $menu1->command(-label => 'B Switch to A', -command=>[\&switch,$menu1,'B'], -state=>'disabled'); return ($menu1); } sub switch { my ($m,$val) = @_; if ($val eq 'A') { $m->entryconfigure(0,-state=>'disabled'); $m->entryconfigure(1,-state=>'normal'); } elsif ($val eq 'B') { $m->entryconfigure(0,-state=>'normal'); $m->entryconfigure(1,-state=>'disabled'); } } __END__ ####################### There are "so" many ways to create and manipulate menus - that I could not cover all the scenarios. In this method, I created the submenu before creating the "Edit" cascade. This will allow you to use the menu reference to adjust the entries as you see fit. There is "no flicker" with this code - so I will guess that it will solve your resizing issue. HTH Jack _______________________________________________ Perl-Win32-Users mailing list [email protected] To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
