diff --git a/imap/browse.c b/imap/browse.c index acda9f9..e65c089 100644 --- a/imap/browse.c +++ b/imap/browse.c @@ -449,5 +449,7 @@ static void imap_add_folder (char delim, char *folder, int noselect, static int compare_names(struct folder_file *a, struct folder_file *b) { - return mutt_strcmp(a->name, b->name); + return mutt_is_inbox (a->name) ? -1 : + mutt_is_inbox (b->name) ? 1 : + mutt_strcmp (a->name, b->name); } diff --git a/lib.c b/lib.c index 5f7c38f..1f16981 100644 --- a/lib.c +++ b/lib.c @@ -1087,3 +1087,9 @@ int mutt_atol (const char *str, long *dst) return -1; return 0; } + +int mutt_is_inbox(const char *path) +{ + size_t plen = mutt_strlen(path); + return plen >= 5 && 0 == mutt_strcasecmp(path + plen - 5, "inbox"); +} diff --git a/lib.h b/lib.h index c048f8c..cb26bd1 100644 --- a/lib.h +++ b/lib.h @@ -221,6 +221,7 @@ void mutt_str_adjust (char **p); void mutt_unlink (const char *); void safe_free (void *); void safe_realloc (void *, size_t); +int mutt_is_inbox(const char *path); const char *mutt_strsysexit(int e); #endif diff --git a/sidebar.c b/sidebar.c index a0162cd..82be890 100644 --- a/sidebar.c +++ b/sidebar.c @@ -305,7 +305,9 @@ static int cb_qsort_sbe (const void *a, const void *b) result = (b2->msg_flagged - b1->msg_flagged); break; case SORT_PATH: - result = mutt_strcoll (b1->path, b2->path); + result = mutt_is_inbox (b1->path) ? -1 : + mutt_is_inbox (b2->path) ? 1 : + mutt_strcoll (b1->path, b2->path); break; }