sub CallDialog
{
$testbox1->configure(-state=>'disabled');
###############################
# Added this line so the displayed value is correct
$selected = $selected_1;
###############################
my $retval = $dialog->Show( -popover=>$form, -overanchor=>'c', -popanchor=>'c');
if($retval eq "Cancel")
{
$testbox1->configure(-state=>'normal');
}
elsif($retval eq "Submit")
{
$testbox1->configure(-state=>'normal');
$testbox1->setSelected($selected ); #(optional?)
}
}
####
my $button = $form->Button( -text=>"Dialog", -command=>sub{$selected=$selected_1;CallDialog($testbox1);} )->pack(-side=>'right');
####
use strict;
use warnings;
use Tk;
use Tk::JComboBox;
use Tk::Dialog;
my $form;
my %choices = ( 'a'=>1, 'b'=>2, 'c'=>3 );
my $selected_1 = "a";
my $selected = "a";
my $dialog;
my $testbox1;
my $testbox2;
CreateMainForm();
MainLoop();
sub CreateMainForm
{
$form = MainWindow->new();
$form->title("Test for JComboBox Problem");
$testbox1 = $form->JComboBox( -textvariable=>\$selected_1,-validate=>'match', -mode=>'editable',-relief=>'sunken', -highlightthickness=>0 );
for my $x(keys %choices) { $testbox1->addItem("$x"); }
$testbox1->pack(-side=>'left');
my $button = $form->Button( -text=>"Dialog", -command=>sub{CallDialog();} )->pack(-side=>'right');
$dialog = $form->Dialog ( -title=>"Part2 of test", -buttons=>["Submit","Cancel"],-default_button=>"Submit" );
$testbox2 = $dialog->JComboBox(-textvariable=>\$selected, -validate=>'match',-mode=>'editable', -relief=>'sunken',-highlightthickness=>0);
for my $x(keys %choices) { $testbox2->addItem("$x"); }
$testbox2->pack(-side=>'left');
}
sub CallDialog
{
$testbox2->setSelected($selected_1);
my $retval = $dialog->Show( -popover=>$form, -overanchor=>'c', -popanchor=>'c');
if($retval eq "Cancel")
{
$testbox1->configure(-state=>'normal');
}
elsif($retval eq "Submit")
{
$testbox1->setSelected($selected ); #(optional?)
}
}