Show indicator in status when window has pending input

weechat-hashes
June McEnroe 2022-02-20 14:49:17 -05:00
parent 012fd67539
commit a281bdc5e1
3 changed files with 11 additions and 4 deletions

1
chat.h
View File

@ -331,6 +331,7 @@ int uiSave(void);
void inputInit(void); void inputInit(void);
void inputWait(void); void inputWait(void);
void inputUpdate(void); void inputUpdate(void);
bool inputPending(uint id);
void inputRead(void); void inputRead(void);
void inputCompleteAdd(void); void inputCompleteAdd(void);

View File

@ -227,6 +227,10 @@ void inputUpdate(void) {
wmove(uiInput, y, pos); wmove(uiInput, y, pos);
} }
bool inputPending(uint id) {
return edits[id].len;
}
static const struct { static const struct {
const wchar_t *name; const wchar_t *name;
const wchar_t *string; const wchar_t *string;

View File

@ -164,7 +164,7 @@ static void statusUpdate(void) {
wmove(uiStatus, 0, 0); wmove(uiStatus, 0, 0);
for (uint num = 0; num < count; ++num) { for (uint num = 0; num < count; ++num) {
const struct Window *window = windows[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->heat < Warm) continue;
if (window->mute && window->heat < Hot) continue; if (window->mute && window->heat < Hot) continue;
} }
@ -181,15 +181,17 @@ static void statusUpdate(void) {
); );
if (window->mark && window->unreadWarm) { if (window->mark && window->unreadWarm) {
ptr = seprintf( 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->heat > Warm ? White : idColors[window->id]),
window->unreadWarm, idColors[window->id], window->unreadWarm, idColors[window->id]
(window->scroll ? "" : " ")
); );
} }
if (window->scroll) { if (window->scroll) {
ptr = seprintf(ptr, end, "~%d ", 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; if (styleAdd(uiStatus, StyleDefault, buf) < 0) break;
} }
wclrtoeol(uiStatus); wclrtoeol(uiStatus);