Daniel Brötzmann pushed to branch mainwindow at gajim / gajim


Commits:
6fcd96b2 by wurstsalat at 2021-10-30T19:11:12+02:00
ConversationView: Show read marker row when loading from DB

- - - - -
3674f117 by wurstsalat at 2021-10-30T19:13:56+02:00
ChatStack: Reset ConversationView when switching Control

- - - - -


3 changed files:

- gajim/gtk/chat_stack.py
- gajim/gtk/controls/base.py
- gajim/gtk/conversation/view.py


Changes:

=====================================
gajim/gtk/chat_stack.py
=====================================
@@ -46,6 +46,7 @@ def __init__(self):
 
         self.show_all()
         self._controls = {}
+        self._active_control = None
 
     def get_control(self, account, jid):
         try:
@@ -96,6 +97,10 @@ def remove_chat(self, account, jid):
     def show_chat(self, account, jid):
         self.set_visible_child_name(f'{account}:{jid}')
         control = self.get_control(account, jid)
+        if control != self._active_control:
+            if self._active_control is not None:
+                self._active_control.reset_view()
+        self._active_control = control
         GLib.idle_add(control.focus)
 
     def clear(self):


=====================================
gajim/gtk/controls/base.py
=====================================
@@ -1107,7 +1107,10 @@ def add_message(self,
         if additional_data is None:
             additional_data = AdditionalDataDict()
 
-        if self._scrolled_view.get_lower_complete():
+        chat_active = app.window.is_chat_active(
+            self.account, self.contact.jid)
+
+        if self._scrolled_view.get_lower_complete() and chat_active:
             self.conversation_view.add_message(
                 text,
                 kind,
@@ -1141,8 +1144,6 @@ def add_message(self,
             self._notify(name, text, tim)
 
             # Send chat marker if we’re actively following the chat
-            chat_active = app.window.is_chat_active(
-                self.account, self.contact.jid)
             if chat_active and self._scrolled_view.get_autoscroll():
                 app.window.mark_as_read(self.account, self.contact.jid)
 
@@ -1279,6 +1280,9 @@ def set_control_active(self, state):
             self._client.get_module('Chatstate').set_chatstate(
                 self.contact, Chatstate.INACTIVE)
 
+    def reset_view(self):
+        self.conversation_view.clear()
+
     def get_autoscroll(self):
         return self._scrolled_view.get_autoscroll()
 


=====================================
gajim/gtk/conversation/view.py
=====================================
@@ -117,6 +117,8 @@ def unlock(self):
 
     def clear(self):
         for row in self.get_children()[2:]:
+            if row.type == 'read_marker':
+                continue
             self.remove(row)
         self._reset_conversation_view()
 
@@ -240,8 +242,9 @@ def add_message(self,
             log_line_id=log_line_id)
 
         if message.type == 'chat':
-            self._message_id_row_map[message.message_id] = message
-
+            self._message_id_row_map[message_id] = message
+            if marker is not None and marker == 'displayed':
+                self.set_read_marker(message_id)
         self._insert_message(message)
 
     def _insert_message(self, message):
@@ -249,7 +252,8 @@ def _insert_message(self, message):
         self._add_date_row(message.timestamp)
         self._check_for_merge(message)
         if message.kind == 'incoming':
-            self.set_read_marker(None)
+            if message.timestamp > self._read_marker_row.timestamp:
+                self._read_marker_row.hide()
         GLib.idle_add(message.queue_resize)
 
     def _add_date_row(self, timestamp):
@@ -407,7 +411,6 @@ def update_call_rows(self):
 
     def set_read_marker(self, id_):
         if id_ is None:
-            self._read_marker_row.hide()
             return
 
         row = self._get_row_by_message_id(id_)
@@ -417,6 +420,9 @@ def set_read_marker(self, id_):
         row.set_displayed()
 
         timestamp = row.timestamp + timedelta(microseconds=1)
+        if self._read_marker_row.timestamp > timestamp:
+            return
+
         self._read_marker_row.set_timestamp(timestamp)
 
     def update_avatars(self):



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/compare/d54031adadeb7f8de39e2bb9067fe4cde60c24bf...3674f117b90c2201298498a044effa1082963386

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/compare/d54031adadeb7f8de39e2bb9067fe4cde60c24bf...3674f117b90c2201298498a044effa1082963386
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to