From 8fe892a068d5b5b61b8d450cc496c895b897a6e2 Mon Sep 17 00:00:00 2001
From: Yann Leboulanger <asterix@lagaule.org>
Date: Tue, 16 Jul 2013 18:03:58 +0200
Subject: [PATCH] don't redraw roster line when it's not necessary

---
 src/gui_interface.py | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/gui_interface.py b/src/gui_interface.py
index c2287161a4..5c0f4dcb0d 100644
--- a/src/gui_interface.py
+++ b/src/gui_interface.py
@@ -788,21 +788,24 @@ class Interface:
                 # another of our instance removed a contact. Remove it here too
                 self.roster.remove_contact(obj.jid, account, backend=True)
                 return
+            update = False
             if contacts[0].sub != obj.sub or contacts[0].ask != obj.ask\
             or old_groups != obj.groups:
                 # c.get_shown_groups() has changed. Reflect that in
                 # roster_window
                 self.roster.remove_contact(obj.jid, account, force=True)
+                update = True
             for contact in contacts:
                 contact.name = obj.nickname or ''
                 contact.sub = obj.sub
                 contact.ask = obj.ask
                 contact.groups = obj.groups or []
-            self.roster.add_contact(obj.jid, account)
-            # Refilter and update old groups
-            for group in old_groups:
-                self.roster.draw_group(group, account)
-            self.roster.draw_contact(obj.jid, account)
+            if update:
+                self.roster.add_contact(obj.jid, account)
+                # Refilter and update old groups
+                for group in old_groups:
+                    self.roster.draw_group(group, account)
+                self.roster.draw_contact(obj.jid, account)
         if obj.jid in self.instances[account]['sub_request'] and obj.sub in (
         'from', 'both'):
             self.instances[account]['sub_request'][obj.jid].window.destroy()
-- 
GitLab