X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=sidebar.c;h=6fd5ce0a59a3a6fdfccf67c62ae5e63845a4249c;hb=e01486aabea6f0af36933158bd58b9ab03b30add;hp=e2b417e8e9e86c609104d8c986b249645be3b89a;hpb=fa553944f7c505b65a0552e44de151c2e41c1280;p=apps%2Fmadmutt.git diff --git a/sidebar.c b/sidebar.c index e2b417e..6fd5ce0 100644 --- a/sidebar.c +++ b/sidebar.c @@ -109,10 +109,41 @@ static const char* sidebar_number_format (char* dest, size_t destlen, char op, int c = Context && str_eq (Context->path, b->path); switch (op) { - case 'c': - snprintf (tmp, sizeof (tmp), "%%%sd", fmt); - snprintf (dest, destlen, tmp, c ? (Context->msgcount - Context->deleted) : b->msgcount); + /* deleted */ + case 'd': + if (!opt) { + snprintf (tmp, sizeof (tmp), "%%%sd", fmt); + snprintf (dest, destlen, tmp, c ? Context->deleted : 0); + } else if ((c && Context->deleted == 0) || !c) + opt = 0; + break; + /* flagged */ + case 'F': + case 'f': /* for compatibility */ + if (!opt) { + snprintf (tmp, sizeof (tmp), "%%%sd", fmt); + snprintf (dest, destlen, tmp, c ? Context->flagged : b->msg_flagged); + } else if ((c && Context->flagged == 0) || (!c && b->msg_flagged == 0)) + opt = 0; break; + /* total */ + case 'c': /* for compatibility */ + case 'm': + if (!opt) { + snprintf (tmp, sizeof (tmp), "%%%sd", fmt); + snprintf (dest, destlen, tmp, c ? Context->msgcount : b->msgcount); + } else if ((c && Context->msgcount == 0) || (!c && b->msgcount == 0)) + opt = 0; + break; + /* total shown, i.e. not hidden by limit */ + case 'M': + if (!opt) { + snprintf (tmp, sizeof (tmp), "%%%sd", fmt); + snprintf (dest, destlen, tmp, c ? Context->vcount : 0); + } else if ((c && Context->vcount == 0) || !c) + opt = 0; + break; + /* new */ case 'n': if (!opt) { snprintf (tmp, sizeof (tmp), "%%%sd", fmt); @@ -120,11 +151,12 @@ static const char* sidebar_number_format (char* dest, size_t destlen, char op, } else if ((c && Context->unread == 0) || (!c && b->msg_unread == 0)) opt = 0; break; - case 'f': + /* tagged */ + case 't': if (!opt) { snprintf (tmp, sizeof (tmp), "%%%sd", fmt); - snprintf (dest, destlen, tmp, c ? Context->flagged : b->msg_flagged); - } else if ((c && Context->flagged == 0) || (!c && b->msg_flagged == 0)) + snprintf (dest, destlen, tmp, c ? Context->tagged : 0); + } else if ((c && Context->tagged == 0) || !c) opt = 0; break; }