diff options
Diffstat (limited to 'ui.c')
-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); |