From 5ea5309035e8ae6fa1ab6f2eadb97f8e2f1a1ef9 Mon Sep 17 00:00:00 2001 From: Yann Leboulanger Date: Thu, 25 Mar 2010 19:52:27 +0100 Subject: [PATCH] don't send change_nick presnece (without NS_MUC) after a nick conflict --- src/dialogs.py | 20 +++++++++++++------- src/groupchat_control.py | 4 ++-- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/dialogs.py b/src/dialogs.py index e125b648c..a15fc6fd3 100644 --- a/src/dialogs.py +++ b/src/dialogs.py @@ -1870,10 +1870,15 @@ class ChangeNickDialog(InputDialogCheck): Class for changing room nickname in case of conflict """ - def __init__(self, account, room_jid, title, prompt, check_text=None): + def __init__(self, account, room_jid, title, prompt, check_text=None, + change_nick=False): + """ + change_nick must be set to True when we are already occupant of the room + and we are changing our nick + """ InputDialogCheck.__init__(self, title, '', checktext=check_text, input_str='', is_modal=True, ok_handler=None, cancel_handler=None) - self.room_queue = [(account, room_jid, prompt)] + self.room_queue = [(account, room_jid, prompt, change_nick)] self.check_next() def on_input_dialog_delete_event(self, widget, event): @@ -1902,7 +1907,8 @@ class ChangeNickDialog(InputDialogCheck): if 'change_nick_dialog' in gajim.interface.instances: del gajim.interface.instances['change_nick_dialog'] return - self.account, self.room_jid, self.prompt = self.room_queue.pop(0) + self.account, self.room_jid, self.prompt, self.change_nick = \ + self.room_queue.pop(0) self.setup_dialog() if gajim.new_room_nick is not None and not gajim.gc_connected[ @@ -1931,7 +1937,7 @@ class ChangeNickDialog(InputDialogCheck): if is_checked: gajim.new_room_nick = nick gajim.connections[self.account].join_gc(nick, self.room_jid, None, - change_nick=True) + change_nick=self.change_nick) if gajim.gc_connected[self.account][self.room_jid]: # We are changing nick, we will change self.nick when we receive # presence that inform that it works @@ -1946,9 +1952,9 @@ class ChangeNickDialog(InputDialogCheck): self.gc_control.new_nick = '' self.check_next() - def add_room(self, account, room_jid, prompt): - if (account, room_jid, prompt) not in self.room_queue: - self.room_queue.append((account, room_jid, prompt)) + def add_room(self, account, room_jid, prompt, change_nick=False): + if (account, room_jid, prompt, change_nick) not in self.room_queue: + self.room_queue.append((account, room_jid, prompt, change_nick)) class InputTextDialog(CommonInputDialog): """ diff --git a/src/groupchat_control.py b/src/groupchat_control.py index ec987f975..a7b09c43a 100644 --- a/src/groupchat_control.py +++ b/src/groupchat_control.py @@ -1735,8 +1735,8 @@ class GroupchatControl(ChatControlBase): title = _('Changing Nickname') prompt = _('Please specify the new nickname you want to use:') gajim.interface.instances['change_nick_dialog'] = \ - dialogs.ChangeNickDialog(self.account, self.room_jid, title, - prompt) + dialogs.ChangeNickDialog(self.account, self.room_jid, title, + prompt, change_nick=True) def _on_configure_room_menuitem_activate(self, widget): c = gajim.contacts.get_gc_contact(self.account, self.room_jid, self.nick)