From a281bdc5e1700e25022536a5482b1fb41ece4219 Mon Sep 17 00:00:00 2001 From: June McEnroe Date: Sun, 20 Feb 2022 14:49:17 -0500 Subject: Show indicator in status when window has pending input --- chat.h | 1 + input.c | 4 ++++ window.c | 10 ++++++---- 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); -- cgit 1.4.1-2-gfad0