From 18bbb0773792859f5540cb2a4e1c4715919d7c04 Mon Sep 17 00:00:00 2001 From: Dita Aji Pratama Date: Tue, 12 May 2026 10:12:07 +0700 Subject: [PATCH] Fix input box border rendering and layout math --- scripts/tui.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/scripts/tui.py b/scripts/tui.py index c5e5e81..f13505d 100644 --- a/scripts/tui.py +++ b/scripts/tui.py @@ -146,7 +146,6 @@ class HendrikTUI: def _draw_input(self, stdscr): iy = self.h - 4 - blank = " " * (self.w - 2) for off, text in [ (0, "\u250c" + "\u2500" * (self.w - 2) + "\u2510"), @@ -170,15 +169,20 @@ class HendrikTUI: for i in range(2): idx = show + i y = iy + 1 + i - prefix = "> " if idx < total else " " line = self.input_buffer[idx] if idx < total else "" - vis = prefix + line - if len(vis) > self.w - 2: - vis = vis[: self.w - 2] - fmt = "\u2502 " + vis + blank[len(vis):] + "\u2502" - stdscr.addstr(y, 0, fmt, curses.color_pair(self.C_INPUT)) + max_text = self.w - 6 + if len(line) > max_text: + line = line[:max_text] + if idx < total: + fmt = "\u2502 > " + line + " " * (max_text + 1 - len(line)) + "\u2502" + else: + fmt = "\u2502 " + " " * (self.w - 5) + "\u2502" + try: + stdscr.addstr(y, 0, fmt, curses.color_pair(self.C_INPUT)) + except curses.error: + pass if idx == self.input_line and not self.processing: - col = min(2 + self.input_col, self.w - 3) + col = 4 + min(self.input_col, max_text) stdscr.move(y, col) # ---- status bar -------------------------------------------------------