we're grownups now. don't care about stupid OS'es that don't know what an
[apps/madmutt.git] / compose.c
index 0530751..e7d2886 100644 (file)
--- a/compose.c
+++ b/compose.c
 #endif
 
 #include "mutt.h"
+#include "enter.h"
 #include "mutt_curses.h"
 #include "mutt_idna.h"
 #include "mutt_menu.h"
 #include "rfc1524.h"
 #include "mime.h"
 #include "attach.h"
+#include "recvattach.h"
 #include "mapping.h"
 #include "sort.h"
 #include "charset.h"
@@ -83,11 +85,12 @@ enum {
 #endif
 };
 
-#define HDR_XOFFSET 14
-#define TITLE_FMT "%14s"        /* Used for Prompts, which are ASCII */
-#define W (COLS - HDR_XOFFSET - SidebarWidth)
+#define HDR_XOFFSET     14
+#define TITLE_FMT       "%14s"        /* Used for Prompts, which are ASCII */
+#define SW              (option(OPTMBOXPANE)?SidebarWidth:0)
+#define W               (COLS - HDR_XOFFSET - SW)
 
-static char *Prompts[] = {
+static const char *Prompts[] = {
   "From: ",
   "To: ",
   "Cc: ",
@@ -112,7 +115,7 @@ static struct mapping_t ComposeHelp[] = {
   {N_("Attach file"), OP_COMPOSE_ATTACH_FILE},
   {N_("Descrip"), OP_COMPOSE_EDIT_DESCRIPTION},
   {N_("Help"), OP_HELP},
-  {NULL}
+  {NULL, OP_NULL}
 };
 
 #ifdef USE_NNTP
@@ -124,19 +127,17 @@ static struct mapping_t ComposeNewsHelp[] = {
   {N_("Attach file"), OP_COMPOSE_ATTACH_FILE},
   {N_("Descrip"), OP_COMPOSE_EDIT_DESCRIPTION},
   {N_("Help"), OP_HELP},
-  {NULL}
+  {NULL, OP_NULL}
 };
 #endif
 
-static void snd_entry (char *b, size_t blen, MUTTMENU * menu, int num)
-{
-  mutt_FormatString (b, blen, NONULL (AttachFormat), mutt_attach_fmt,
+static void snd_entry (char *b, size_t blen, MUTTMENU * menu, int num) {
+  int w=(COLS-SW)>blen?blen:COLS-SW;
+  mutt_FormatString (b, w, NONULL (AttachFormat), mutt_attach_fmt,
                      (unsigned long) (((ATTACHPTR **) menu->data)[num]),
                      M_FORMAT_STAT_FILE | M_FORMAT_ARROWCURSOR);
 }
 
-
-
 #include "mutt_crypt.h"
 
 static void redraw_crypt_lines (HEADER * msg)
@@ -145,16 +146,16 @@ static void redraw_crypt_lines (HEADER * msg)
 
   if ((WithCrypto & APPLICATION_PGP) && (WithCrypto & APPLICATION_SMIME)) {
     if (!msg->security)
-      mvaddstr (HDR_CRYPT, SidebarWidth, "    Security: ");
+      mvaddstr (HDR_CRYPT, SW, "    Security: ");
     else if (msg->security & APPLICATION_SMIME)
-      mvaddstr (HDR_CRYPT, SidebarWidth, "      S/MIME: ");
+      mvaddstr (HDR_CRYPT, SW, "      S/MIME: ");
     else if (msg->security & APPLICATION_PGP)
-      mvaddstr (HDR_CRYPT, SidebarWidth, "         PGP: ");
+      mvaddstr (HDR_CRYPT, SW, "         PGP: ");
   }
   else if ((WithCrypto & APPLICATION_SMIME))
-    mvaddstr (HDR_CRYPT, SidebarWidth, "      S/MIME: ");
+    mvaddstr (HDR_CRYPT, SW, "      S/MIME: ");
   else if ((WithCrypto & APPLICATION_PGP))
-    mvaddstr (HDR_CRYPT, SidebarWidth, "         PGP: ");
+    mvaddstr (HDR_CRYPT, SW, "         PGP: ");
   else
     return;
 
@@ -177,7 +178,7 @@ static void redraw_crypt_lines (HEADER * msg)
     }
   clrtoeol ();
 
-  move (HDR_CRYPTINFO, SidebarWidth);
+  move (HDR_CRYPTINFO, SW);
   clrtoeol ();
   if ((WithCrypto & APPLICATION_PGP)
       && msg->security & APPLICATION_PGP && msg->security & SIGN)
@@ -194,7 +195,7 @@ static void redraw_crypt_lines (HEADER * msg)
       && (msg->security & APPLICATION_SMIME)
       && (msg->security & ENCRYPT)
       && SmimeCryptAlg && *SmimeCryptAlg) {
-    mvprintw (HDR_CRYPTINFO, SidebarWidth + 40, "%s%s", _("Encrypt with: "),
+    mvprintw (HDR_CRYPTINFO, SW + 40, "%s%s", _("Encrypt with: "),
               NONULL (SmimeCryptAlg));
     off = 20;
   }
@@ -206,9 +207,9 @@ static void redraw_crypt_lines (HEADER * msg)
 static void redraw_mix_line (LIST * chain)
 {
   int c;
-  char *t;
+  const char *t;
 
-  mvaddstr (HDR_MIX, SidebarWidth, "         Mix: ");
+  mvaddstr (HDR_MIX, SW, "         Mix: ");
 
   if (!chain) {
     addstr ("<no chain defined>");
@@ -221,7 +222,7 @@ static void redraw_mix_line (LIST * chain)
     if (t && t[0] == '0' && t[1] == '\0')
       t = "<random>";
 
-    if (c + str_len (t) + 2 >= COLS - SidebarWidth)
+    if (c + str_len (t) + 2 >= COLS - SW)
       break;
 
     addstr (NONULL (t));
@@ -268,7 +269,7 @@ static void draw_envelope_addr (int line, ADDRESS * addr)
 
   buf[0] = 0;
   rfc822_write_address (buf, sizeof (buf), addr, 1);
-  mvprintw (line, SidebarWidth, TITLE_FMT, Prompts[line - 1]);
+  mvprintw (line, SW, TITLE_FMT, Prompts[line - 1]);
   mutt_paddstr (W, buf);
 }
 
@@ -284,9 +285,9 @@ static void draw_envelope (HEADER * msg, char *fcc)
 #ifdef USE_NNTP
   }
   else {
-    mvprintw (HDR_TO, SidebarWidth, TITLE_FMT, Prompts[HDR_NEWSGROUPS - 1]);
+    mvprintw (HDR_TO, SW, TITLE_FMT, Prompts[HDR_NEWSGROUPS - 1]);
     mutt_paddstr (W, NONULL (msg->env->newsgroups));
-    mvprintw (HDR_CC, SidebarWidth, TITLE_FMT, Prompts[HDR_FOLLOWUPTO - 1]);
+    mvprintw (HDR_CC, SW, TITLE_FMT, Prompts[HDR_FOLLOWUPTO - 1]);
     mutt_paddstr (W, NONULL (msg->env->followup_to));
     if (option (OPTXCOMMENTTO)) {
       mvprintw (HDR_BCC, 0, TITLE_FMT, Prompts[HDR_XCOMMENTTO - 1]);
@@ -294,10 +295,10 @@ static void draw_envelope (HEADER * msg, char *fcc)
     }
   }
 #endif
-  mvprintw (HDR_SUBJECT, SidebarWidth, TITLE_FMT, Prompts[HDR_SUBJECT - 1]);
+  mvprintw (HDR_SUBJECT, SW, TITLE_FMT, Prompts[HDR_SUBJECT - 1]);
   mutt_paddstr (W, NONULL (msg->env->subject));
   draw_envelope_addr (HDR_REPLYTO, msg->env->reply_to);
-  mvprintw (HDR_FCC, SidebarWidth, TITLE_FMT, Prompts[HDR_FCC - 1]);
+  mvprintw (HDR_FCC, SW, TITLE_FMT, Prompts[HDR_FCC - 1]);
   mutt_paddstr (W, fcc);
 
   if (WithCrypto)
@@ -308,7 +309,7 @@ static void draw_envelope (HEADER * msg, char *fcc)
 #endif
 
   SETCOLOR (MT_COLOR_STATUS);
-  mvaddstr (HDR_ATTACH - 1, SidebarWidth, _("-- Attachments"));
+  mvaddstr (HDR_ATTACH - 1, SW, _("-- Attachments"));
   BKGDSET (MT_COLOR_STATUS);
   clrtoeol ();
 
@@ -343,7 +344,7 @@ static int edit_address_list (int line, ADDRESS ** addr)
   /* redraw the expanded list so the user can see the result */
   buf[0] = 0;
   rfc822_write_address (buf, sizeof (buf), *addr, 1);
-  move (line, HDR_XOFFSET + SidebarWidth);
+  move (line, HDR_XOFFSET + SW);
   mutt_paddstr (W, buf);
 
   return 0;
@@ -477,8 +478,7 @@ static const char *compose_format_str (char *buf, size_t buflen, char op,
     break;
 
   case 'v':
-    snprintf (fmt, sizeof (fmt), "Mutt-ng %%s");
-    snprintf (buf, buflen, fmt, MUTT_VERSION);
+    strncpy (buf, mutt_make_version (0), buflen);
     break;
 
   case 0:
@@ -501,7 +501,8 @@ static const char *compose_format_str (char *buf, size_t buflen, char op,
 static void compose_status_line (char *buf, size_t buflen, MUTTMENU * menu,
                                  const char *p)
 {
-  mutt_FormatString (buf, buflen, p, compose_format_str,
+  int w=(COLS-SW)>buflen?buflen:(COLS-SW);
+  mutt_FormatString (buf, w, p, compose_format_str,
                      (unsigned long) menu, 0);
 }
 
@@ -563,7 +564,7 @@ int mutt_compose_menu (HEADER * msg,    /* structure for new message */
                          ComposeHelp);
 
   if (option (OPTMBOXPANE))
-    buffy_check (1);
+    buffy_check (0);
   while (loop) {
 #ifdef USE_NNTP
     unset_option (OPTNEWS);     /* for any case */
@@ -670,7 +671,7 @@ int mutt_compose_menu (HEADER * msg,    /* structure for new message */
         buf[0] = 0;
       if (mutt_get_field ("Subject: ", buf, sizeof (buf), 0) == 0) {
         str_replace (&msg->env->subject, buf);
-        move (HDR_SUBJECT, HDR_XOFFSET + SidebarWidth);
+        move (HDR_SUBJECT, HDR_XOFFSET + SW);
         clrtoeol ();
         if (msg->env->subject)
           mutt_paddstr (W, msg->env->subject);
@@ -686,7 +687,7 @@ int mutt_compose_menu (HEADER * msg,    /* structure for new message */
       if (mutt_get_field ("Fcc: ", buf, sizeof (buf), M_FILE | M_CLEAR) == 0) {
         strfcpy (fcc, buf, _POSIX_PATH_MAX);
         mutt_pretty_mailbox (fcc);
-        move (HDR_FCC, HDR_XOFFSET + SidebarWidth);
+        move (HDR_FCC, HDR_XOFFSET + SW);
         mutt_paddstr (W, fcc);
         fccSet = 1;
       }
@@ -1406,7 +1407,8 @@ int mutt_compose_menu (HEADER * msg,    /* structure for new message */
       compose_status_line (buf, sizeof (buf), menu, NONULL (ComposeFormat));
       CLEARLINE (option (OPTSTATUSONTOP) ? 0 : LINES - 2);
       SETCOLOR (MT_COLOR_STATUS);
-      printw ("%-*.*s", COLS, COLS, buf);
+      move (option (OPTSTATUSONTOP) ? 0 : LINES - 2, SW);
+      printw ("%-*.*s", COLS-SW, COLS-SW, buf);
       SETCOLOR (MT_COLOR_NORMAL);
       menu->redraw &= ~REDRAW_STATUS;
     }