summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core.py7
-rw-r--r--src/tabs.py4
2 files changed, 6 insertions, 5 deletions
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)