Rocco Rutte:
authorpdmef <pdmef@e385b8ad-14ed-0310-8656-cc95a2468c6d>
Sat, 5 Mar 2005 14:45:49 +0000 (14:45 +0000)
committerpdmef <pdmef@e385b8ad-14ed-0310-8656-cc95a2468c6d>
Sat, 5 Mar 2005 14:45:49 +0000 (14:45 +0000)
the neverending story: sidebar fixes

git-svn-id: svn://svn.berlios.de/mutt-ng/trunk@143 e385b8ad-14ed-0310-8656-cc95a2468c6d

browser.c
buffy.c

index 7782671..b85d622 100644 (file)
--- a/browser.c
+++ b/browser.c
@@ -569,6 +569,7 @@ static int examine_directory (MUTTMENU *menu, struct browser_state *state,
   }
   closedir (dp);
   }
+  draw_sidebar (CurrentMenu);
   browser_sort (state);
   return 0;
 }
diff --git a/buffy.c b/buffy.c
index 3a0888d..a7e7ca5 100644 (file)
--- a/buffy.c
+++ b/buffy.c
@@ -396,38 +396,11 @@ int mutt_buffy_check (int force)
       case M_MBOX:
       case M_MMDF:
 
-    {
-        if (STAT_CHECK || tmp->msgcount == 0)
-        {
-          BuffyCount++;
-          /* only do complete count if sidebar visible */
-          if (SidebarWidth > 0)
-          {
-            BUFFY b = *tmp;
-            int msgcount = 0;
-            int msg_unread = 0;
+        if (SidebarWidth == 0 || !option (OPTMBOXPANE)) {
+          if (STAT_CHECK) {
             BuffyCount++;
-            /* parse the mailbox, to see how much mail there is */
-            ctx = mx_open_mailbox( tmp->path, M_READONLY | M_QUIET | M_NOSORT,
-              NULL);
-            if(ctx)
-            {
-                msgcount = ctx->msgcount;
-                msg_unread = ctx->unread;
-                mx_close_mailbox(ctx, 0);
-            }
-            *tmp = b;
-            tmp->msgcount = msgcount;
-            tmp->msg_unread = msg_unread;
-            if(STAT_CHECK)
-                tmp->has_new = tmp->new = 1;
+            tmp->new = tmp->has_new = 1;
           }
-          else
-          {
-            /* sidebar invisible -> done */
-            tmp->new = 1;
-          }
-        }
 #ifdef BUFFY_SIZE
           else
           {
@@ -435,10 +408,25 @@ int mutt_buffy_check (int force)
             tmp->size = (long) sb.st_size;
           }
 #endif
-          if (tmp->newly_created &&
-              (sb.st_ctime != sb.st_mtime || sb.st_ctime != sb.st_atime))
-            tmp->newly_created = 0;
+        } else if (SidebarWidth > 0 && option (OPTMBOXPANE) && 
+                   (STAT_CHECK || tmp->msgcount == 0)) {
+          /* sidebar visible */
+          int msg_count = 0, msg_unread = 0, msg_new = 0;
+          BuffyCount++;
+          if ((ctx = mx_open_mailbox (tmp->path, M_READONLY | M_QUIET | M_NOSORT, NULL)) != NULL) {
+            msg_count = ctx->msgcount;
+            msg_unread = ctx->unread;
+            msg_new = ctx->new;
+            mx_close_mailbox (ctx, 0);
           }
+          tmp->msgcount = msg_count;
+          tmp->msg_unread = msg_unread;
+          tmp->new = msg_new;
+          tmp->has_new = msg_new > 0;
+        }
+        if (tmp->newly_created &&
+            (sb.st_ctime != sb.st_mtime || sb.st_ctime != sb.st_atime))
+          tmp->newly_created = 0;
         break;
 
       case M_MAILDIR:
@@ -451,6 +439,7 @@ int mutt_buffy_check (int force)
         }
         tmp->msgcount = 0;
         tmp->msg_unread = 0;
+        tmp->new = 0;
         while ((de = readdir (dirp)) != NULL)
         {
           char *p;
@@ -458,23 +447,22 @@ int mutt_buffy_check (int force)
               (!(p = strstr (de->d_name, ":2,")) || !strchr (p + 3, 'T')))
           {
             /* one new and undeleted message is enough */
-            if (tmp->new != 1)
+            if (tmp->new == 0)
             {
                BuffyCount++;
                tmp->has_new = tmp->new = 1;
-               if (SidebarWidth == 0)
-               {
+               if (SidebarWidth == 0 || !option (OPTMBOXPANE))
                  /* if sidebar invisible -> done */
                  break;
-               }
             }
             tmp->msgcount++;
             tmp->msg_unread++;
+            tmp->new++;
           }
         }
         closedir (dirp);
 
-        if (SidebarWidth > 0)
+        if (SidebarWidth > 0 && option (OPTMBOXPANE))
         {
           /* only count total mail if sidebar visible */
           snprintf (path, sizeof (path), "%s/cur", tmp->path);
@@ -499,7 +487,7 @@ int mutt_buffy_check (int force)
       case M_MH:
         if ((tmp->new = mh_buffy (tmp->path)) > 0)
           BuffyCount++;
-        if (SidebarWidth > 0)
+        if (SidebarWidth > 0 && option (OPTMBOXPANE))
         {
           DIR *dp;
           struct dirent *de;