Show unread count in term title
Also render status line with just spaces. Looks much cleaner this way.weechat-hashes
parent
139036dd5a
commit
5881a97c33
21
ui.c
21
ui.c
|
@ -221,24 +221,34 @@ static struct {
|
||||||
struct View *tags[TagsLen];
|
struct View *tags[TagsLen];
|
||||||
} views;
|
} 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) {
|
static void uiStatus(void) {
|
||||||
wmove(ui.status, 0, 0);
|
wmove(ui.status, 0, 0);
|
||||||
int num = 0;
|
int num = 0;
|
||||||
for (const struct View *view = views.head; view; view = view->next, ++num) {
|
for (const struct View *view = views.head; view; view = view->next, ++num) {
|
||||||
if (!view->unread && view != ui.view) continue;
|
if (!view->unread && view != ui.view) continue;
|
||||||
|
if (view == ui.view) uiTitle(view);
|
||||||
int unread;
|
int unread;
|
||||||
wchar_t *str;
|
wchar_t *str;
|
||||||
int len = aswprintf(
|
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),
|
(view == ui.view ? IRCReverse : IRCReset),
|
||||||
num, view->tag.name,
|
num, view->tag.name,
|
||||||
&unread, (view->hot ? IRCYellow : IRCDefault), view->unread
|
&unread, (view->hot ? IRCYellow : IRCDefault), view->unread
|
||||||
);
|
);
|
||||||
if (len < 0) err(EX_OSERR, "aswprintf");
|
if (len < 0) err(EX_OSERR, "aswprintf");
|
||||||
if (!view->unread) {
|
if (!view->unread) str[unread] = L'\0';
|
||||||
str[unread + 0] = L' ';
|
|
||||||
str[unread + 1] = L'\0';
|
|
||||||
}
|
|
||||||
addWrap(ui.status, str);
|
addWrap(ui.status, str);
|
||||||
free(str);
|
free(str);
|
||||||
}
|
}
|
||||||
|
@ -307,7 +317,6 @@ static void viewUnmark(struct View *view) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void uiView(struct View *view) {
|
static void uiView(struct View *view) {
|
||||||
termTitle(view->tag.name);
|
|
||||||
touchwin(view->log);
|
touchwin(view->log);
|
||||||
if (ui.view) ui.view->mark = true;
|
if (ui.view) ui.view->mark = true;
|
||||||
viewUnmark(view);
|
viewUnmark(view);
|
||||||
|
|
Loading…
Reference in New Issue