From 8fe892a068d5b5b61b8d450cc496c895b897a6e2 Mon Sep 17 00:00:00 2001 From: Yann Leboulanger 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 c2287161a..5c0f4dcb0 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()