… | |
… | |
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 | |
… | |
… | |
2410 | |
2411 | |
2411 | $self->SUPER::invoke_button_down ($ev, $x, $y); |
2412 | $self->SUPER::invoke_button_down ($ev, $x, $y); |
2412 | |
2413 | |
2413 | $self->{click} = [$self->{range}[0], $self->{vertical} ? $y : $x]; |
2414 | $self->{click} = [$self->{range}[0], $self->{vertical} ? $y : $x]; |
2414 | |
2415 | |
2415 | $self->mouse_motion ($ev, $x, $y) |
2416 | $self->invoke_mouse_motion ($ev, $x, $y) |
2416 | } |
2417 | } |
2417 | |
2418 | |
2418 | sub invoke_mouse_motion { |
2419 | sub invoke_mouse_motion { |
2419 | my ($self, $ev, $x, $y) = @_; |
2420 | my ($self, $ev, $x, $y) = @_; |
2420 | |
2421 | |