Re: DialogBox not Being Displayed

Steve Waltner <[email protected]> Tue, 17 Jul 2007 09:12:20 -0500
Newsgroups gmane.comp.lang.perl.tk
Message-ID <[email protected]>
On Jul 16, 2007, at 6:19 PM, Jack D wrote:
>> -----Original Message-----
>> From: [email protected]
>> [mailto:[email protected]] On Behalf Of Steve Waltner
>> Sent: Monday, July 16, 2007 12:46 PM
>> To: [email protected]
>> Subject: DialogBox not Being Displayed
>>
>> We've been running ActivePerl 5.8.0 on Windows for some time
>> and recently upgraded to ActivePerl 5.8.8. Along the way (ActivePerl
>> 5.8.4) the Perl Tk module was upgraded to 804.027.
>> Previously, it had been using 800.???. While this fixed the
>> original problem we had, it introduced a problem where the
>> behavior of DialogBox changed and our dialog boxes are no
>> longer being displayed. A code snippet that demonstrates this is:
>>
>> =======
>> use Tk;
>> use Tk::DialogBox;
>>
>> $main = MainWindow->new();    # this creates the main dialog box
>> $dialog = $main->DialogBox (-title => "TITLE BAR TEXT",
>> -buttons => [ "Button 1","Button 2" ] ); # this creates the
>> desired box
>> $main->withdraw();            # this makes the main dialog
>> box invisible
>> $button = $dialog->Show();    # this makes the desired dialog
>> box appear
>> $main->destroy();             # this destroys the main dialog box
>> print "Button pushed: $button\n";
>> =======
>>
>> The problem is that the user wants to hide the main window
>> and still show the DialogBox. With version 4.x of
>> DialogBox.pm, the "withdraw"
>> that hides $main also keeps $dialog from being shown on the screen.
>
> This code has introduces a "transient" call likely in order to  
> avoid having
> the window get hidden beneath the main window (which was a problem  
> in 800).
> Unfortunately this has the side effect as you note here - i.e. If  
> the main
> window is withdrawn - so is the dialog.
>
>>
>> How should one code it where you hide the main Tk window, but
>> are still allowed to show a DialogBox created off the main window?
>
> The fix is to add the following line after you create your  
> DialogBox object.
>
> $dialog->transient('');
>
> HTH
> Jack

Thanks Jack. I think that will solve the problem in our code. Adding  
the transient call to this little code snippet I received from the  
developer fixed the issue, so I'm assuming it will solve the issue in  
the actual program. As much as I wanted to blame this on a bug in Tk,  
I was pretty sure it was just a coding error on our part. :-) Thanks  
again for the quick response.

Steve
--++**==--++**==--++**==--++**==--++**==--++**==--++**==
ptk mailing list
[email protected]
https://mailman.stanford.edu/mailman/listinfo/ptk