ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/DC/UI.pm
(Generate patch)

Comparing deliantra/Deliantra-Client/DC/UI.pm (file contents):
Revision 1.192 by root, Tue May 9 22:49:32 2006 UTC vs.
Revision 1.193 by root, Wed May 10 21:12:26 2006 UTC

380} 380}
381 381
382sub set_parent { 382sub set_parent {
383 my ($self, $parent) = @_; 383 my ($self, $parent) = @_;
384 384
385 $self->{_tree_depth} = $parent->{_tree_depth} + 1;
386 Scalar::Util::weaken ($self->{parent} = $parent); 385 Scalar::Util::weaken ($self->{parent} = $parent);
386
387 $self->check_size
388 unless exists $self->{req_w};
387} 389}
388 390
389sub check_size { 391sub check_size {
390 my ($self) = @_; 392 my ($self) = @_;
391 393
506 $self->{children} = [ 508 $self->{children} = [
507 sort { $a->{z} <=> $b->{z} } 509 sort { $a->{z} <=> $b->{z} }
508 @{$self->{children}}, @widgets 510 @{$self->{children}}, @widgets
509 ]; 511 ];
510 512
511 $_->check_size 513 $self->check_size;
512 for @widgets;
513
514 $self->update; 514 $self->update;
515} 515}
516 516
517sub children { 517sub children {
518 @{ $_[0]{children} } 518 @{ $_[0]{children} }
1212 ) 1212 )
1213} 1213}
1214 1214
1215sub size_allocate { 1215sub size_allocate {
1216 my ($self, $w, $h) = @_; 1216 my ($self, $w, $h) = @_;
1217
1218 Carp::confess "negative size" if $w < 0 || $h < 0;#d#
1217 1219
1218 my $children = $self->{children}; 1220 my $children = $self->{children};
1219 1221
1220 my @h = map $_->{req_h}, @$children; 1222 my @h = map $_->{req_h}, @$children;
1221 1223
2773 my ($w, $h) = $widget->{user_w} && $widget->{user_h} 2775 my ($w, $h) = $widget->{user_w} && $widget->{user_h}
2774 ? @$widget{qw(user_w user_h)} 2776 ? @$widget{qw(user_w user_h)}
2775 : $widget->size_request; 2777 : $widget->size_request;
2776 2778
2777 if ($w != $widget->{req_w} || $h != $widget->{req_h}) { 2779 if ($w != $widget->{req_w} || $h != $widget->{req_h}) {
2780 Carp::confess "$widget: size_request is negative" if $w < 0 || $h < 0;#d#
2781
2778 $widget->{req_w} = $w; 2782 $widget->{req_w} = $w;
2779 $widget->{req_h} = $h; 2783 $widget->{req_h} = $h;
2780 2784
2781 $self->{size_alloc}{$widget} = [$widget, $widget->{w}, $widget->{h}]; 2785 $self->{size_alloc}{$widget} = [$widget, $widget->{w}, $widget->{h}];
2782 2786
2787 } 2791 }
2788 2792
2789 while ($self->{size_alloc}) { 2793 while ($self->{size_alloc}) {
2790 for (values %{delete $self->{size_alloc}}) { 2794 for (values %{delete $self->{size_alloc}}) {
2791 my ($widget, $w, $h) = @$_; 2795 my ($widget, $w, $h) = @$_;
2796
2797 $w = 0 if $w < 0;
2798 $h = 0 if $h < 0;
2792 2799
2793 $widget->{w} = $w; 2800 $widget->{w} = $w;
2794 $widget->{h} = $h; 2801 $widget->{h} = $h;
2795 $widget->size_allocate ($w, $h); 2802 $widget->size_allocate ($w, $h);
2796 $widget->emit (size_allocate => $w, $h); 2803 $widget->emit (size_allocate => $w, $h);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines