diff options
author | June McEnroe <june@causal.agency> | 2018-11-29 13:29:20 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2018-11-29 13:29:20 -0500 |
commit | 5881a97c33c2a02b038a504a9027b8843029ac6c (patch) | |
tree | a2383c864752672bf04095ba98456caff165716d | |
parent | Handle no such nick error (diff) | |
download | test-5881a97c33c2a02b038a504a9027b8843029ac6c.tar.gz test-5881a97c33c2a02b038a504a9027b8843029ac6c.zip |
Show unread count in term title
Also render status line with just spaces. Looks much cleaner this way.
-rw-r--r-- | ui.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/ui.c b/ui.c index 430420e..fecd637 100644 --- a/ui.c +++ b/ui.c @@ -221,24 +221,34 @@ static struct { struct View *tags[TagsLen]; } views; +static void uiTitle(const struct View *view) { + int unread; + char *str; + int len = asprintf( + &str, "%s%n (%d)", view->tag.name, &unread, view->unread + ); + if (len < 0) err(EX_OSERR, "asprintf"); + if (!view->unread) str[unread] = '\0'; + termTitle(str); + free(str); +} + static void uiStatus(void) { wmove(ui.status, 0, 0); int num = 0; for (const struct View *view = views.head; view; view = view->next, ++num) { if (!view->unread && view != ui.view) continue; + if (view == ui.view) uiTitle(view); int unread; wchar_t *str; int len = aswprintf( - &str, L"%c %d:%s%n(\3%02d%d\3) ", + &str, L"%c %d %s %n(\3%02d%d\3) ", (view == ui.view ? IRCReverse : IRCReset), num, view->tag.name, &unread, (view->hot ? IRCYellow : IRCDefault), view->unread ); if (len < 0) err(EX_OSERR, "aswprintf"); - if (!view->unread) { - str[unread + 0] = L' '; - str[unread + 1] = L'\0'; - } + if (!view->unread) str[unread] = L'\0'; addWrap(ui.status, str); free(str); } @@ -307,7 +317,6 @@ static void viewUnmark(struct View *view) { } static void uiView(struct View *view) { - termTitle(view->tag.name); touchwin(view->log); if (ui.view) ui.view->mark = true; viewUnmark(view); |