From a19c0a5989c45ced8460284fe6591bebe08d22ac Mon Sep 17 00:00:00 2001 From: James Booth Date: Sat, 31 Jan 2015 22:29:44 +0000 Subject: [PATCH] Added scroll handler --- src/ui/inputwin.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/ui/inputwin.c b/src/ui/inputwin.c index 083b6c4e..ee800e56 100644 --- a/src/ui/inputwin.c +++ b/src/ui/inputwin.c @@ -365,6 +365,26 @@ inp_block(void) wtimeout(inp_win, -1); } +void +inp_win_handle_scroll(void) +{ + int col = getcurx(inp_win); + int wcols = getmaxx(stdscr); + + // if lost cursor off screen, move contents to show it + if (col >= pad_start + (wcols -2)) { + pad_start = col - (wcols / 2); + if (pad_start < 0) { + pad_start = 0; + } + } else if (col <= pad_start) { + pad_start = pad_start - (wcols / 2); + if (pad_start < 0) { + pad_start = 0; + } + } +} + void inp_write(char *line, int offset) { @@ -372,6 +392,8 @@ inp_write(char *line, int offset) werase(inp_win); waddstr(inp_win, line); wmove(inp_win, 0, col); + inp_win_handle_scroll(); + _inp_win_update_virtual(); }