home · contact · privacy
Simplify LogBuffer.scroll* API.
authorChristian Heller <c.heller@plomlompom.de>
Sun, 1 Jun 2025 13:55:19 +0000 (15:55 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Sun, 1 Jun 2025 13:55:19 +0000 (15:55 +0200)
ircplom.py

index fc20c1bbb4cddb3c39d05c50c0873ca74d79fa0f..f52fbe037f71f9e0a15c030f13b76b63bbba2a78 100755 (executable)
@@ -408,25 +408,17 @@ class LogBuffer:
             self._upscroll_history += 1
             self._upscroll_wrapped += n_wrapped
 
-    def _calc_upscroll_history(self) -> None:
+    def scroll(self, up=True) -> None:
+        'Scrolls view down by half of display size.'
+        self._upscroll_wrapped = (
+                min(len(self._wrapped[self._display_size.y:]) - 2,
+                    self._upscroll_wrapped + self._y_pgscroll)
+                if up else max(0, self._upscroll_wrapped - self._y_pgscroll))
         self._upscroll_history = 0
         if self._upscroll_wrapped:
             idx_lowest = self._wrapped[-(self._upscroll_wrapped + 1)][0]
             self._upscroll_history = len(self._history) - (idx_lowest + 1)
 
-    def scroll_up(self) -> None:
-        'Scrolls view up by half of display size.'
-        self._upscroll_wrapped = min(
-                len(self._wrapped[self._display_size.y:]) - 2,
-                self._upscroll_wrapped + self._y_pgscroll)
-        self._calc_upscroll_history()
-
-    def scroll_down(self) -> None:
-        'Scrolls view down by half of display size.'
-        self._upscroll_wrapped = max(0,
-                                     self._upscroll_wrapped - self._y_pgscroll)
-        self._calc_upscroll_history()
-
     @property
     def wrapped(self) -> list[str]:
         'Returns display_size/scroll-appropriately wrapped selection of lines.'
@@ -523,11 +515,11 @@ class TuiLoop(Loop):
         self._draw_prompt()
 
     def _cmd__scroll_up(self) -> None:
-        self._log.scroll_up()
+        self._log.scroll()
         self._draw_log()
 
     def _cmd__scroll_down(self) -> None:
-        self._log.scroll_down()
+        self._log.scroll(up=False)
         self._draw_log()
 
     def _cmd__disconnect(self, quit_msg: str = 'ircplom says bye') -> None: