more and more cleansing
[apps/madmutt.git] / curs_main.c
index 39973fa..0278069 100644 (file)
 #include "nntp.h"
 #endif
 
+#ifdef USE_SASL
+#include "mutt_sasl.h"
+#endif
+
 #include "lib/mem.h"
 #include "lib/intl.h"
 #include "lib/str.h"
@@ -106,6 +110,7 @@ static const char *No_visible = N_("No visible messages.");
 #define CURHDR Context->hdrs[Context->v2r[menu->current]]
 #define OLDHDR Context->hdrs[Context->v2r[menu->oldcurrent]]
 #define UNREAD(h) mutt_thread_contains_unread (Context, h)
+#define SW              (option(OPTMBOXPANE)?SidebarWidth:0)
 
 extern const char *ReleaseDate;
 extern size_t UngetCount;
@@ -557,13 +562,13 @@ int mutt_index_menu (void)
       }
 
       if (menu->redraw & REDRAW_STATUS) {
-        DrawFullLine = 1;
         menu_status_line (buf, sizeof (buf), menu, NONULL (Status));
-        DrawFullLine = 0;
         CLEARLINE (option (OPTSTATUSONTOP) ? 0 : LINES - 2);
+        sidebar_draw_frames();
         SETCOLOR (MT_COLOR_STATUS);
         BKGDSET (MT_COLOR_STATUS);
-        mutt_paddstr (COLS, buf);
+        move(option (OPTSTATUSONTOP) ? 0 : LINES - 2,SW);
+        mutt_paddstr (COLS-SW, buf);
         SETCOLOR (MT_COLOR_NORMAL);
         BKGDSET (MT_COLOR_NORMAL);
         sidebar_set_buffystats (Context);
@@ -590,10 +595,6 @@ int mutt_index_menu (void)
         move (menu->current - menu->top + menu->offset, COLS - 1);
       mutt_refresh ();
 
-      op = km_dokey (MENU_MAIN);
-
-      debug_print (4, ("Got op %d\n", op));
-
 #if defined (USE_SLANG_CURSES) || defined (HAVE_RESIZETERM)
       if (SigWinch) {
         mutt_flushinp ();
@@ -611,6 +612,10 @@ int mutt_index_menu (void)
       }
 #endif
 
+      op = km_dokey (MENU_MAIN);
+
+      debug_print (4, ("Got op %d\n", op));
+
       if (op == -1)
         continue;               /* either user abort or timeout */
 
@@ -751,7 +756,7 @@ int mutt_index_menu (void)
 
         if (op == OP_GET_MESSAGE) {
           buf[0] = 0;
-          if (mutt_get_field (_("Enter Message-Id: "), buf, sizeof (buf), 0)
+          if (mutt_get_field (_("Enter Message-ID: "), buf, sizeof (buf), 0)
               != 0 || !buf[0])
             break;
         }
@@ -802,7 +807,7 @@ int mutt_index_menu (void)
         int old = CURHDR->index, i;
 
         if (!CURHDR->env->message_id) {
-          mutt_error (_("No Message-Id. Unable to perform operation"));
+          mutt_error (_("No Message-ID. Unable to perform operation"));
 
           break;
         }
@@ -985,6 +990,8 @@ int mutt_index_menu (void)
           mutt_draw_tree (Context);
         menu->redraw = REDRAW_FULL;
       }
+      if (Context->pattern)
+        mutt_message _("To view all messages, limit to \"all\".");
       break;
 
     case OP_QUIT:
@@ -1204,9 +1211,13 @@ int mutt_index_menu (void)
       if (op == OP_SIDEBAR_OPEN) {
         strncpy (buf, NONULL(sidebar_get_current ()), sizeof (buf));
       }
-      else if (mutt_enter_fname (cp, buf, sizeof (buf), &menu->redraw, 1) ==
-               -1)
-        break;
+      else if (mutt_enter_fname (cp, buf, sizeof (buf), &menu->redraw, 1) == -1) {
+        if (menu->menu == MENU_PAGER) {
+          op = OP_DISPLAY_MESSAGE;
+          continue;
+        } else
+          break;
+      }
       if (!buf[0]) {
         CLEARLINE (LINES - 1);
         break;
@@ -2099,6 +2110,14 @@ int mutt_index_menu (void)
       CHECK_MSGCOUNT;
       CHECK_VISIBLE;
       mutt_pipe_message (tag ? NULL : CURHDR);
+#ifdef USE_IMAP
+      /* in an IMAP folder index with imap_peek=no, piping could change
+       * * new or old messages status to read. Redraw what's needed.
+       */
+      if (Context->magic == M_IMAP && !option (OPTIMAPPEEK)) {
+        menu->redraw = (tag ? REDRAW_INDEX : REDRAW_CURRENT) | REDRAW_STATUS;
+      }
+#endif
       MAYBE_REDRAW (menu->redraw);
       break;
 
@@ -2107,6 +2126,14 @@ int mutt_index_menu (void)
       CHECK_MSGCOUNT;
       CHECK_VISIBLE;
       mutt_print_message (tag ? NULL : CURHDR);
+#ifdef USE_IMAP
+      /* in an IMAP folder index with imap_peek=no, piping could change
+       * * new or old messages status to read. Redraw what's needed.
+       */
+      if (Context->magic == M_IMAP && !option (OPTIMAPPEEK)) {
+        menu->redraw = (tag ? REDRAW_INDEX : REDRAW_CURRENT) | REDRAW_STATUS;
+      }
+#endif
       break;
 
     case OP_MAIN_READ_THREAD:
@@ -2317,6 +2344,10 @@ int mutt_index_menu (void)
       mutt_what_key ();
       break;
 
+    case OP_REBUILD_CACHE:
+      mx_rebuild_cache ();
+      break;
+
     case OP_SIDEBAR_SCROLL_UP:
     case OP_SIDEBAR_SCROLL_DOWN:
     case OP_SIDEBAR_NEXT:
@@ -2342,16 +2373,19 @@ int mutt_index_menu (void)
       break;
   }
 
+  if (!attach_msg) {
 #ifdef USE_IMAP
   /* Close all open IMAP connections */
-  if (!attach_msg)
     imap_logout_all ();
 #endif
 #ifdef USE_NNTP
   /* Close all open NNTP connections */
-  if (!attach_msg)
     nntp_logout_all ();
 #endif
+#ifdef USE_SASL
+    mutt_sasl_done ();
+#endif
+  }
 
   mutt_menuDestroy (&menu);
   return (close);