--- deliantra/Deliantra-Client/DC/UI.pm 2006/05/25 21:48:22 1.238 +++ deliantra/Deliantra-Client/DC/UI.pm 2006/05/26 20:50:35 1.241 @@ -7,6 +7,7 @@ use List::Util (); use CFClient; +use CFClient::Texture; our ($FOCUS, $HOVER, $GRAB); # various widgets @@ -230,6 +231,7 @@ # broken show/hide model + delete $self->{root}; delete $self->{visible}; undef $GRAB if $GRAB == $self; @@ -461,7 +463,7 @@ Scalar::Util::weaken ($self->{parent} = $parent); $self->{root} = $parent->{root}; - $self->{visible} = $parent->{visible}; + $self->{visible} = $parent->{visible} + 1; # TODO: req_w _does_change after ->reconfigure $self->check_size @@ -878,6 +880,16 @@ $self } +sub update { + my ($self) = @_; + + $self->SUPER::update; + + # todo: overwrite size_allocate of child + my $child = $self->{vp}->child; + $self->{slider}->set_range ([$self->{slider}{range}[0], 0, $child->{h}, $self->{vp}{h}, 1]); +} + sub size_allocate { my ($self, $w, $h) = @_; @@ -2138,9 +2150,10 @@ sub set_range { my ($self, $range) = @_; - $self->{range} = $range; + ($range, $self->{range}) = ($self->{range}, $range); - $self->update; + $self->update + if "@$range" ne "@{$self->{range}}"; } sub set_value { @@ -2753,8 +2766,6 @@ $row++; } - -# $range->{range} = [$self->{pos}, 0, $self->{max_pos}, $page]; } sub size_request { @@ -2956,6 +2967,7 @@ my $class = shift; $class->SUPER::new ( + visible => 1, @_, ) } @@ -3023,8 +3035,8 @@ for (my @widgets = @children; my $w = pop @widgets; ) { push @widgets, $w->children; - $w->{root} = $self; - $w->{visible} = 1; + $w->{root} = $self; + $w->{visible} = $self->{visible} + 1; } for my $child (@children) {