From 7d72b8089a965f18ab49e8fe4e348b35f2553bec Mon Sep 17 00:00:00 2001 From: Yann Leboulanger Date: Mon, 11 Nov 2013 13:37:16 +0100 Subject: [PATCH] improve manage bookmark jid handling. Fixes #7547 --- src/config.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/config.py b/src/config.py index 5bf05306c..588c7a5c3 100644 --- a/src/config.py +++ b/src/config.py @@ -3244,7 +3244,8 @@ class ManageBookmarksWindow: self.server_entry = self.xml.get_object('server_entry') self.server_entry.connect('changed', self.on_server_entry_changed) self.room_entry = self.xml.get_object('room_entry') - self.room_entry.connect('changed', self.on_room_entry_changed) + self.room_entry_changed_id = self.room_entry.connect('changed', + self.on_room_entry_changed) self.pass_entry = self.xml.get_object('pass_entry') self.pass_entry.connect('changed', self.on_pass_entry_changed) self.autojoin_checkbutton = self.xml.get_object('autojoin_checkbutton') @@ -3385,7 +3386,9 @@ class ManageBookmarksWindow: self.title_entry.set_text(model[iter_][1]) room_jid = model[iter_][2] (room, server) = room_jid.split('@') + self.room_entry.handler_block(self.room_entry_changed_id) self.room_entry.set_text(room) + self.room_entry.handler_unblock(self.room_entry_changed_id) self.server_entry.set_text(server) self.autojoin_checkbutton.set_active(model[iter_][3]) @@ -3437,13 +3440,17 @@ class ManageBookmarksWindow: if not iter_: return server = widget.get_text() + if not server: + return if '@' in server: dialogs.ErrorDialog(_('Invalid server'), _('Character not allowed'), transient_for=self.window) widget.set_text(server.replace('@', '')) - room_jid = self.room_entry.get_text().strip() + '@' + \ - server.strip() + room = self.room_entry.get_text().strip() + if not room: + return + room_jid = room + '@' + server.strip() try: room_jid = helpers.parse_jid(room_jid) except helpers.InvalidFormat as e: @@ -3458,14 +3465,18 @@ class ManageBookmarksWindow: if not iter_: return room = widget.get_text() + if not room: + return if '@' in room: room, server = room.split('@', 1) widget.set_text(room) if server: self.server_entry.set_text(server) self.server_entry.grab_focus() - room_jid = room.strip() + '@' + \ - self.server_entry.get_text().strip() + server = self.server_entry.get_text().strip() + if not server: + return + room_jid = room.strip() + '@' + server try: room_jid = helpers.parse_jid(room_jid) except helpers.InvalidFormat: