--- deliantra/Deliantra-Client/DC/UI.pm 2006/06/05 21:14:40 1.288 +++ deliantra/Deliantra-Client/DC/UI.pm 2006/06/05 21:43:56 1.289 @@ -528,10 +528,6 @@ sub reconfigure { my ($self) = @_; - # some widgets cache req_w and req_h - delete $self->{req_w}; - delete $self->{req_h}; - $self->realloc; $self->update; } @@ -1561,7 +1557,7 @@ $self->{layout} = new CFClient::Layout if $self->{layout}->is_rgba; $self->{layout}->set_text ($text); - delete $self->{req_h}; + delete $self->{size_req}; $self->realloc; $self->update; } @@ -1577,7 +1573,7 @@ $self->{layout} = new CFClient::Layout $rgba if $self->{layout}->is_rgba != $rgba; $self->{layout}->set_markup ($markup); - delete $self->{req_h}; + delete $self->{size_req}; $self->realloc; $self->update; } @@ -1585,9 +1581,7 @@ sub size_request { my ($self) = @_; - if (exists $self->{req_h}) { - @$self{qw(req_w req_h)} - } else { + $self->{size_req} ||= do { $self->{layout}->set_font ($self->{font}) if $self->{font}; $self->{layout}->set_width ($self->{max_w} || -1); $self->{layout}->set_ellipsise ($self->{ellipsise}); @@ -1606,8 +1600,10 @@ $h = List::Util::max $h, $h2; } - ($w, $h) - } + [$w, $h] + }; + + @{ $self->{size_req} } } sub size_allocate { @@ -1628,6 +1624,14 @@ $self->realloc; } +sub reconfigure { + my ($self) = @_; + + delete $self->{size_req}; + + $self->SUPER::reconfigure; +} + sub _draw { my ($self) = @_; @@ -1705,7 +1709,7 @@ $text =~ s/./*/g if $self->{hidden}; $self->{layout}->set_text ("$text "); - delete $self->{req_h}; + delete $self->{size_req}; $self->_emit (changed => $self->{text});