Mercurial > libervia-backend
changeset 2335:b226f545f67e
primitivus(chat): fixed scroll down (was broken when Primitivus had not the focus and was receiving messages)
author | Goffi <goffi@goffi.org> |
---|---|
date | Mon, 17 Jul 2017 16:20:55 +0200 |
parents | ca14e1ced3b5 |
children | a7438fe4e24d |
files | frontends/src/primitivus/chat.py |
diffstat | 1 files changed, 10 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/frontends/src/primitivus/chat.py Fri Jul 14 09:06:03 2017 +0200 +++ b/frontends/src/primitivus/chat.py Mon Jul 17 16:20:55 2017 +0200 @@ -405,6 +405,14 @@ else: return info_type in quick_chat.ROOM_USER_MOVED + def _scrollDown(self): + """scroll down message only if we are already at the bottom (minus 1)""" + current_focus = self.mess_widgets.focus_position + bottom = len(self.mess_walker) - 1 + if current_focus == bottom - 1: + self.mess_widgets.focus_position = bottom # scroll down + self.host.redraw() # FIXME: should not be necessary + def appendMessage(self, message): """Create a MessageWidget and append it @@ -442,6 +450,7 @@ self.focus_marker = urwid.Divider('—') self.mess_walker.append(self.focus_marker) self.focus_marker_set = True + self._scrollDown() else: if self.focus_marker_set: self.focus_marker_set = False @@ -451,11 +460,7 @@ else: wid = MessageWidget(message) self.mess_walker.append(wid) - current_focus = self.mess_widgets.focus_position - bottom = len(self.mess_walker) - 1 - if current_focus == bottom - 1: - self.mess_widgets.focus_position = bottom # scroll down - self.host.redraw() # FIXME: should not be necessary + self._scrollDown() if self._user_moved(message): return # no notification for moved messages