Gtk2-Ex-Dragger
view release on metacpan or search on metacpan
devel/run.pl view on Meta::CPAN
Gtk2->main;
exit 0;
__END__
=head1 BUGS
There's no C<notify> signal if the C<widget> property becomes C<undef> due
to weakening.
lib/Gtk2/Ex/Dragger.pm view on Meta::CPAN
} elsif ($pname eq 'widget') {
my $widget = $newval;
if (! $newval
|| ($oldval && $newval != $oldval)) {
# ENHANCE-ME: might be able to switch to an active grab on the new
# widget and continue
$self->stop;
}
if ($widget) {
Scalar::Util::weaken ($self->{'widget'});
}
$self->{'wevents'} = $widget && Gtk2::Ex::WidgetEvents->new
($widget, ['button-press-mask',
'button-motion-mask',
'button-release-mask']);
_widget_signals($self);
} elsif ($pname =~ /([hv])(adjustment|inverted)/) {
my $axis = $self->{$1};
my $field = $2;
lib/Gtk2/Ex/Dragger.pm view on Meta::CPAN
# so $floor+$frac == $x
#
sub _floor_and_frac {
my ($x) = @_;
my $f = POSIX::floor ($x);
return ($f, $x - $f);
}
sub _ref_weak {
my ($self) = @_;
Scalar::Util::weaken ($self);
return \$self;
}
#------------------------------------------------------------------------------
1;
__END__
=for stopwords Gtk2-Ex-Dragger Dragger scrollbars WidgetCursor natively viewport dragger scrollbar timestamp Gdk ungrab Viewport TextView pixmap Ryde WidgetEvents boolean enum UpdatePolicy mozilla
t/Dragger.t view on Meta::CPAN
is (Gtk2::Ex::Dragger->VERSION, $want_version, 'VERSION class method');
ok (eval { Gtk2::Ex::Dragger->VERSION($want_version); 1 },
"VERSION class check $want_version");
my $check_version = $want_version + 1000;
ok (! eval { Gtk2::Ex::Dragger->VERSION($check_version); 1 },
"VERSION class check $check_version");
}
#------------------------------------------------------------------------------
# gc weaken
{
my $widget = Gtk2::DrawingArea->new;
my $adj = Gtk2::Adjustment->new (100, -100, 1000, 10, 100, 800);
my $dragger = Gtk2::Ex::Dragger->new (widget => $widget,
hadjustment => $adj);
ok ($dragger->VERSION >= $want_version, 'VERSION object method');
ok (eval { $dragger->VERSION($want_version); 1 },
"VERSION object check $want_version");
my $check_version = $want_version + 1000;
ok (! eval { $dragger->VERSION($check_version); 1 },
"VERSION object check $check_version");
require Scalar::Util;
Scalar::Util::weaken ($dragger);
is ($dragger, undef, 'garbage collect when weakened');
}
{
my $widget = Gtk2::DrawingArea->new;
my $adj = Gtk2::Adjustment->new (100, -100, 1000, 10, 100, 800);
my $dragger = Gtk2::Ex::Dragger->new (widget => $widget,
hadjustment => $adj);
Scalar::Util::weaken ($widget);
is ($widget, undef, 'attached widget garbage collect when weakened');
}
#------------------------------------------------------------------------------
# cursor properties
# return true if two Glib::Boxed objects $b1 and $b2 point to the same
# underlying C object
sub glib_boxed_equal {
my ($b1, $b2) = @_;
my $pspec = Glib::ParamSpec->boxed ('equal', 'equal', 'blurb', ref($b1),
t/MyTestHelpers.pm view on Meta::CPAN
join(' ',
map {"$_=$obj->{$_}"} keys %$obj));
}
if (eval { require Devel::FindRef }) {
MyTestHelpers::diag (Devel::FindRef::track($obj, 8));
} else {
MyTestHelpers::diag ("Devel::FindRef not available -- ", $@);
}
}
sub test_weaken_show_leaks {
my ($leaks) = @_;
$leaks || return;
my $unfreed = $leaks->unfreed_proberefs;
my $unfreed_count = scalar(@$unfreed);
MyTestHelpers::diag ("Test-Weaken leaks $unfreed_count objects");
MyTestHelpers::dump ($leaks);
my $proberef;
foreach $proberef (@$unfreed) {
( run in 0.753 second using v1.01-cache-2.11-cpan-65fba6d93b7 )