changeset 1aece07e41a9 in /home/hg/repos/gajim

details:http://hg.gajim.org/gajim?cmd=changeset;node=1aece07e41a9
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 d84fab330dc2 -r 1aece07e41a9 data/gui/subscription_request_window.ui
--- a/data/gui/subscription_request_window.ui   Sun May 22 13:05:39 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 d84fab330dc2 -r 1aece07e41a9 src/config.py
--- a/src/config.py     Sun May 22 13:05:39 2011 +0200
+++ b/src/config.py     Mon May 23 22:35:19 2011 +0200
@@ -2040,7 +2040,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
@@ -2477,7 +2477,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] = {}
@@ -3926,7 +3927,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 d84fab330dc2 -r 1aece07e41a9 src/dialogs.py
--- a/src/dialogs.py    Sun May 22 13:05:39 2011 +0200
+++ b/src/dialogs.py    Mon May 23 22:35:19 2011 +0200
@@ -2165,6 +2165,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 d84fab330dc2 -r 1aece07e41a9 src/gui_interface.py
--- a/src/gui_interface.py      Sun May 22 13:05:39 2011 +0200
+++ b/src/gui_interface.py      Mon May 23 22:35:19 2011 +0200
@@ -478,7 +478,10 @@
         #('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 @@
 
         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 d84fab330dc2 -r 1aece07e41a9 test/lib/gajim_mocks.py
--- a/test/lib/gajim_mocks.py   Sun May 22 13:05:39 2011 +0200
+++ b/test/lib/gajim_mocks.py   Mon May 23 22:35:19 2011 +0200
@@ -21,7 +21,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