don't open twice the same subscription request dialog. see #6762

This commit is contained in:
Yann Leboulanger 2011-05-23 22:35:19 +02:00
parent 11442f8153
commit be942a0270
5 changed files with 20 additions and 6 deletions

View File

@ -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>

View File

@ -2040,7 +2040,7 @@ class AccountsWindow:
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
@ -2477,7 +2477,8 @@ class AccountsWindow:
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] = {}
@ -3926,7 +3927,8 @@ class AccountCreationWizardWindow:
# 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(

View File

@ -2165,6 +2165,14 @@ class SubscriptionRequestWindow:
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')

View File

@ -478,7 +478,10 @@ class Interface:
#('SUBSCRIBE', account, (jid, text, user_nick)) user_nick is JEP-0172
account = obj.conn.name
if helpers.allow_popup_window(account) or not self.systray_enabled:
dialogs.SubscriptionRequestWindow(obj.jid, obj.status, account,
if obj.jid in self.instances[account]['sub_request']:
self.instances[account]['sub_request'][obj.jid].window.destroy()
self.instances[account]['sub_request'][obj.jid] = \
dialogs.SubscriptionRequestWindow(obj.jid, obj.status, account,
obj.user_nick)
return
@ -2700,7 +2703,7 @@ class Interface:
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] = {}

View File

@ -21,7 +21,7 @@ class MockConnection(Mock, ConnectionHandlersBase):
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] = {}