use strict;
use warnings;
use Scalar::Util;
use Gtk2 '-init';
package ZZ;
use strict;
use warnings;
sub new {
my ($class, %self) = @_;
return bless \%self, $class;
}
sub DESTROY {
my ($self) = @_;
my $widget = $self->{'widget'}
or return;
print $widget->window || 'undef',"\n";
}
package main;
my $dragger = ZZ->new;
my $widget = Gtk2::DrawingArea->new;
$dragger->{'widget'} = $widget;
$widget->{'dragger'} = $dragger;
$widget->signal_connect (destroy => sub {
my ($widget) = @_;
delete $widget->{'dragger'};
print $widget->window,"\n";
});
Scalar::Util::weaken ($widget);
Scalar::Util::weaken ($dragger);
exit 0;