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] = {}
_______________________________________________
Commits mailing list
[email protected]
http://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to