From d24b3c42958f50c3979b37ab7666379d78b3fad1 Mon Sep 17 00:00:00 2001 From: mathieui Date: Mon, 12 Sep 2011 01:24:43 +0200 Subject: [PATCH] PGUP/PGDOWN on muc list (partially fixes #2165) --- src/tabs.py | 6 ++++++ src/windows.py | 22 ++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/tabs.py b/src/tabs.py index 37c5e888..0d1c5751 100644 --- a/src/tabs.py +++ b/src/tabs.py @@ -1736,6 +1736,12 @@ class MucListTab(Tab): def get_color_state(self): return self._color_state + def on_scroll_up(self): + self.listview.scroll_up() + + def on_scroll_down(self): + self.listview.scroll_down() + class SimpleTextTab(Tab): """ A very simple tab, with just a text displaying some diff --git a/src/windows.py b/src/windows.py index 89fb368c..4e464a75 100644 --- a/src/windows.py +++ b/src/windows.py @@ -1617,6 +1617,28 @@ class ListWin(Win): self._starting_pos -= self.height // 2 return True + def scroll_down(self): + if not self.lines: + return + self._selected_row += self.height + if self._selected_row > len(self.lines) - 1: + self._selected_row = len(self.lines) -1 + while self._selected_row >= self._starting_pos + self.height: + self._starting_pos += self.height // 2 + if self._starting_pos < 0: + self._starting_pos = 0 + return True + + def scroll_up(self): + if not self.lines: + return + self._selected_row -= self.height + 1 + if self._selected_row < 0: + self._selected_row = 0 + while self._selected_row < self._starting_pos: + self._starting_pos -= self.height // 2 + return True + class ColumnHeaderWin(Win): """ A class displaying the column's names