changeset 78329bf987b5 in /home/hg/repos/gajim
details:http://hg.gajim.org/gajim?cmd=changeset;node=78329bf987b5 description: don't open twice the same subscription request dialog. see #6762
diffstat:
data/gui/subscription_request_window.ui | 1 + src/config.py | 8 +++++--- src/dialogs.py | 8 ++++++++ src/gui_interface.py | 7 +++++-- test/lib/gajim_mocks.py | 2 +- 5 files changed, 20 insertions(+), 6 deletions(-)
diffs (97 lines):
diff -r 70efaf361698 -r 78329bf987b5 data/gui/subscription_request_window.ui --- a/data/gui/subscription_request_window.ui Mon May 23 19:03:50 2011 +0200 +++ b/data/gui/subscription_request_window.ui Mon May 23 22:35:19 2011 +0200 @@ -6,6 +6,7 @@ <property name="border_width">12</property> <property name="title" translatable="yes">Subscription Request</property> <property name="type_hint">dialog</property> + <signal name="destroy" handler="on_subscription_request_window_destroy"/> <child> <object class="GtkVBox" id="vbox10"> <property name="visible">True</property> diff -r 70efaf361698 -r 78329bf987b5 src/config.py --- a/src/config.py Mon May 23 19:03:50 2011 +0200 +++ b/src/config.py Mon May 23 22:35:19 2011 +0200 @@ -2041,7 +2041,7 @@ gajim.interface.msg_win_mgr.change_account_name(old_name, new_name) # upgrade account variable in opened windows for kind in ('infos', 'disco', 'gc_config', 'search', - 'online_dialog'): + 'online_dialog', 'sub_request'): for j in gajim.interface.instances[new_name][kind]: gajim.interface.instances[new_name][kind][j].account = \ new_name @@ -2478,7 +2478,8 @@ self.init_account_gpg() # update variables gajim.interface.instances[account] = {'infos': {}, - 'disco': {}, 'gc_config': {}, 'search': {}, 'online_dialog': {}} + 'disco': {}, 'gc_config': {}, 'search': {}, 'online_dialog': {}, + 'sub_request': {}} gajim.interface.minimized_controls[account] = {} gajim.connections[account].connected = 0 gajim.groups[account] = {} @@ -3914,7 +3915,8 @@
# update variables gajim.interface.instances[self.account] = {'infos': {}, 'disco': {}, - 'gc_config': {}, 'search': {}, 'online_dialog': {}} + 'gc_config': {}, 'search': {}, 'online_dialog': {}, + 'sub_request': {}} gajim.interface.minimized_controls[self.account] = {} gajim.connections[self.account].connected = 0 gajim.connections[self.account].keepalives = gajim.config.get_per( diff -r 70efaf361698 -r 78329bf987b5 src/dialogs.py --- a/src/dialogs.py Mon May 23 19:03:50 2011 +0200 +++ b/src/dialogs.py Mon May 23 22:35:19 2011 +0200 @@ -2061,6 +2061,14 @@ xml.connect_signals(self) self.window.show_all()
+ def on_subscription_request_window_destroy(self, widget): + """ + Close window + """ + if self.jid in gajim.interface.instances[self.account]['sub_request']: + # remove us from open windows + del gajim.interface.instances[self.account]['sub_request'][self.jid] + def prepare_popup_menu(self): xml = gtkgui_helpers.get_gtk_builder('subscription_request_popup_menu.ui') menu = xml.get_object('subscription_request_popup_menu') diff -r 70efaf361698 -r 78329bf987b5 src/gui_interface.py --- a/src/gui_interface.py Mon May 23 19:03:50 2011 +0200 +++ b/src/gui_interface.py Mon May 23 22:35:19 2011 +0200 @@ -652,7 +652,10 @@ text = array[1] nick = array[2] if helpers.allow_popup_window(account) or not self.systray_enabled: - dialogs.SubscriptionRequestWindow(jid, text, account, nick) + if jid in self.instances[account]['sub_request']: + self.instances[account]['sub_request'][jid].window.destroy() + self.instances[account]['sub_request'][jid] = \ + dialogs.SubscriptionRequestWindow(jid, text, account, nick) return
self.add_event(account, jid, 'subscription_request', (text, nick)) @@ -3448,7 +3451,7 @@
for a in gajim.connections: self.instances[a] = {'infos': {}, 'disco': {}, 'gc_config': {}, - 'search': {}, 'online_dialog': {}} + 'search': {}, 'online_dialog': {}, 'sub_request': {}} # online_dialog contains all dialogs that have a meaning only when # we are not disconnected self.minimized_controls[a] = {} diff -r 70efaf361698 -r 78329bf987b5 test/lib/gajim_mocks.py --- a/test/lib/gajim_mocks.py Mon May 23 19:03:50 2011 +0200 +++ b/test/lib/gajim_mocks.py Mon May 23 22:35:19 2011 +0200 @@ -20,7 +20,7 @@ self.sessions = {}
gajim.interface.instances[account] = {'infos': {}, 'disco': {}, - 'gc_config': {}, 'search': {}} + 'gc_config': {}, 'search': {}, 'sub_request': {}} gajim.interface.minimized_controls[account] = {} gajim.contacts.add_account(account) gajim.groups[account] = {}