From e322b0700c2d8d771af1ab60623ad955dafdcbe0 Mon Sep 17 00:00:00 2001 From: lovetox <philipp@hoerist.com> Date: Sun, 4 Apr 2021 17:50:50 +0200 Subject: [PATCH] Fix completion state --- gajim/chat_control_base.py | 2 +- gajim/gtk/conversation/rows/scroll_hint.py | 17 ++++++++++------- gajim/gtk/conversation/scrolled.py | 13 ++++++++----- gajim/gtk/conversation/view.py | 16 +++++++++------- 4 files changed, 28 insertions(+), 20 deletions(-) diff --git a/gajim/chat_control_base.py b/gajim/chat_control_base.py index 617f9b4143..7bf19ea766 100644 --- a/gajim/chat_control_base.py +++ b/gajim/chat_control_base.py @@ -1412,7 +1412,7 @@ def fetch_n_lines_history(self, _scrolled, n_lines): n_lines) if not messages: - self._scrolled_view.set_history_complete() + self._scrolled_view.set_history_complete(True) return for msg in messages: diff --git a/gajim/gtk/conversation/rows/scroll_hint.py b/gajim/gtk/conversation/rows/scroll_hint.py index 3fdbf2ca9a..e68326d133 100644 --- a/gajim/gtk/conversation/rows/scroll_hint.py +++ b/gajim/gtk/conversation/rows/scroll_hint.py @@ -29,6 +29,7 @@ def __init__(self, account, history_mode=False): self.type = 'system' self.timestamp = datetime.fromtimestamp(0) + self._history_mode = history_mode self.get_style_context().add_class('conversation-system-row') @@ -36,14 +37,16 @@ def __init__(self, account, history_mode=False): self.label.set_hexpand(True) self.label.get_style_context().add_class( 'conversation-meta') + self.grid.attach(self.label, 0, 1, 1, 1) + + self.set_history_complete(False) - if history_mode: + def set_history_complete(self, complete): + if self._history_mode: self.label.set_text(_('Use the calendar to select a specific date')) - self.grid.attach(self.label, 0, 1, 1, 1) return - self.label.set_text(_('Scroll up to load more chat history…')) - self.grid.attach(self.label, 0, 1, 1, 1) - - def set_history_complete(self): - self.label.set_text(_('There is no more history')) + if complete: + self.label.set_text(_('There is no more history')) + else: + self.label.set_text(_('Scroll up to load more chat history…')) diff --git a/gajim/gtk/conversation/scrolled.py b/gajim/gtk/conversation/scrolled.py index b57c8b98db..d8c396c9ff 100644 --- a/gajim/gtk/conversation/scrolled.py +++ b/gajim/gtk/conversation/scrolled.py @@ -56,13 +56,15 @@ def __init__(self, *args, **kwargs): vadjustment.connect('notify::upper', self._on_adj_upper_changed) vadjustment.connect('notify::value', self._on_adj_value_changed) - @property - def autoscroll(self): + def get_autoscroll(self): return self._autoscroll - def set_history_complete(self): - self._complete = True - self.get_child().get_child().set_history_complete() + def get_view(self): + return self.get_child().get_child() + + def set_history_complete(self, complete): + self._complete = complete + self.get_view().set_history_complete(complete) def _on_adj_upper_changed(self, adj, *args): upper = adj.get_upper() @@ -72,6 +74,7 @@ def _on_adj_upper_changed(self, adj, *args): self._current_upper = upper if self._autoscroll: adj.set_value(adj.get_upper() - adj.get_page_size()) + else: # Workaround # https://gitlab.gnome.org/GNOME/gtk/merge_requests/395 diff --git a/gajim/gtk/conversation/view.py b/gajim/gtk/conversation/view.py index 5d23b08e03..6ad58f154a 100644 --- a/gajim/gtk/conversation/view.py +++ b/gajim/gtk/conversation/view.py @@ -108,8 +108,8 @@ def get_first_message_row(self): return row return None - def set_history_complete(self): - self._scroll_hint_row.set_history_complete() + def set_history_complete(self, complete): + self._scroll_hint_row.set_history_complete(complete) def _reset_conversation_view(self): self._first_date = None @@ -203,10 +203,6 @@ def add_message(self, self._insert_message(message, kind, history) - # Check for maximum message count - # if self.autoscroll and self._row_count > self._max_row_count: - # self._reduce_message_count() - def _get_avatar(self, kind, name): scale = self.get_scale_factor() if self._contact.is_groupchat: @@ -344,7 +340,8 @@ def _is_mergeable(row1, row2): return True return False - def _reduce_message_count(self): + def reduce_message_count(self): + successful = False while self._row_count > self._max_row_count: # We want to keep relevant DateRows when removing rows row1 = self.get_row_at_index(1) @@ -354,6 +351,7 @@ def _reduce_message_count(self): # First two rows are date rows, # it’s safe to remove the fist row self.remove(row1) + successful = True self._timestamps_inserted.remove(row1.timestamp) self._first_date = row2.timestamp.strftime('%a, %d %b %Y') self._row_count -= 1 @@ -363,6 +361,7 @@ def _reduce_message_count(self): # First one is a date row, keep it and # remove the second row instead self.remove(row2) + successful = True self._timestamps_inserted.remove(row2.timestamp) if row2.message_id: self._message_ids_inserted.pop(row2.message_id) @@ -377,6 +376,7 @@ def _reduce_message_count(self): if row1.type != 'date': # Not a date row, safe to remove self.remove(row1) + successful = True self._timestamps_inserted.remove(row1.timestamp) if row1.message_id: self._message_ids_inserted.pop(row1.message_id) @@ -390,6 +390,8 @@ def _reduce_message_count(self): self.first_message_timestamp = None self._row_count -= 1 + return successful + def _get_row_by_message_id(self, id_): for row in self.get_children(): if row.message_id == id_: -- GitLab