about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2022-02-20 14:49:17 -0500
committerJune McEnroe <june@causal.agency>2022-02-20 14:49:17 -0500
commita281bdc5e1700e25022536a5482b1fb41ece4219 (patch)
treed56b6b620de45055cbd53f0d10098df13c26a661
parentUse separate edit buffers for each ID (diff)
downloadcatgirl-a281bdc5e1700e25022536a5482b1fb41ece4219.tar.gz
catgirl-a281bdc5e1700e25022536a5482b1fb41ece4219.zip
Show indicator in status when window has pending input
-rw-r--r--chat.h1
-rw-r--r--input.c4
-rw-r--r--window.c10
3 files changed, 11 insertions, 4 deletions
diff --git a/chat.h b/chat.h
index 0de930d..17334fa 100644
--- a/chat.h
+++ b/chat.h
@@ -331,6 +331,7 @@ int uiSave(void);
 void inputInit(void);
 void inputWait(void);
 void inputUpdate(void);
+bool inputPending(uint id);
 void inputRead(void);
 void inputCompleteAdd(void);
 
diff --git a/input.c b/input.c
index b578d17..ad6d533 100644
--- a/input.c
+++ b/input.c
@@ -227,6 +227,10 @@ void inputUpdate(void) {
 	wmove(uiInput, y, pos);
 }
 
+bool inputPending(uint id) {
+	return edits[id].len;
+}
+
 static const struct {
 	const wchar_t *name;
 	const wchar_t *string;
diff --git a/window.c b/window.c
index 0395542..ee0911f 100644
--- a/window.c
+++ b/window.c
@@ -164,7 +164,7 @@ static void statusUpdate(void) {
 	wmove(uiStatus, 0, 0);
 	for (uint num = 0; num < count; ++num) {
 		const struct Window *window = windows[num];
-		if (num != show && !window->scroll) {
+		if (num != show && !window->scroll && !inputPending(window->id)) {
 			if (window->heat < Warm) continue;
 			if (window->mute && window->heat < Hot) continue;
 		}
@@ -181,15 +181,17 @@ static void statusUpdate(void) {
 		);
 		if (window->mark && window->unreadWarm) {
 			ptr = seprintf(
-				ptr, end, "\3%d+%d\3%d%s",
+				ptr, end, "\3%d+%d\3%d ",
 				(window->heat > Warm ? White : idColors[window->id]),
-				window->unreadWarm, idColors[window->id],
-				(window->scroll ? "" : " ")
+				window->unreadWarm, idColors[window->id]
 			);
 		}
 		if (window->scroll) {
 			ptr = seprintf(ptr, end, "~%d ", window->scroll);
 		}
+		if (num != show && inputPending(window->id)) {
+			ptr = seprintf(ptr, end, "@ ");
+		}
 		if (styleAdd(uiStatus, StyleDefault, buf) < 0) break;
 	}
 	wclrtoeol(uiStatus);