From ad3fd751cc4f796225148a4ceb2e2eb1a6edfd04 Mon Sep 17 00:00:00 2001 From: Sebastian Lohff Date: Fri, 1 Feb 2019 18:46:09 +0100 Subject: [PATCH] Move cursor along with selection for scrolling --- clintermission/climenu.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/clintermission/climenu.py b/clintermission/climenu.py index 491859d..1ff703c 100644 --- a/clintermission/climenu.py +++ b/clintermission/climenu.py @@ -157,6 +157,10 @@ class CliMenu: while True: self._pos = (self._pos + direction) % len(self._items) + + # move cursor of buffer along with the selected option + self._buf.cursor_position = self._doc.translate_row_col_to_index(self._pos, 0) + if self._items[self._pos].focusable: break @@ -188,10 +192,6 @@ class CliMenu: self._success = True event.app.exit() - # set initial pos - if not self._items[self._pos].focusable: - self.next_item(1) - text = '\n'.join(map(lambda _x: _x.text, self._items)) self._doc = Document(text, cursor_position=self._pos) self._buf = Buffer(read_only=True, document=self._doc) @@ -200,6 +200,11 @@ class CliMenu: split = HSplit([Window(self._bufctrl, wrap_lines=True, always_hide_cursor=True)]) + + # set initial pos + if not self._items[self._pos].focusable: + self.next_item(1) + app = Application(layout=Layout(split), key_bindings=self._kb, full_screen=False,