diff options
-rw-r--r-- | src/gui.py | 4 | ||||
-rw-r--r-- | src/room.py | 10 | ||||
-rw-r--r-- | src/window.py | 4 |
3 files changed, 10 insertions, 8 deletions
@@ -321,11 +321,11 @@ class Gui(object): self.refresh_window() def scroll_page_down(self, args=None): - self.current_room().scroll_down() + self.current_room().scroll_down(self.window.text_win.height-1) self.refresh_window() def scroll_page_up(self, args=None): - self.current_room().scroll_up(self.window.size) + self.current_room().scroll_up(self.window.text_win.height-1) self.refresh_window() def room_error(self, room, error, msg): diff --git a/src/room.py b/src/room.py index b7cb8ed3..0863b209 100644 --- a/src/room.py +++ b/src/room.py @@ -42,13 +42,11 @@ class Room(object): self.window = window self.pos = 0 # offset - def scroll_up(self, y_x, dist=14): - y, x = y_x - if len(self.messages) <= y: - return + def scroll_up(self, dist=14): + # The pos can grow a lot over the top of the number of + # available lines, it will be fixed on the next refresh of the + # screen anyway self.pos += dist - if self.pos + y >= len(self.messages): - self.pos = len(self.messages) - y+3 def scroll_down(self, dist=14): self.pos -= dist diff --git a/src/window.py b/src/window.py index f50d8c08..fd3179ac 100644 --- a/src/window.py +++ b/src/window.py @@ -264,6 +264,10 @@ class TextWin(Win): # else: # messages = room.messages[-self.height:] lines = self.build_lines_from_messages(room.messages) + if room.pos + self.height > len(lines): + room.pos = len(lines) - self.height + if room.pos < 0: + room.pos = 0 if room.pos != 0: lines = lines[-self.height-room.pos:-room.pos] else: |