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