Skip Menu |

This queue is for tickets about the Tk-Wizard CPAN distribution.

Report information
The Basics
Id: 34610
Status: resolved
Estimated: 20 min
Worked: 2 hours (120 min)
Priority: 0/
Queue: Tk-Wizard

People
Owner: LGODDARD [...] cpan.org
Requestors: clothohk [...] gmail.com
Cc:
AdminCc:

Bug Information
Severity: Important
Broken in: (no value)
Fixed in: (no value)



Subject: No redraw after windows overlap
When the wizard is running a long job, and it is overlapped by another window, when you move the window away, you will see the wizard is not redraw. The attached perlwizard-1.png is the original display, perlwizard-1.png is the wrong display after overlapping by another window. Reprodcue the problem by: 1) Run the source code at the end of this message 2) Overlap it by another window (eg. your browser) 3) Close the window. #!/usr/bin/perl use Tk::Wizard; require Tk::LabFrame; my $wizard = new Tk::Wizard( -title => "wzard", -style => 'top', ); $wizard->addTaskListPage( -title => "Get network information", -tasks => [ "Get interface name" => sub { while (1) { sleep(1); }} ], ); $wizard->Show; Tk::Wizard::MainLoop();
Subject: perlwizard-2.png
Download perlwizard-2.png
image/png 8.1k
perlwizard-2.png
Subject: perlwizard-1.png
Download perlwizard-1.png
image/png 11.8k
perlwizard-1.png
Subject: Re: [rt.cpan.org #34610] No redraw after windows overlap
Date: Wed, 02 Apr 2008 08:43:44 +0100
To: bug-Tk-Wizard [...] rt.cpan.org
From: Lee Goddard <leegee [...] gmail.com>
clothohk@gmail.com via RT wrote: Show quoted text
> Wed Apr 02 03:29:45 2008: Request 34610 was acted upon. > Transaction: Ticket created by clothohk@gmail.com > Queue: Tk-Wizard > Subject: No redraw after windows overlap > Broken in: (no value) > Severity: Normal > Owner: Nobody > Requestors: clothohk@gmail.com > Status: new > Ticket <URL: http://rt.cpan.org/Ticket/Display.html?id=34610 >
Thanks for this: it is a known issue. We need to add a sysint - an event that periodically recurs - to redraw the wizard. Wizard could tell your tasks how to redraw the Wizard, but it would be nicer if the Wizard didn't bother them with such trivia, and just looked after itself. Thanks very much for the comprehensive report! -- Lee Goddard Please sign the international Free Tibet petition: http://www.avaaz.org/en/tibet_end_the_violence/72.php/?cl=67109514
Changes in distribution version 2.137 * Played with redraw repeat event in response to ticket 34610 * Moved task list from FileSystem to Tasts * Removed warnings from &import when use Tk::Wizard () * Added Wizard::update * Added $REFRESH_MS * Added tests Added a fix to refresh the page every $Tk::Wizard::REFRESH_MS milliseconds - one second by defauilt. Added a test script that mimicks your test script, and it was fine. Your script is still an issue for me, though: it appears to be the use of sleep(1) blocks Tk::After, which is event engine. Remvoing sleep() and putting some other time-consuming operation there seems to solve the problem. Alos, putting a call to the new $wizard->update in your loops fixes the problem. Please let me know if these "fixes" do not address your issue, and thanks again for supplying such a decent report - a real pleasure. Cheers Lee
From: clothohk [...] gmail.com
Thank you for you quick fix. It solves half of the problem. Add $wizard->update() in the loop will solve it. But time-consuming operation still meets the same problem. I change sleep(1) to system("updatedb") in my test script to test it.
Subject: Re: [rt.cpan.org #34610] No redraw after windows overlap
Date: Thu, 03 Apr 2008 09:21:49 +0100
To: bug-Tk-Wizard [...] rt.cpan.org
From: Lee Goddard <leegee [...] gmail.com>
clothohk@gmail.com via RT wrote: Show quoted text
> Queue: Tk-Wizard > Ticket <URL: http://rt.cpan.org/Ticket/Display.html?id=34610 > > > Thank you for you quick fix. It solves half of the problem. > > Add $wizard->update() in the loop will solve it. > But time-consuming operation still meets the same problem. > I change sleep(1) to system("updatedb") in my test script > to test it.
I'm in the process of moving my household from London to Budapest, as well as working 9-to-5 for a client in Zurich, but I will try give this some time. FYI: wizard->update sets a Tk::After event to occur every $Tk::Wizard::REFRESH_MS milliseconds, when the event will call wizard->update. My guess is that the system('updatedb') is preventing Tk events firing at all. I will see what I can do. -- Lee Goddard Please sign the international Free Tibet petition: http://www.avaaz.org/en/tibet_end_the_violence/72.php/?cl=67109514
Subject: Your Perl Tk::Wizard Bug - No redraw after windows overlap
On Thu Apr 03 04:03:38 2008, clothohk@gmail.com wrote: Show quoted text
> Thank you for you quick fix. It solves half of the problem. > > Add $wizard->update() in the loop will solve it. > But time-consuming operation still meets the same problem. > I change sleep(1) to system("updatedb") in my test script > to test it.
Hi there, If this is still an issue, please could you reply to this message, to re-open the bug-report? I feel it may be unavoidable, as it seems to depend upon Perl Tk's access to IRQs, but I am will to keep trying... Cheers, Lee