… | |
… | |
92 | scale => 0.3, |
92 | scale => 0.3, |
93 | ) |
93 | ) |
94 | ); |
94 | ); |
95 | $b->connect (activate => sub { |
95 | $b->connect (activate => sub { |
96 | my $b = shift; |
96 | my $b = shift; |
97 | |
97 | $self->close_chatview ($cv); |
98 | my @chld = $nb->pages; |
|
|
99 | my $cur = pop @chld; |
|
|
100 | while (@chld && $cur != $cv) { |
|
|
101 | $cur = pop @chld; |
|
|
102 | } |
|
|
103 | $cur = pop @chld; |
|
|
104 | $nb->remove ($cv); |
|
|
105 | $nb->set_current_page ($cur); |
|
|
106 | |
|
|
107 | delete $chatviews->{$id}; |
|
|
108 | 0 |
98 | 0 |
109 | }); |
99 | }); |
110 | |
100 | |
111 | my $preadd = $nb->get_current_page; |
101 | my $preadd = $nb->get_current_page; |
112 | $nb->add ($cv); |
102 | $nb->add ($cv); |
113 | $nb->set_current_page ($preadd); |
103 | $nb->set_current_page ($preadd); |
114 | } |
104 | } |
115 | |
105 | |
|
|
106 | sub close_chatview { |
|
|
107 | my ($self, $cv) = @_; |
|
|
108 | return unless defined $cv->{_chat_id}; |
|
|
109 | |
|
|
110 | my $chatviews = $self->{chatviews}; |
|
|
111 | my $nb = $self->{nb}; |
|
|
112 | my @chld = $nb->pages; |
|
|
113 | my $cur = pop @chld; |
|
|
114 | while (@chld && $cur != $cv) { |
|
|
115 | $cur = pop @chld; |
|
|
116 | } |
|
|
117 | $cur = pop @chld; |
|
|
118 | $nb->remove ($cv); |
|
|
119 | $nb->set_current_page ($cur); |
|
|
120 | |
|
|
121 | delete $chatviews->{$cv->{_chat_id}}; |
|
|
122 | } |
|
|
123 | |
116 | sub touch_channel { |
124 | sub touch_channel { |
117 | my ($self, $id) = @_; |
125 | my ($self, $id) = @_; |
118 | |
126 | |
119 | if (not exists $self->{chatviews}->{$id}) { |
127 | if (not exists $self->{chatviews}->{$id}) { |
120 | $self->add_chat ($id); |
128 | $self->add_chat ($id); |
… | |
… | |
144 | $_->{_active} = 0; |
152 | $_->{_active} = 0; |
145 | } |
153 | } |
146 | $page->{_active} = 1; |
154 | $page->{_active} = 1; |
147 | |
155 | |
148 | $self->update_tabs; |
156 | $self->update_tabs; |
|
|
157 | } |
|
|
158 | |
|
|
159 | sub close_current_tab { |
|
|
160 | my ($self) = @_; |
|
|
161 | $self->close_chatview ($self->{nb}->get_current_page); |
149 | } |
162 | } |
150 | |
163 | |
151 | sub update_tabs { |
164 | sub update_tabs { |
152 | my ($self) = @_; |
165 | my ($self) = @_; |
153 | |
166 | |