Nico Golde:
[apps/madmutt.git] / curs_main.c
index 0fc4e0b..28921a3 100644 (file)
@@ -537,6 +537,8 @@ int mutt_index_menu (void)
           mutt_error _("Mailbox was externally modified.  Flags may be wrong.");
         else if (check == M_NEW_MAIL)
         {
+          /* on new mail: redraw sidebar */
+          draw_sidebar (CurrentMenu);
           mutt_message _("New mail in this mailbox.");
           if (option (OPTBEEPNEW))
             beep ();
@@ -562,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))
@@ -575,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);
@@ -1400,7 +1404,7 @@ CHECK_IMAP_ACL(IMAP_ACL_DELETE);
 
         if ((menu->menu == MENU_MAIN)
             && (query_quadoption (OPT_QUIT, 
-                                  _("Exit Mutt without saving?")) == M_YES))
+                                  _("Exit Mutt-ng without saving?")) == M_YES))
         {
           if (Context)
           {
@@ -1427,6 +1431,86 @@ 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.");
+
+#if defined (USE_IMAP) && ! defined (IMAP_EDIT_THREADS)
+        else if (Context->magic == M_IMAP)
+          mutt_error _("Compile Mutt with --enable-imap-edit-threads for break-thread support");
+#endif
+        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.");
+
+#if defined (USE_IMAP) && ! defined (IMAP_EDIT_THREADS)
+        else if (Context->magic == M_IMAP)
+          mutt_error _("Compile Mutt with --enable-imap-edit-threads for link-threads support");
+#endif
+
+        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;
@@ -2242,7 +2326,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)
         {
@@ -2372,6 +2460,7 @@ CHECK_IMAP_ACL(IMAP_ACL_DELETE);
 
       case OP_BUFFY_LIST:
         mutt_buffy_list ();
+        menu->redraw = REDRAW_FULL;
         break;
 
       case OP_VIEW_ATTACHMENTS: