From 5794d54d1c4a554125a880b5dfc296de5fca08ab Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Philipp=20H=C3=B6rist?= <philipp@hoerist.com>
Date: Mon, 26 Mar 2018 23:47:43 +0200
Subject: [PATCH] Dont print status if it has not changed

Only print the status, if status has changed or the status message

Clients announce there idle-time with presences but adding a idle-time
does not necessarily mean they went from available -> away

Fixes #9001
---
 gajim/common/connection_handlers.py | 7 +++----
 gajim/roster_window.py              | 2 +-
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/gajim/common/connection_handlers.py b/gajim/common/connection_handlers.py
index e0835d514a..13cf4e9161 100644
--- a/gajim/common/connection_handlers.py
+++ b/gajim/common/connection_handlers.py
@@ -851,10 +851,9 @@ class ConnectionHandlersBase:
                 obj.contact.contact_name = obj.contact_nickname
                 obj.need_redraw = True
 
-            if obj.old_show == obj.new_show and obj.contact.status == \
-            obj.status and obj.contact.priority == obj.prio and \
-            obj.contact.idle_time == obj.idle_time: # no change
-                return True
+            elif obj.old_show != obj.new_show or obj.contact.status != \
+            obj.status:
+                obj.need_redraw = True
         else:
             obj.contact = app.contacts.get_first_contact_from_jid(account,
                 jid)
diff --git a/gajim/roster_window.py b/gajim/roster_window.py
index 20d649cbb7..4eea5e3ccc 100644
--- a/gajim/roster_window.py
+++ b/gajim/roster_window.py
@@ -2574,7 +2574,7 @@ class RosterWindow:
             self.draw_contact(jid, account)
             self.draw_group(_('Transports'), account)
 
-        if obj.contact:
+        if obj.contact and obj.need_redraw:
             self.chg_contact_status(obj.contact, obj.show, obj.status, account)
 
         if obj.popup:
-- 
GitLab