Nico Golde:
[apps/madmutt.git] / curs_main.c
index 97640d6..7a01bad 100644 (file)
  *     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  */ 
 
+#if HAVE_CONFIG_H
+# include "config.h"
+#endif
+
 #include "mutt.h"
 #include "mutt_curses.h"
 #include "mx.h"
@@ -109,6 +113,22 @@ static const char *No_visible = N_("No visible messages.");
 extern const char *ReleaseDate;
 extern size_t UngetCount;
 
+static void set_xterm_title_bar(char *title)
+{
+  fputs("\033]2;", stdout);
+  fputs(title, stdout);
+  fputs("\007", stdout);
+  fflush(stdout);
+}
+
+static void set_xterm_icon_name(char *name)
+{
+  fputs("\033]1;", stdout);
+  fputs(name, stdout);
+  fputs("\007", stdout);
+  fflush(stdout);
+}
+
 void index_make_entry (char *s, size_t l, MUTTMENU *menu, int num)
 {
   format_flag flag = M_FORMAT_MAKEPRINT | M_FORMAT_ARROWCURSOR | M_FORMAT_INDEX;
@@ -590,6 +610,13 @@ int mutt_index_menu (void)
         mutt_paddstr (COLS, buf);
         SETCOLOR (MT_COLOR_NORMAL);
         menu->redraw &= ~REDRAW_STATUS;
+        if (option(OPTXTERMSETTITLES))
+        {
+          menu_status_line (buf, sizeof (buf), menu, NONULL (XtermTitle));
+          set_xterm_title_bar(buf);
+          menu_status_line (buf, sizeof (buf), menu, NONULL (XtermIcon));
+          set_xterm_icon_name(buf);
+        }
       }
 
       menu->redraw = 0;
@@ -1098,6 +1125,9 @@ CHECK_IMAP_ACL(IMAP_ACL_DELETE);
         else
         {
           mutt_set_flag (Context, CURHDR, M_TAG, !CURHDR->tagged);
+          Context->last_tag = CURHDR->tagged ? CURHDR :
+            ((Context->last_tag == CURHDR && !CURHDR->tagged)
+            ? NULL : Context->last_tag);
           menu->redraw = REDRAW_STATUS;
           if (option (OPTRESOLVE) && menu->current < Context->vcount - 1)
           {
@@ -1152,6 +1182,9 @@ CHECK_IMAP_ACL(IMAP_ACL_DELETE);
       
       case OP_MAIN_SYNC_FOLDER:
 
+       if (Context && !Context->msgcount)
+         break;
+
         CHECK_MSGCOUNT;
         CHECK_VISIBLE;
         CHECK_READONLY;
@@ -1273,6 +1306,12 @@ CHECK_IMAP_ACL(IMAP_ACL_DELETE);
         {
           int check;
 
+#ifdef USE_COMPRESSED
+          if (Context->compressinfo && Context->realpath)
+            mutt_str_replace (&LastFolder, Context->realpath);
+          else
+#endif
+
           mutt_str_replace (&LastFolder, Context->path);
           oldcount = Context ? Context->msgcount : 0;
 
@@ -2048,6 +2087,8 @@ CHECK_IMAP_ACL(IMAP_ACL_INSERT);
         }
 #endif
 
+       if (option (OPTPGPAUTODEC) && (tag || !(CURHDR->security & PGP_TRADITIONAL_CHECKED))) 
+         mutt_check_traditional_pgp (tag ? NULL : CURHDR, &menu->redraw);
         mutt_edit_message (Context, tag ? NULL : CURHDR);
         menu->redraw = REDRAW_FULL;
 
@@ -2116,7 +2157,9 @@ CHECK_IMAP_ACL(IMAP_ACL_INSERT);
           break;
         CHECK_MSGCOUNT; 
         CHECK_VISIBLE;
-        mutt_check_traditional_pgp (tag ? NULL : CURHDR, &menu->redraw);
+        if (tag || !(CURHDR->security & PGP_TRADITIONAL_CHECKED)) 
+         mutt_check_traditional_pgp (tag ? NULL : CURHDR, &menu->redraw);
+      
         if (menu->menu == MENU_PAGER)
         {
           op = OP_DISPLAY_MESSAGE;