--- deliantra/Deliantra-Client/DC/UI.pm 2006/05/09 22:49:32 1.192 +++ deliantra/Deliantra-Client/DC/UI.pm 2006/05/10 21:12:26 1.193 @@ -382,8 +382,10 @@ sub set_parent { my ($self, $parent) = @_; - $self->{_tree_depth} = $parent->{_tree_depth} + 1; Scalar::Util::weaken ($self->{parent} = $parent); + + $self->check_size + unless exists $self->{req_w}; } sub check_size { @@ -508,9 +510,7 @@ @{$self->{children}}, @widgets ]; - $_->check_size - for @widgets; - + $self->check_size; $self->update; } @@ -1215,6 +1215,8 @@ sub size_allocate { my ($self, $w, $h) = @_; + Carp::confess "negative size" if $w < 0 || $h < 0;#d# + my $children = $self->{children}; my @h = map $_->{req_h}, @$children; @@ -2775,6 +2777,8 @@ : $widget->size_request; if ($w != $widget->{req_w} || $h != $widget->{req_h}) { + Carp::confess "$widget: size_request is negative" if $w < 0 || $h < 0;#d# + $widget->{req_w} = $w; $widget->{req_h} = $h; @@ -2790,6 +2794,9 @@ for (values %{delete $self->{size_alloc}}) { my ($widget, $w, $h) = @$_; + $w = 0 if $w < 0; + $h = 0 if $h < 0; + $widget->{w} = $w; $widget->{h} = $h; $widget->size_allocate ($w, $h);