--- deliantra/Deliantra-Client/DC/UI.pm 2006/04/07 20:55:32 1.12 +++ deliantra/Deliantra-Client/DC/UI.pm 2006/04/07 20:57:29 1.13 @@ -5,7 +5,7 @@ use SDL::OpenGL::Constants; our $FOCUS; # the widget with current focus -our %ACTIVE_WIDGETS; +our @ACTIVE_WIDGETS; # class methods for events sub feed_sdl_key_down_event { $FOCUS->key_down ($_[0]) if $FOCUS } @@ -20,11 +20,14 @@ } sub activate { - $ACTIVE_WIDGETS{$_[0]} = $_[0]; + push @ACTIVE_WIDGETS, $_[0]; } sub deactivate { - delete $ACTIVE_WIDGETS{$_[0]}; + @ACTIVE_WIDGETS = + sort { $a->{z} <=> $b->{z} } + grep { $_ != $_[0] } + @ACTIVE_WIDGETS; } sub focus_in { @@ -54,6 +57,7 @@ sub x { $_[0]->{x} = $_[1] if $_[1]; $_[0]->{x} } sub y { $_[0]->{y} = $_[1] if $_[1]; $_[0]->{y} } +sub z { $_[0]->{z} = $_[1] if $_[1]; $_[0]->{z} } sub draw { my ($self) = @_;