… | |
… | |
25 | |
25 | |
26 | use Carp (); |
26 | use Carp (); |
27 | use AnyEvent (); |
27 | use AnyEvent (); |
28 | use BerkeleyDB; |
28 | use BerkeleyDB; |
29 | use Pod::POM (); |
29 | use Pod::POM (); |
|
|
30 | use Scalar::Util (); |
30 | use Storable (); # finally |
31 | use Storable (); # finally |
31 | |
32 | |
32 | package CFClient::PodToPango; |
33 | package CFClient::PodToPango; |
33 | |
34 | |
34 | use base Pod::POM::View::Text; |
35 | use base Pod::POM::View::Text; |
… | |
… | |
291 | $cb->($last_enter_count); |
292 | $cb->($last_enter_count); |
292 | $w->hide; |
293 | $w->hide; |
293 | $w = undef; |
294 | $w = undef; |
294 | } |
295 | } |
295 | ); |
296 | ); |
296 | $entry->focus_in; |
297 | $entry->grab_focus; |
297 | $w->show; |
298 | $w->show; |
298 | |
299 | |
299 | } |
300 | } |
300 | |
301 | |
301 | sub update_widgets { |
302 | sub update_widgets { |
302 | my ($self) = @_; |
303 | my ($self) = @_; |
|
|
304 | |
|
|
305 | # necessary to avoid cyclic references |
|
|
306 | Scalar::Util::weaken $self; |
303 | |
307 | |
304 | my $button_cb = sub { |
308 | my $button_cb = sub { |
305 | my (undef, $ev, $x, $y) = @_; |
309 | my (undef, $ev, $x, $y) = @_; |
306 | |
310 | |
307 | my $targ = $::CONN->{player}{tag}; |
311 | my $targ = $::CONN->{player}{tag}; |
… | |
… | |
484 | ." directly without modifier! It would damage the completer handling." |
488 | ." directly without modifier! It would damage the completer handling." |
485 | ); |
489 | ); |
486 | return; |
490 | return; |
487 | } |
491 | } |
488 | |
492 | |
489 | $entry->focus_out; |
493 | $entry->grab_focus; |
490 | |
494 | |
491 | $cb->($mod, $sym); |
495 | $cb->($mod, $sym); |
492 | |
496 | |
493 | $w->destroy |
497 | $w->destroy |
494 | }); |
498 | }); |
495 | |
499 | |
496 | $entry->focus_in; |
500 | $entry->grab_focus; |
497 | $w->show; |
501 | $w->show; |
498 | } |
502 | } |
499 | |
503 | |
500 | sub keycombo_to_name { |
504 | sub keycombo_to_name { |
501 | my ($mod, $sym) = @_; |
505 | my ($mod, $sym) = @_; |