summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ui.c29
1 files changed, 22 insertions, 7 deletions
diff --git a/ui.c b/ui.c
index b4a2dee..28749c8 100644
--- a/ui.c
+++ b/ui.c
@@ -48,6 +48,7 @@
 
 static WINDOW *status;
 static WINDOW *input;
+static WINDOW *scrollBar;
 
 enum { BufferCap = 512 };
 struct Buffer {
@@ -119,6 +120,10 @@ static struct Window *windowFor(size_t id) {
 	return window;
 }
 
+static bool windowScrolled(struct Window *window) {
+	return window->scroll < BufferCap;
+}
+
 static short colorPairs;
 
 static void colorInit(void) {
@@ -238,18 +243,27 @@ void uiInit(void) {
 	keypad(input, true);
 	nodelay(input, true);
 
+	scrollBar = newwin(1, COLS, LINES - 2, 0);
+	short fg = 8 + COLOR_BLACK;
+	wbkgd(scrollBar, '~' | colorAttr(fg) | COLOR_PAIR(colorPair(fg, -1)));
+
 	windows.active = windowFor(Network);
 	uiShow();
 }
 
 void uiDraw(void) {
 	wnoutrefresh(status);
+	int scrolled = windowScrolled(windows.active);
 	pnoutrefresh(
 		windows.active->pad,
-		windows.active->scroll - WINDOW_LINES, 0,
+		windows.active->scroll - WINDOW_LINES + scrolled, 0,
 		1, 0,
-		BOTTOM - 1, RIGHT
+		BOTTOM - 1 - scrolled, RIGHT
 	);
+	if (scrolled) {
+		touchwin(scrollBar);
+		wnoutrefresh(scrollBar);
+	}
 	int y, x;
 	getyx(input, y, x);
 	pnoutrefresh(
@@ -368,10 +382,11 @@ static void statusUpdate(void) {
 }
 
 static void unmark(struct Window *window) {
-	if (window->scroll < BufferCap) return;
-	window->heat = Cold;
-	window->unread = 0;
-	window->mark = false;
+	if (!windowScrolled(window)) {
+		window->heat = Cold;
+		window->unread = 0;
+		window->mark = false;
+	}
 	statusUpdate();
 }
 
@@ -462,7 +477,7 @@ void uiWrite(size_t id, enum Heat heat, const time_t *src, const char *str) {
 		statusUpdate();
 	}
 	lines += wordWrap(window->pad, str);
-	if (window->scroll < BufferCap) {
+	if (windowScrolled(window)) {
 		windowScroll(window, -lines);
 	}
 	if (heat > Warm) beep();
hoto.causal.agency/2024-12-21/lens?id=ff3adddef3e8e28f67fbc7c0ccd15a76abae157d&follow=1'>Add the past few months of rolls of filmJune McEnroe 2024-11-13Add Tea with the Black DragonJune McEnroe I found this in a box on the side of the road being thrown own. It's decent pulp but nothing special. Not even as racist as I expected it to be. Also as one might guess, the author using their initials is a woman, so I only broke one of my rules when it comes to book selection. 2024-11-05Add a bunch of photosJune McEnroe 2024-10-12Publish "film review"June McEnroe 2024-10-12Add photos from October 6June McEnroe 2024-10-12Add photos from October 5June McEnroe 2024-10-09Add photos from October 1June McEnroe Ok the first 3 are from September 29 but I didn't want to spoil the black and white roll. 2024-10-07Add photos from September 29June McEnroe 2024-10-07Add photos from September 28June McEnroe 2024-10-07Add photos from September 22June McEnroe 2024-09-25Add photos from September 15June McEnroe 2024-09-24Add photos from September 14June McEnroe 2024-09-24Add photos from September 12June McEnroe 2024-09-24Add photos from September 7June McEnroe 2024-09-24Allow not having descriptionsJune McEnroe I'm sorry, I can't keep writing descriptions. It makes posting photos take too long, I often don't know the words for what I'm looking at, and a good description is an entirely different work of art than the photo I took, and I'm just a photographer. It's visual art. 2024-09-23Automatically select the last used lens for a bodyJune McEnroe 2024-09-19Add photos from September 5June McEnroe Had to prefix the folder number onto these file names manually because they must have come out of a different scanner or something. 2024-09-15Add some more film stocks to the listJune McEnroe 2024-09-13Add photos from September 2June McEnroe 2024-09-13Add Fomapan 200 to films listJune McEnroe 2024-09-10Add August 29 picnic photosJune McEnroe 2024-09-08Apply some bold to trips renderingJune McEnroe This seems easier to visually scan. The only other thing I'd like is a nicer date rendering but JavaScript is useless for that. 2024-09-08Render trips hopefully more efficientlyJune McEnroe 2024-09-08Allow removing bodies and lensesJune McEnroe 2024-09-08Limit body width so it looks less silly on desktopJune McEnroe 2024-09-07Handle no film being loadedJune McEnroe 2024-09-07Fancy up the text a littleJune McEnroe