--- deliantra/Deliantra-Client/DC/UI.pm 2006/05/22 03:48:50 1.221 +++ deliantra/Deliantra-Client/DC/UI.pm 2006/05/22 03:59:51 1.222 @@ -208,13 +208,6 @@ sub show { my ($self) = @_; - - for (my @w = $self; @w; ) { - my $w = pop @w; - push @w, $w->children; - $w->{visible} = 1; - } - return if $self->{parent}; $CFClient::UI::ROOT->add ($self); @@ -223,12 +216,6 @@ sub hide { my ($self) = @_; - for (my @w = $self; @w; ) { - my $w = pop @w; - push @w, $w->children; - $w->{visible} = 1; - } - undef $GRAB if $GRAB == $self; undef $HOVER if $HOVER == $self; @@ -2543,6 +2530,14 @@ (32, 8) } +sub update { + my ($self) = @_; + + return unless $self->{visible}; + + $self->SUPER::update; +} + sub _draw { my ($self) = @_; @@ -3004,6 +2999,24 @@ } $self->SUPER::add (@children); + + while (@children) { + my $w = pop @children; + push @children, $w->children; + $w->{visible} = 1; + } +} + +sub remove { + my ($self, @children) = @_; + + $self->SUPER::remove (@children); + + while (@children) { + my $w = pop @children; + push @children, $w->children; + delete $w->{visible}; + } } sub on_refresh {