diff options
Diffstat (limited to 'lib/ManaTools/Shared/GUI/EventHandlerRole.pm')
-rw-r--r-- | lib/ManaTools/Shared/GUI/EventHandlerRole.pm | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/ManaTools/Shared/GUI/EventHandlerRole.pm b/lib/ManaTools/Shared/GUI/EventHandlerRole.pm index e01f5c89..289267fb 100644 --- a/lib/ManaTools/Shared/GUI/EventHandlerRole.pm +++ b/lib/ManaTools/Shared/GUI/EventHandlerRole.pm @@ -65,6 +65,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. use Moose::Role; +has 'parentEventHandler' => ( + is => 'rw', + isa => 'Maybe[ManaTools::Shared::GUI::EventHandlerRole]', + default => undef, +); + has 'eventHandlers' => ( is => 'ro', isa => 'ArrayRef[ManaTools::Shared::GUI::EventHandlerRole]', @@ -103,6 +109,7 @@ sub addEventHandler { my $eventHandler = shift; my $eventHandlers = $self->eventHandlers(); push @{$eventHandlers}, $eventHandler; + $eventHandler->parentEventHandler($self); } #============================================================= @@ -129,6 +136,7 @@ sub delEventHandler { while ($i > 0) { $i = $i - 1; if ($eventHandlers->[$i] == $eventHandler) { + $eventHandler->parentEventHandler(undef); # splice the eventHandler out of it splice @{$eventHandlers}, $i, 1; return ; @@ -546,5 +554,28 @@ sub processEvents { #============================================================= +=head2 parentDialog + +=head3 INPUT + + $self: this object + +=head3 DESCRIPTION + + finds the parent Dialog + +=cut + +#============================================================= +sub parentDialog { + my $self = shift; + return $self if $self->isa('ManaTools::Shared::GUI::Dialog'); + my $eventHandler = $self->parentEventHandler(); + return $eventHandler->parentDialog() if defined $eventHandler; + return undef; +} + +#============================================================= + 1; |