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

Comparing deliantra/Deliantra-Client/DC/Protocol.pm (file contents):
Revision 1.124 by root, Fri Jul 20 16:32:04 2007 UTC vs.
Revision 1.127 by root, Mon Jul 23 15:30:45 2007 UTC

209 my ($arg) = @_; 209 my ($arg) = @_;
210 210
211 my $w = $self->{widget}{$arg->{id}} 211 my $w = $self->{widget}{$arg->{id}}
212 or return; 212 or return;
213 213
214 $w->{$arg->{name}} = $arg->{value}; 214 my $attr = $arg->{attr};
215
216 for (my $i = 0; $i < $#$attr; $i += 2) {
217 my ($member, $value) = @$attr[$i, $i+1];
218 if (defined $value) {
219 $w->{$member} = $value;
220 } else {
221 delete $w->{$member};
222 }
223 $w->{parent}->realloc if $member =~ /^c_/ && $w->{visible};
224 }
215 }); 225 });
216 226
217 # widget get 227 # widget get
218 $self->connect_ext (w_g => sub { 228 $self->connect_ext (w_g => sub {
219 my ($arg) = @_; 229 my ($arg) = @_;
220 230
221 my $w = $self->{widget}{$arg->{id}} 231 my $w = $self->{widget}{$arg->{id}}
222 or return; 232 or return;
223 233
224 $self->send_exti_msg (w_r => rid => $arg->{rid}, res => [$w->{$arg->{name}}]); 234 $self->send_exti_msg (w_r => rid => $arg->{rid}, res => [map $w->{$_}, @{$arg->{attr}}]);
225 }); 235 });
226 236
227 # destroy widgets on logout 237 # destroy widgets on logout
228 $self->{on_stop_game_guard} = $self->{map_widget}{root}->connect (stop_game => sub { 238 $self->{on_stop_game_guard} = $self->{map_widget}{root}->connect (stop_game => sub {
229 for my $ws (values %{delete $self->{widgetset} || {}}) { 239 for my $ws (values %{delete $self->{widgetset} || {}}) {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines