From 1377aa875cfe80937097ac74b7cccf33ea59c984 Mon Sep 17 00:00:00 2001
From: Yann Leboulanger <asterix@lagaule.org>
Date: Tue, 21 Nov 2006 20:07:18 +0000
Subject: [PATCH] count events from other resources to decide if we must remove
 contact from roster or not. see #2657

---
 src/roster_window.py | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/roster_window.py b/src/roster_window.py
index ed55f26f6a..e4add06e5b 100644
--- a/src/roster_window.py
+++ b/src/roster_window.py
@@ -465,11 +465,19 @@ def really_remove_contact(self, contact, account):
 
 		show_offline = gajim.config.get('showoffline')
 		show_transports = gajim.config.get('show_transports_group')
+
+		nb_events = 0
+		jid_list = [contact.jid]
+		if contact.get_full_jid() != contact.jid:
+			jid_list.append(contact.get_full_jid())
+		for jid in jid_list:
+			# dont't count printed_chat messages
+			nb_events += gajim.events.get_nb_roster_events(account, jid, ['chat'])
+
 		if (_('Transports') in contact.groups and not show_transports) or \
 		((contact.show in ('offline', 'error') or hide) and not show_offline and \
 		(not _('Transports') in contact.groups or \
-		gajim.account_is_disconnected(account))) and \
-		len(gajim.events.get_events(account, contact.jid, ['chat'])) == 0:
+		gajim.account_is_disconnected(account))) and nb_events == 0:
 			self.remove_contact(contact, account)
 		else:
 			self.draw_contact(contact.jid, account)
-- 
GitLab