Nico Golde:
[apps/madmutt.git] / curs_main.c
index bbbc6c4..f3bc7c0 100644 (file)
@@ -564,8 +564,10 @@ int mutt_index_menu (void)
     {
      /* check for new mail in the incoming folders */
      oldcount = newcount;
-     if ((newcount = mutt_buffy_check (0)) != oldcount)
+     if ((newcount = mutt_buffy_check (0)) != oldcount){
        menu->redraw |= REDRAW_STATUS;
+       menu->redraw |= REDRAW_SIDEBAR;
+     } 
      if (do_buffy_notify)
      {
        if (mutt_buffy_notify () && option (OPTBEEPNEW))
@@ -577,7 +579,7 @@ int mutt_index_menu (void)
 
     if (op != -1)
       mutt_curs_set (0);
-
+    if (menu->redraw & REDRAW_SIDEBAR) draw_sidebar(menu->menu);
     if (menu->redraw & REDRAW_FULL)
     {
       menu_redraw_full (menu);
@@ -1064,7 +1066,7 @@ CHECK_IMAP_ACL(IMAP_ACL_DELETE);
          break;
         }
 
-        if (query_quadoption (OPT_QUIT, _("Quit Mutt?")) == M_YES)
+        if (query_quadoption (OPT_QUIT, _("Quit Mutt-ng?")) == M_YES)
         {
           int check;
           
@@ -1275,7 +1277,11 @@ CHECK_IMAP_ACL(IMAP_ACL_DELETE);
         }
         else
 #endif
-        mutt_buffy (buf, sizeof (buf));
+        {
+          if (Context && Context->path)
+            strncpy (buf, Context->path, sizeof (buf));
+          mutt_buffy (buf, sizeof (buf));
+        }
 
         if ( op == OP_SIDEBAR_OPEN ) {
           if(!CurBuffy)
@@ -1304,6 +1310,7 @@ CHECK_IMAP_ACL(IMAP_ACL_DELETE);
           mutt_error (_("%s is not a mailbox."), buf);
           break;
         }
+        mutt_str_replace (&CurrentFolder, buf);
 
         if (Context)
         {
@@ -1429,6 +1436,75 @@ CHECK_IMAP_ACL(IMAP_ACL_DELETE);
           menu->redraw = REDRAW_CURRENT;
         break;
 
+      case OP_MAIN_BREAK_THREAD:
+
+        CHECK_MSGCOUNT;
+        CHECK_VISIBLE;
+        CHECK_READONLY;
+
+        if ((Sort & SORT_MASK) != SORT_THREADS)
+          mutt_error _("Threading is not enabled.");
+        else
+        {
+          {
+            HEADER *oldcur = CURHDR;
+
+            mutt_break_thread (CURHDR);
+            mutt_sort_headers (Context, 1);
+            menu->current = oldcur->virtual;
+          }
+
+          Context->changed = 1;
+          mutt_message _("Thread broken");
+
+          if (menu->menu == MENU_PAGER)
+          {
+            op = OP_DISPLAY_MESSAGE;
+            continue;
+          }
+          else
+            menu->redraw |= REDRAW_INDEX;
+        }
+        break;
+
+      case OP_MAIN_LINK_THREADS:
+
+        CHECK_MSGCOUNT;
+        CHECK_VISIBLE;
+        CHECK_READONLY;
+
+        if ((Sort & SORT_MASK) != SORT_THREADS)
+          mutt_error _("Threading is not enabled.");
+        else if (!CURHDR->env->message_id)
+          mutt_error _("No Message-ID: header available to link thread");
+        else if (!tag && (!Context->last_tag || !Context->last_tag->tagged))
+          mutt_error _("First, please tag a message to be linked here");
+        else 
+        {
+          HEADER *oldcur = CURHDR;
+
+          if (mutt_link_threads (CURHDR, tag ? NULL : Context->last_tag,
+                                 Context))
+          {
+            mutt_sort_headers (Context, 1);
+            menu->current = oldcur->virtual;
+            
+            Context->changed = 1;
+            mutt_message _("Threads linked");
+          }
+          else
+            mutt_error _("No thread linked");
+        }
+
+        if (menu->menu == MENU_PAGER)
+        {
+          op = OP_DISPLAY_MESSAGE;
+          continue;
+        }
+        else
+          menu->redraw |= REDRAW_STATUS | REDRAW_INDEX;
+        break;
+
       case OP_MAIN_NEXT_UNDELETED:
 
         CHECK_MSGCOUNT;
@@ -2244,7 +2320,11 @@ CHECK_IMAP_ACL(IMAP_ACL_SEEN);
       case OP_FORWARD_TO_GROUP:
 
         CHECK_ATTACH;
-        if (op != OP_FOLLOWUP || !CURHDR->env->followup_to ||
+        if ((op == OP_FOLLOWUP || op == OP_FORWARD_TO_GROUP) &&
+            Context && Context->msgcount == 0) {
+          mutt_error (_("There are no messages."));
+          sleep (2);
+        } else if (op != OP_FOLLOWUP || !CURHDR->env->followup_to ||
             mutt_strcasecmp (CURHDR->env->followup_to, "poster") ||
             query_quadoption (OPT_FOLLOWUPTOPOSTER,_("Reply by mail as poster prefers?")) != M_YES)
         {
@@ -2374,6 +2454,7 @@ CHECK_IMAP_ACL(IMAP_ACL_DELETE);
 
       case OP_BUFFY_LIST:
         mutt_buffy_list ();
+        menu->redraw = REDRAW_FULL;
         break;
 
       case OP_VIEW_ATTACHMENTS: