… | |
… | |
10 | sub new { |
10 | sub new { |
11 | my ($self, %arg) = @_; |
11 | my ($self, %arg) = @_; |
12 | $self = $self->Glib::Object::new; |
12 | $self = $self->Glib::Object::new; |
13 | $self->{$_} = delete $arg{$_} for keys %arg; |
13 | $self->{$_} = delete $arg{$_} for keys %arg; |
14 | |
14 | |
15 | $self->signal_connect (destroy => sub { %{$_[0]} = () }); |
|
|
16 | $self->signal_connect (delete_event => sub { $self->part; 1 }); |
15 | $self->signal_connect (delete_event => sub { $self->part; 1 }); |
|
|
16 | $self->signal_connect (destroy => sub { |
|
|
17 | delete $::config->{rooms}{$self->{channel}}; |
|
|
18 | delete $self->{app}{room}{$self->{channel}}; |
|
|
19 | (remove Glib::Source delete $self->{gameupdate}) if $self->{gameupdate}; |
|
|
20 | $self->unlisten; |
|
|
21 | %{$_[0]} = (); |
|
|
22 | }); |
17 | |
23 | |
18 | $self->listen ($self->{conn}, qw(msg_room:)); |
24 | $self->listen ($self->{conn}, qw(msg_room:)); |
19 | |
25 | |
20 | $self->set_title ("KGS Room $self->{name}"); |
26 | $self->set_title ("KGS Room $self->{name}"); |
21 | gtk::state $self, "room::window", $self->{name}, window_size => [600, 400]; |
27 | gtk::state $self, "room::window", $self->{name}, window_size => [600, 400]; |
… | |
… | |
88 | } |
94 | } |
89 | |
95 | |
90 | sub event_part { |
96 | sub event_part { |
91 | my ($self) = @_; |
97 | my ($self) = @_; |
92 | |
98 | |
93 | delete $::config->{rooms}{$self->{channel}}; |
|
|
94 | delete $self->{app}{room}{$self->{channel}}; |
|
|
95 | (remove Glib::Source delete $self->{gameupdate}) if $self->{gameupdate}; |
|
|
96 | $self->unlisten; |
|
|
97 | |
|
|
98 | $self->SUPER::event_part; |
99 | $self->SUPER::event_part; |
99 | |
|
|
100 | $self->destroy; |
100 | $self->destroy; |
101 | } |
101 | } |
102 | |
102 | |
103 | sub event_update_roominfo { |
103 | sub event_update_roominfo { |
104 | my ($self) = @_; |
104 | my ($self) = @_; |