diff --git a/src/core.py b/src/core.py index 70781ebf..05ae2cb1 100644 --- a/src/core.py +++ b/src/core.py @@ -1505,14 +1505,15 @@ class Core(object): self.information_win.refresh() self.current_tab().input.refresh() - def disconnect(self, msg=None, reconnect=False): + def disconnect(self, msg='', reconnect=False): """ Disconnect from remote server and correctly set the states of all parts of the client (for example, set the MucTabs as not joined, etc) """ + msg = msg or '' for tab in self.tabs: - if isinstance(tab, tabs.MucTab): - muc.leave_groupchat(self.xmpp, tab.name, tab.own_nick, msg) + if isinstance(tab, tabs.MucTab) and tab.joined: + tab.command_part(msg) roster.empty() self.save_config() # Ugly fix thanks to gmail servers diff --git a/src/tabs.py b/src/tabs.py index 4276e163..43dcb2b9 100644 --- a/src/tabs.py +++ b/src/tabs.py @@ -570,9 +570,9 @@ class MucTab(ChatTab): msg = None if self.joined: muc.leave_groupchat(self.core.xmpp, self.name, self.own_nick, arg) - self.joined = False self.add_message(_("\x195}You left the chatroom\x193}")) - self.refresh() + if self == self.core.current_tab(): + self.refresh() self.core.doupdate() self.core.disable_private_tabs(self.name)