This modifies the mutt_enter_string() functions to use
MuttMessageWindow.

-- 
Kevin J. McCarthy
GPG Fingerprint: 8975 A9B3 3AA3 7910 385C  5308 ADEF 7684 8031 6BDA
http://www.8t8.us/configs/gpg-key-transition-statement.txt
# HG changeset patch
# User Kevin McCarthy <ke...@8t8.us>
# Date 1461089224 25200
#      Tue Apr 19 11:07:04 2016 -0700
# Node ID b33fd23aa70792ccb8261c0d33dc3ef0ed7bc277
# Parent  e79f81c7461d1e90dea3f8ef2a693ecead6a58bb
Modify enter.c routines to use windows.

This modifies the mutt_enter_string() functions to use MuttMessageWindow.

diff --git a/curs_lib.c b/curs_lib.c
--- a/curs_lib.c
+++ b/curs_lib.c
@@ -146,29 +146,29 @@
   ret.ch = ch;
   ret.op = 0;
   return (ch == ctrl ('G') ? err : ret);
 }
 
 int _mutt_get_field (const char *field, char *buf, size_t buflen, int 
complete, int multiple, char ***files, int *numfiles)
 {
   int ret;
-  int x, y;
+  int x;
 
   ENTER_STATE *es = mutt_new_enter_state();
   
   do
   {
     mutt_window_clearline (MuttMessageWindow, 0);
     SETCOLOR (MT_COLOR_PROMPT);
     addstr ((char *)field); /* cast to get around bad prototypes */
     NORMAL_COLOR;
     mutt_refresh ();
-    getyx (stdscr, y, x);
-    ret = _mutt_enter_string (buf, buflen, y, x, complete, multiple, files, 
numfiles, es);
+    x = getcurx (stdscr);
+    ret = _mutt_enter_string (buf, buflen, x, complete, multiple, files, 
numfiles, es);
   }
   while (ret == 1);
   mutt_window_clearline (MuttMessageWindow, 0);
   mutt_free_enter_state (&es);
   
   return (ret);
 }
 
diff --git a/edit.c b/edit.c
--- a/edit.c
+++ b/edit.c
@@ -237,17 +237,17 @@
   move (LINES-1, 0);
 
   addstr ("To: ");
   tmp[0] = 0;
   mutt_addrlist_to_local (e->to);
   rfc822_write_address (tmp, sizeof (tmp), e->to, 0);
   if (!e->to || force)
   {
-    if (mutt_enter_string (tmp, sizeof (tmp), LINES-1, 4, 0) == 0)
+    if (mutt_enter_string (tmp, sizeof (tmp), 4, 0) == 0)
     {
       rfc822_free_address (&e->to);
       e->to = mutt_parse_adrlist (e->to, tmp);
       e->to = mutt_expand_aliases (e->to);
       mutt_addrlist_to_intl (e->to, NULL);     /* XXX - IDNA error reporting? 
*/
       tmp[0] = 0;
       rfc822_write_address (tmp, sizeof (tmp), e->to, 1);
       mvaddstr (LINES - 1, 4, tmp);
@@ -259,28 +259,28 @@
     addstr (tmp);
   }
   addch ('\n');
 
   if (!e->subject || force)
   {
     addstr ("Subject: ");
     strfcpy (tmp, e->subject ? e->subject: "", sizeof (tmp));
-    if (mutt_enter_string (tmp, sizeof (tmp), LINES-1, 9, 0) == 0)
+    if (mutt_enter_string (tmp, sizeof (tmp), 9, 0) == 0)
       mutt_str_replace (&e->subject, tmp);
     addch ('\n');
   }
 
   if ((!e->cc && option (OPTASKCC)) || force)
   {
     addstr ("Cc: ");
     tmp[0] = 0;
     mutt_addrlist_to_local (e->cc);
     rfc822_write_address (tmp, sizeof (tmp), e->cc, 0);
-    if (mutt_enter_string (tmp, sizeof (tmp), LINES-1, 4, 0) == 0)
+    if (mutt_enter_string (tmp, sizeof (tmp), 4, 0) == 0)
     {
       rfc822_free_address (&e->cc);
       e->cc = mutt_parse_adrlist (e->cc, tmp);
       e->cc = mutt_expand_aliases (e->cc);
       tmp[0] = 0;
       mutt_addrlist_to_intl (e->cc, NULL);
       rfc822_write_address (tmp, sizeof (tmp), e->cc, 1);
       mvaddstr (LINES - 1, 4, tmp);
@@ -291,17 +291,17 @@
   }
 
   if (option (OPTASKBCC) || force)
   {
     addstr ("Bcc: ");
     tmp[0] = 0;
     mutt_addrlist_to_local (e->bcc);
     rfc822_write_address (tmp, sizeof (tmp), e->bcc, 0);
-    if (mutt_enter_string (tmp, sizeof (tmp), LINES-1, 5, 0) == 0)
+    if (mutt_enter_string (tmp, sizeof (tmp), 5, 0) == 0)
     {
       rfc822_free_address (&e->bcc);
       e->bcc = mutt_parse_adrlist (e->bcc, tmp);
       e->bcc = mutt_expand_aliases (e->bcc);
       mutt_addrlist_to_intl (e->bcc, NULL);
       tmp[0] = 0;
       rfc822_write_address (tmp, sizeof (tmp), e->bcc, 1);
       mvaddstr (LINES - 1, 5, tmp);
@@ -328,17 +328,17 @@
 
   addstr (_("(End message with a . on a line by itself)\n"));
 
   buf = be_snarf_file (path, buf, &bufmax, &buflen, 0);
 
   tmp[0] = 0;
   while (!done)
   {
-    if (mutt_enter_string (tmp, sizeof (tmp), LINES-1, 0, 0) == -1)
+    if (mutt_enter_string (tmp, sizeof (tmp), 0, 0) == -1)
     {
       tmp[0] = 0;
       continue;
     }
     addch ('\n');
 
     if (EscChar && tmp[0] == EscChar[0] && tmp[1] != EscChar[0])
     {
diff --git a/enter.c b/enter.c
--- a/enter.c
+++ b/enter.c
@@ -205,30 +205,30 @@
 
 /*
  * Returns:
  *     1 need to redraw the screen and call me again
  *     0 if input was given
  *     -1 if abort.
  */
 
-int  mutt_enter_string(char *buf, size_t buflen, int y, int x, int flags)
+int  mutt_enter_string(char *buf, size_t buflen, int col, int flags)
 {
   int rv;
   ENTER_STATE *es = mutt_new_enter_state ();
-  rv = _mutt_enter_string (buf, buflen, y, x, flags, 0, NULL, NULL, es);
+  rv = _mutt_enter_string (buf, buflen, col, flags, 0, NULL, NULL, es);
   mutt_free_enter_state (&es);
   return rv;
 }
 
-int _mutt_enter_string (char *buf, size_t buflen, int y, int x,
+int _mutt_enter_string (char *buf, size_t buflen, int col,
                        int flags, int multiple, char ***files, int *numfiles,
                        ENTER_STATE *state)
 {
-  int width = COLS - x - 1;
+  int width = MuttMessageWindow->cols - col - 1;
   int redraw;
   int pass = (flags & M_PASS);
   int first = 1;
   int ch, w, r;
   size_t i;
   wchar_t *tempbuf = 0;
   size_t templen = 0;
   history_class_t hclass;
@@ -275,27 +275,28 @@
       {
        /* Go to end of line */
        state->curpos = state->lastchar;
        state->begin = width_ceiling (state->wbuf, state->lastchar, my_wcswidth 
(state->wbuf, state->lastchar) - width + 1);
       } 
       if (state->curpos < state->begin ||
          my_wcswidth (state->wbuf + state->begin, state->curpos - 
state->begin) >= width)
        state->begin = width_ceiling (state->wbuf, state->lastchar, my_wcswidth 
(state->wbuf, state->curpos) - width / 2);
-      move (y, x);
+      mutt_window_move (MuttMessageWindow, 0, col);
       w = 0;
       for (i = state->begin; i < state->lastchar; i++)
       {
        w += my_wcwidth (state->wbuf[i]);
        if (w > width)
          break;
        my_addwch (state->wbuf[i]);
       }
-      clrtoeol ();
-      move (y, x + my_wcswidth (state->wbuf + state->begin, state->curpos - 
state->begin));
+      mutt_window_clrtoeol (MuttMessageWindow);
+      mutt_window_move (MuttMessageWindow, 0,
+          col + my_wcswidth (state->wbuf + state->begin, state->curpos - 
state->begin));
     }
     mutt_refresh ();
 
     if ((ch = km_dokey (MENU_EDITOR)) == -1)
     {
       rv = -1; 
       goto bye;
     }
diff --git a/protos.h b/protos.h
--- a/protos.h
+++ b/protos.h
@@ -296,18 +296,18 @@
 int mutt_chscmp (const char *s, const char *chs);
 #define mutt_is_utf8(a) mutt_chscmp (a, "utf-8")
 #define mutt_is_us_ascii(a) mutt_chscmp (a, "us-ascii")
 int mutt_parent_message (CONTEXT *, HEADER *);
 int mutt_prepare_template(FILE*, CONTEXT *, HEADER *, HEADER *, short);
 int mutt_resend_message (FILE *, CONTEXT *, HEADER *);
 #define mutt_enter_fname(A,B,C,D,E) _mutt_enter_fname(A,B,C,D,E,0,NULL,NULL)
 int _mutt_enter_fname (const char *, char *, size_t, int *, int, int, char 
***, int *);
-int  mutt_enter_string (char *buf, size_t buflen, int y, int x, int flags);
-int _mutt_enter_string (char *, size_t, int, int, int, int, char ***, int *, 
ENTER_STATE *);
+int  mutt_enter_string (char *buf, size_t buflen, int col, int flags);
+int _mutt_enter_string (char *, size_t, int, int, int, char ***, int *, 
ENTER_STATE *);
 #define mutt_get_field(A,B,C,D) _mutt_get_field(A,B,C,D,0,NULL,NULL)
 int _mutt_get_field (const char *, char *, size_t, int, int, char ***, int *);
 int mutt_get_hook_type (const char *);
 int mutt_get_field_unbuffered (char *, char *, size_t, int);
 #define mutt_get_password(A,B,C) mutt_get_field_unbuffered(A,B,C,M_PASS)
 int mutt_get_postponed (CONTEXT *, HEADER *, HEADER **, char *, size_t);
 int mutt_get_tmp_attachment (BODY *);
 int mutt_index_menu (void);

Attachment: signature.asc
Description: PGP signature

Reply via email to