--- deliantra/Deliantra-Client/DC/UI.pm 2006/06/05 01:59:59 1.281 +++ deliantra/Deliantra-Client/DC/UI.pm 2006/06/05 02:25:10 1.282 @@ -1540,6 +1540,14 @@ $self->SUPER::update; } +sub realloc { + my ($self) = @_; + + delete $self->{ox}; + delete $self->{req_h}; + $self->SUPER::realloc; +} + sub set_text { my ($self, $text) = @_; @@ -1571,25 +1579,29 @@ sub size_request { my ($self) = @_; - $self->{layout}->set_font ($self->{font}) if $self->{font}; - $self->{layout}->set_width ($self->{max_w} || -1); - $self->{layout}->set_ellipsise ($self->{ellipsise}); - $self->{layout}->set_single_paragraph_mode ($self->{ellipsise}); - $self->{layout}->set_height ($self->{fontsize} * $::FONTSIZE); - - my ($w, $h) = $self->{layout}->size; - - if (exists $self->{template}) { - $self->{template}->set_font ($self->{font}) if $self->{font}; - $self->{template}->set_height ($self->{fontsize} * $::FONTSIZE); - - my ($w2, $h2) = $self->{template}->size; + if (exists $self->{req_h}) { + @$self{qw(req_w req_h)} + } else { + $self->{layout}->set_font ($self->{font}) if $self->{font}; + $self->{layout}->set_width ($self->{max_w} || -1); + $self->{layout}->set_ellipsise ($self->{ellipsise}); + $self->{layout}->set_single_paragraph_mode ($self->{ellipsise}); + $self->{layout}->set_height ($self->{fontsize} * $::FONTSIZE); + + my ($w, $h) = $self->{layout}->size; + + if (exists $self->{template}) { + $self->{template}->set_font ($self->{font}) if $self->{font}; + $self->{template}->set_height ($self->{fontsize} * $::FONTSIZE); + + my ($w2, $h2) = $self->{template}->size; + + $w = List::Util::max $w, $w2; + $h = List::Util::max $h, $h2; + } - $w = List::Util::max $w, $w2; - $h = List::Util::max $h, $h2; + ($w, $h) } - - ($w, $h) } sub size_allocate {