… | |
… | |
470 | } |
470 | } |
471 | |
471 | |
472 | sub emit { |
472 | sub emit { |
473 | my ($self, $signal, @args) = @_; |
473 | my ($self, $signal, @args) = @_; |
474 | |
474 | |
|
|
475 | #d##TODO# stop propagating at first true, do not use sum |
475 | (List::Util::sum +(map $_->($self, @args), @{$self->{signal_cb}{$signal} || []}), # before |
476 | (List::Util::sum map $_->($self, @args), @{$self->{signal_cb}{$signal} || []}) # before |
476 | ($self->can ("invoke_$signal") || sub { 1 })->($self, @args)) # closure |
477 | || ($self->can ("invoke_$signal") || sub { 1 })->($self, @args) # closure |
477 | || ($self->{parent} && $self->{parent}->emit ($signal, @args)) # parent |
478 | || ($self->{parent} && $self->{parent}->emit ($signal, @args)) # parent |
478 | } |
479 | } |
479 | |
480 | |
480 | sub find_widget { |
481 | sub find_widget { |
481 | my ($self, $x, $y) = @_; |
482 | my ($self, $x, $y) = @_; |
482 | |
483 | |