--- deliantra/Deliantra-Client/DC/UI.pm 2006/05/17 10:33:03 1.211 +++ deliantra/Deliantra-Client/DC/UI.pm 2006/05/17 14:55:14 1.212 @@ -2520,16 +2520,13 @@ our @ISA = CFClient::UI::HBox::; -sub new { - my $class = shift; +sub _item_to_desc { + my ($item) = @_; - my %args = @_; - - my $item = delete $args{item}; - - my $desc = $item->{nrof} < 2 - ? $item->{name} - : "$item->{nrof} $item->{name_pl}"; + my $desc = + $item->{nrof} < 2 + ? $item->{name} + : "$item->{nrof} $item->{name_pl}"; $item->{flags} & Crossfire::Protocol::F_OPEN and $desc .= " (open)"; @@ -2546,6 +2543,18 @@ $item->{flags} & Crossfire::Protocol::F_LOCKED and $desc .= " *"; + $desc +} + +sub new { + my $class = shift; + + my %args = @_; + + my $item = delete $args{item}; + + my $desc = _item_to_desc ($item); + my $self = $class->SUPER::new ( can_hover => 1, can_events => 1, @@ -2585,6 +2594,7 @@ %args ); + $self->add (new CFClient::UI::Face can_events => 0, face => $item->{face}, @@ -2592,14 +2602,23 @@ animspeed => $item->{animspeed}, ); - $self->add (new CFClient::UI::Label - can_events => 0, - text => $desc, - ); + $self->add ($self->{name_lbl} = new CFClient::UI::Label can_events => 0); + + $self->{item} = $item; + + $self->update_item; $self } +sub update_item { + my ($self) = @_; + + my $desc = _item_to_desc ($self->{item}); + + $self->{name_lbl}->set_text ($desc); +} + ############################################################################# package CFClient::UI::Inventory; @@ -2631,11 +2650,8 @@ $self->{real_items} = \@items; for my $item (@items) { - my $desc = $item->{nrof} < 2 - ? $item->{name} - : "$item->{nrof} $item->{name_pl}"; - $item = $item->{widget} ||= new CFClient::UI::InventoryItem item => $item; + $item->update_item (); } $self->{scrolled}->add (@items);