X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-ui%2Fenter.c;h=8fe60edf54403db67ba3a7ce9a0d1a7d1403a018;hp=cb5478b7d783351b19f144428e46e224991bceae;hb=88d239144bf6f50ca1eda6db7742281f0ad0f97f;hpb=8d453d89f4f37f4c379d95880c06a23443cc27fa diff --git a/lib-ui/enter.c b/lib-ui/enter.c index cb5478b..8fe60ed 100644 --- a/lib-ui/enter.c +++ b/lib-ui/enter.c @@ -10,8 +10,8 @@ #include -#include "enter.h" #include "menu.h" +#include "browser.h" #include "mutt.h" #include "alias.h" @@ -19,6 +19,15 @@ #include "history.h" #include "buffy.h" +typedef struct { + wchar_t *wbuf; + size_t wbuflen; + size_t lastchar; + size_t curpos; + size_t begin; + int tabs; +} ENTER_STATE; + /* redraw flags for mutt_enter_string() */ enum { M_REDRAW_INIT = 1, /* go to end of line and redraw */ @@ -164,9 +173,10 @@ static void replace_part (ENTER_STATE *state, size_t from, const char *buf) p_delete(&savebuf); } -int mutt_enter_string (char *buf, size_t buflen, int y, int x, - int flags, int multiple, char ***files, int *numfiles, - ENTER_STATE * state) +static int +mutt_enter_string(char *buf, size_t buflen, int y, int x, int flags, + int multiple, char ***files, int *numfiles, + ENTER_STATE *state) { int width = COLS - x - 1; int redraw; @@ -645,13 +655,27 @@ bye: return rv; } -void mutt_free_enter_state (ENTER_STATE ** esp) +int _mutt_get_field(const char *field, char *buf, ssize_t buflen, int flags, + int multiple, char ***files, int *numfiles) { - if (!esp) - return; + int ret; + int x, y; + ENTER_STATE es; + + p_clear(&es, 1); - p_delete(&(*esp)->wbuf); - p_delete(esp); + do { + CLEARLINE(stdscr, LINES - 1); + waddstr (stdscr, field); + mutt_refresh (); + getyx (stdscr, y, x); + ret = mutt_enter_string(buf, buflen, y, x, flags, multiple, files, + numfiles, &es); + } while (ret == 1); + CLEARLINE(stdscr, LINES - 1); + + p_delete(&es.wbuf); + return ret; } /*