sub addOptions { my $w = shift; my $menu = $w->menu; my $tvar = $w->cget(-textvariable); my $vvar = $w->cget(-variable); my $oldt = $$tvar; my $width = $w->cget('-width'); my %hash; my %MainFields; my $first; while (@_) { my $val = shift; my $label = $val; if (ref $val) { if ($vvar == $tvar) { my $new = $label; $w->configure(-textvariable => ($tvar = \$new)); } ($label, $val) = @$val; } my $len = length($label); $width = $len if (!defined($width) || $len > $width); ##### BEGIN CHANGED ####### if ( $label eq '-') { $menu->separator() } elsif ( $label =~ /^(\w+)(\d+)$/ ) { my ($One, $Two)=($1, $2); if ( !defined($MainFields{'DaTa'.$One}) ) { $MainFields{'DaTa'.$One}=$menu->Cascade(-label=>$One); } $MainFields{'DaTa'.$One}->command(-label =>$One.$Two,-command => [ $w , 'setOption', $One.$Two ]); } else { $menu->command(-label => $label, -command => [ $w , 'setOption', $label, $val ]); } ##### END CHANGED ####### # $menu->command(-label => $label, -command => [ $w , 'setOption', $label, $val ]); $hash{$label} = $val; $first = $label unless defined $first; } if (!defined($oldt) || !exists($hash{$oldt})) { $w->setOption($first, $hash{$first}) if defined $first; } $w->configure('-width' => $width); }