diff --git a/src/roster_window.py b/src/roster_window.py
index ed55f26f6ac3d771f231d23a548ba22e4a03bf63..e4add06e5bddaf22dac73426ad1fe77464d60403 100644
--- a/src/roster_window.py
+++ b/src/roster_window.py
@@ -465,11 +465,19 @@ class RosterWindow:
 
 		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)