summary refs log tree commit diff
diff options
context:
space:
mode:
authorC. McEnroe2020-04-06 13:46:35 -0400
committerC. McEnroe2020-04-06 13:46:35 -0400
commit62a3e3699c90b6edc7eb24e1db1773ac8febb546 (patch)
treed4a19e82c15312ba9fe15732def5ae62a5a726f0
parent1969c9125fbde0d420c22cebc7578b4473a7aac0 (diff)
Implement split scrolling
-rw-r--r--ui.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/ui.c b/ui.c
index 2a26ac3..c736246 100644
--- a/ui.c
+++ b/ui.c
@@ -258,6 +258,8 @@ static void errExit(void) {
 	reset_shell_mode();
 }
 
+enum { SplitLines = 5 };
+
 void uiInit(void) {
 	initscr();
 	cbreak();
@@ -279,9 +281,8 @@ void uiInit(void) {
 	status = newwin(1, COLS, 0, 0);
 	if (!status) err(EX_OSERR, "newwin");
 
-	marker = newwin(1, COLS, LINES - 2, 0);
-	short fg = 8 + COLOR_BLACK;
-	wbkgd(marker, '~' | colorAttr(fg) | COLOR_PAIR(colorPair(fg, -1)));
+	marker = newwin(1, COLS, BOTTOM - SplitLines - 1, 0);
+	wbkgd(marker, ACS_BULLET);
 
 	input = newpad(1, 1024);
 	if (!input) err(EX_OSERR, "newpad");
@@ -311,6 +312,12 @@ void uiDraw(void) {
 	if (window->scroll) {
 		touchwin(marker);
 		wnoutrefresh(marker);
+		pnoutrefresh(
+			window->pad,
+			WindowLines - SplitLines, 0,
+			BOTTOM - SplitLines, 0,
+			BOTTOM - 1, RIGHT
+		);
 	}
 	int y, x;
 	getyx(input, y, x);
@@ -655,7 +662,7 @@ static void reflow(struct Window *window) {
 }
 
 static void resize(void) {
-	mvwin(marker, LINES - 2, 0);
+	mvwin(marker, BOTTOM - SplitLines - 1, 0);
 	int height, width;
 	getmaxyx(windows.ptrs[0]->pad, height, width);
 	if (width == COLS) return;