- screenshot() on a non-toplevel Tk widget would crash when
authorTony Cook <tony@develop-help.com>
Fri, 1 Feb 2008 14:33:45 +0000 (14:33 +0000)
committerTony Cook <tony@develop-help.com>
Fri, 1 Feb 2008 14:33:45 +0000 (14:33 +0000)
  calling the frame method.  Since this call appears to be
  unnecessary I've removed it, and plan to run tests on a few
  platforms to check I haven't broken anything.
          RT #32843 - thanks to Slaven Rezic.

Changes
Screenshot.pm
t/30tkx11.t

diff --git a/Changes b/Changes
index 471e634466b2224776bd887adc1fd2fe0f3df3ed..a15197d35fc50ce334590217a0c750f4f1c9c9c3 100755 (executable)
--- a/Changes
+++ b/Changes
@@ -1,3 +1,10 @@
+0.006 unreleased
+       - screenshot() on a non-toplevel Tk widget would crash when
+         calling the frame method.  Since this call appears to be
+         unnecessary I've removed it, and plan to run tests on a few
+         platforms to check I haven't broken anything.
+          RT #32843 - thanks to Slaven Rezic.
+
 0.005 12 Mar 2007
        - 0.005 release
        - added a TODO section to the POD
index 7d116c4af7929135ff1daaac83abb3febc115fd6..826f43031c0e45583750bef05d7bd9c79dcf15a7 100644 (file)
@@ -69,8 +69,6 @@ sub screenshot {
       }
 
       my $id_hex = $opts{widget}->id;
-      $opts{widget}->can('frame') 
-        and $id_hex = $opts{widget}->frame;
       
       # is there a way to get the display pointer from Tk?
       $result = _x11($opts{display}, hex($id_hex), $opts{left}, $opts{top},
index 3eb138ab90bd26d86af2adac075771e34f17be8a..1b896b9580e96fba598bbd051b2dde27949ab56a 100644 (file)
@@ -25,15 +25,18 @@ $mw->windowingsystem eq 'x11'
 
 eval { $mw->geometry('+10+10'); };
 
-plan tests => 1;
+plan tests => 2;
 
-my $im;
-$mw->Label(-text => "test: $0")->pack;
+my ($im_mw, $im_label);
+my $label = $mw->Label(-text => "test: $0")->pack;
 $mw->after(100 =>
            sub {
-             $im = screenshot(widget => $mw, decor => 1)
-               or print "# ", Imager->errstr, "\n";
+             $im_mw = screenshot(widget => $mw, decor => 1)
+               or print "# mw: ", Imager->errstr, "\n";
+            $im_label = screenshot(widget => $label)
+              or print "# label: ", Imager->errstr, "\n";
              $mw->destroy;
            });
 MainLoop();
-ok($im, "grab from a Tk widget (X11)");
+ok($im_mw, "grab from a Tk widget (X11)");
+ok($im_label, "grab label from a Tk widget (X11)");