X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=pager.c;h=a66f9b0a63f93998a1c9241b90859e1b49aeddf3;hp=5880834668f8d2c61facedef0d0b0cb8c51ce471;hb=98f62b5fcbd680fd5214ee85e1635b84322cbdd1;hpb=ad303d5eab5c92f9546cc9d3703a24534d6bb5e0 diff --git a/pager.c b/pager.c index 5880834..a66f9b0 100644 --- a/pager.c +++ b/pager.c @@ -13,10 +13,9 @@ #include -#include -#include +#include #include -#include +#include #include #include "mutt.h" @@ -30,7 +29,7 @@ #include "charset.h" #include "buffy.h" -#include +#include #define ISHEADER(x) ((x) == MT_COLOR_HEADER || (x) == MT_COLOR_HDEFAULT) @@ -39,7 +38,6 @@ #define IsSendAttach(x) (x && (x)->bdy && !(x)->fp) #define IsMsgAttach(x) (x && (x)->fp && (x)->bdy && (x)->bdy->hdr) #define IsHeader(x) (x && (x)->hdr && !(x)->bdy) -#define SW (option(OPTMBOXPANE)?SidebarWidth:0) /* hack to return to position when returning from index to same message */ static int TopLine = 0; @@ -108,13 +106,11 @@ typedef struct _ansi_attr { static short InHelp = 0; -#if defined (USE_SLANG_CURSES) || defined (HAVE_RESIZETERM) static struct resize { int line; int SearchCompiled; int SearchBack; } *Resize = NULL; -#endif #define NumSigLines 4 @@ -151,12 +147,12 @@ resolve_color (struct line_t *lineInfo, int n, int cnt, int flags, int search = 0, i, m; if (!cnt) - last_color = -1; /* force attrset() */ + last_color = -1; /* force wattrset(main_w) */ if (lineInfo[n].continuation) { if (!cnt && option (OPTMARKERS)) { - SETCOLOR (MT_COLOR_MARKERS); - addch ('+'); + SETCOLOR(main_w, MT_COLOR_MARKERS); + waddch(main_w, '+'); last_color = ColorDefs[MT_COLOR_MARKERS]; } m = (lineInfo[n].syntax)[0].first; @@ -219,7 +215,7 @@ resolve_color (struct line_t *lineInfo, int n, int cnt, int flags, if (special || a->attr) { if ((a->attr & ANSI_COLOR)) { if (a->pair == -1) - a->pair = mutt_alloc_color (a->fg, a->bg); + a->pair = madtty_color_pair(a->fg, a->bg); color = a->pair; if (a->attr & ANSI_BOLD) color |= A_BOLD; @@ -248,7 +244,7 @@ resolve_color (struct line_t *lineInfo, int n, int cnt, int flags, } if (color != last_color) { - attrset (color); + wattrset(main_w, color); last_color = color; } } @@ -340,7 +336,7 @@ static struct q_class_t *classify_quote (struct q_class_t **QuoteList, class->color = ColorQuote[0]; *QuoteList = class; } - return (*QuoteList); + return *QuoteList; } /* Did I mention how much I like emulating Lisp in C? */ @@ -593,9 +589,6 @@ static struct q_class_t *classify_quote (struct q_class_t **QuoteList, return class; } -static int brailleLine = -1; -static int brailleCol = -1; - static int check_attachment_marker (char *); static void @@ -610,7 +603,6 @@ resolve_types (char *buf, char *rawbuf, struct line_t *lineInfo, int n, int last if (n == 0 || ISHEADER (lineInfo[n - 1].type)) { if (buf[0] == '\n') { lineInfo[n].type = MT_COLOR_NORMAL; - getyx(stdscr, brailleLine, brailleCol); } else if (n > 0 && (buf[0] == ' ' || buf[0] == '\t')) { lineInfo[n].type = lineInfo[n - 1].type; /* wrapped line */ @@ -741,7 +733,7 @@ static int is_ansi(unsigned char *buf) { while (isdigit(*buf) || *buf == ';') buf++; - return (*buf == 'm'); + return *buf == 'm'; } static int check_attachment_marker(char *p) @@ -752,73 +744,6 @@ static int check_attachment_marker(char *p) return (int)(*p - *q); } -static int grok_ansi (unsigned char *buf, int pos, ansi_attr * a) -{ - int x = pos; - - while (isdigit (buf[x]) || buf[x] == ';') - x++; - - /* Character Attributes */ - if (option (OPTALLOWANSI) && a != NULL && buf[x] == 'm') { - if (pos == x) { - if (a->pair != -1) - mutt_free_color (a->fg, a->bg); - a->attr = ANSI_OFF; - a->pair = -1; - } - a->bg = -2; - a->fg = -2; - while (pos < x) { - if (buf[pos] == '1' && (pos + 1 == x || buf[pos + 1] == ';')) { - a->attr |= ANSI_BOLD; - pos += 2; - } - else if (buf[pos] == '4' && (pos + 1 == x || buf[pos + 1] == ';')) { - a->attr |= ANSI_UNDERLINE; - pos += 2; - } - else if (buf[pos] == '5' && (pos + 1 == x || buf[pos + 1] == ';')) { - a->attr |= ANSI_BLINK; - pos += 2; - } - else if (buf[pos] == '7' && (pos + 1 == x || buf[pos + 1] == ';')) { - a->attr |= ANSI_REVERSE; - pos += 2; - } - else if (buf[pos] == '0' && (pos + 1 == x || buf[pos + 1] == ';')) { - a->bg = -2; - a->fg = -2; - pos += 2; - } - else if (buf[pos] == '3' && isdigit (buf[pos + 1])) { - if (a->pair != -1) - mutt_free_color (a->fg, a->bg); - a->pair = -1; - a->attr |= ANSI_COLOR; - if (buf[pos + 1] != '9') - a->fg = buf[pos + 1] - '0'; - pos += 3; - } - else if (buf[pos] == '4' && isdigit (buf[pos + 1])) { - if (a->pair != -1) - mutt_free_color (a->fg, a->bg); - a->pair = -1; - a->attr |= ANSI_COLOR; - if (buf[pos + 1] != '9') - a->bg = buf[pos + 1] - '0'; - pos += 3; - } else { - while (pos < x && buf[pos] != ';') - pos++; - pos++; - } - } - } - pos = x; - return pos; -} - /* trim tail of buf so that it contains complete multibyte characters */ static int trim_incomplete_mbyte(unsigned char *buf, size_t len) { mbstate_t mbstate; @@ -850,7 +775,7 @@ fill_buffer (FILE * f, off_t *last_pos, off_t offset, unsigned char *buf, fseeko (f, offset, 0); if (fgets ((char *) buf, blen - 1, f) == NULL) { fmt[0] = 0; - return (-1); + return -1; } *last_pos = ftello (f); b_read = (int) (*last_pos - offset); @@ -891,10 +816,6 @@ fill_buffer (FILE * f, off_t *last_pos, off_t offset, unsigned char *buf, return b_read; } -#ifdef USE_NNTP -#include -#endif - static int format_line (struct line_t **lineInfo, int n, unsigned char *buf, int flags, ansi_attr * pa, int cnt, int *pspace, int *pvch, int *pcol, int *pspecial) @@ -905,14 +826,13 @@ static int format_line (struct line_t **lineInfo, int n, unsigned char *buf, wchar_t wc; mbstate_t mbstate; - int wrap_cols = COLS; + int wrap_cols = getmaxx(main_w); if (!(flags & (M_SHOWFLAT))) wrap_cols -= WrapMargin; - wrap_cols -= SW; if (wrap_cols <= 0) - wrap_cols = COLS; + wrap_cols = getmaxx(main_w); /* FIXME: this should come from lineInfo */ p_clear(&mbstate, 1); @@ -920,8 +840,10 @@ static int format_line (struct line_t **lineInfo, int n, unsigned char *buf, for (ch = 0, vch = 0; ch < cnt; ch += k, vch += k) { /* Handle ANSI sequences */ while (cnt - ch >= 2 && buf[ch] == '\033' && buf[ch + 1] == '[' && - is_ansi (buf + ch + 2)) - ch = grok_ansi (buf, ch + 2, pa) + 1; + is_ansi (buf + ch + 2)) { + while (isdigit(buf[ch]) || buf[ch] == ';') + ch++; + } while (cnt - ch >= 2 && buf[ch] == '\033' && buf[ch + 1] == ']' && check_attachment_marker ((char *) buf + ch) == 0) { @@ -940,7 +862,7 @@ static int format_line (struct line_t **lineInfo, int n, unsigned char *buf, break; col += 4; if (pa) - printw ("\\%03o", buf[ch]); + wprintw(main_w, "\\%03o", buf[ch]); k = 1; continue; } @@ -993,7 +915,7 @@ static int format_line (struct line_t **lineInfo, int n, unsigned char *buf, break; col += t; if (pa) - mutt_addwch (wc); + waddwch(main_w, wc); } else if (wc == '\n') break; @@ -1004,7 +926,7 @@ static int format_line (struct line_t **lineInfo, int n, unsigned char *buf, break; if (pa) for (; col < t; col++) - addch (' '); + waddch(main_w, ' '); else col = t; } @@ -1013,20 +935,20 @@ static int format_line (struct line_t **lineInfo, int n, unsigned char *buf, break; col += 2; if (pa) - printw ("^%c", ('@' + wc) & 0x7f); + wprintw(main_w, "^%c", ('@' + wc) & 0x7f); } else if (wc < 0x100) { if (col + 4 > wrap_cols) break; col += 4; if (pa) - printw ("\\%03o", wc); + wprintw(main_w, "\\%03o", wc); } else { if (col + 1 > wrap_cols) break; ++col; if (pa) - addch (CharsetReplacement); + waddch(main_w, CharsetReplacement); } } *pspace = space; @@ -1094,7 +1016,7 @@ display_line (FILE * f, off_t *last_pos, struct line_t **lineInfo, int n, &buf_ready) < 0) { if (change_last) (*last)--; - return (-1); + return -1; } resolve_types ((char *) fmt, (char *) buf, *lineInfo, n, *last, @@ -1126,7 +1048,7 @@ display_line (FILE * f, off_t *last_pos, struct line_t **lineInfo, int n, &buf_ready) < 0) { if (change_last) (*last)--; - return (-1); + return -1; } regexec ((regex_t *) QuoteRegexp.rx, (char *) fmt, 1, pmatch, 0); (*lineInfo)[n].quote = classify_quote (QuoteList, @@ -1142,7 +1064,7 @@ display_line (FILE * f, off_t *last_pos, struct line_t **lineInfo, int n, &buf_ready) < 0) { if (change_last) (*last)--; - return (-1); + return -1; } offset = 0; @@ -1172,18 +1094,18 @@ display_line (FILE * f, off_t *last_pos, struct line_t **lineInfo, int n, if (!(flags & M_SHOW) && (*lineInfo)[n + 1].offset > 0) { /* we've already scanned this line, so just exit */ - return (0); + return 0; } if ((flags & M_SHOWCOLOR) && *force_redraw && (*lineInfo)[n + 1].offset > 0) { /* no need to try to display this line... */ - return (1); /* fake display */ + return 1; /* fake display */ } if ((b_read = fill_buffer (f, last_pos, (*lineInfo)[n].offset, buf, fmt, sizeof (buf), &buf_ready)) < 0) { if (change_last) (*last)--; - return (-1); + return -1; } /* now chose a good place to break the line */ @@ -1231,22 +1153,14 @@ display_line (FILE * f, off_t *last_pos, struct line_t **lineInfo, int n, /* display the line */ format_line (lineInfo, n, buf, flags, &a, cnt, &ch, &vch, &col, &special); - /* avoid a bug in ncurses... */ -#ifndef USE_SLANG_CURSES - if (col == 0) { - SETCOLOR (MT_COLOR_NORMAL); - addch (' '); - } -#endif - /* end the last color pattern (needed by S-Lang) */ - if (special || (col != COLS && (flags & (M_SHOWCOLOR | M_SEARCH)))) - resolve_color (*lineInfo, n, vch, flags, 0, &a); + if (special || (col != getmaxx(main_w) && (flags & (M_SHOWCOLOR | M_SEARCH)))) + resolve_color(*lineInfo, n, vch, flags, 0, &a); /* * Fill the blank space at the end of the line with the prevailing color. - * ncurses does an implicit clrtoeol() when you do addch('\n') so we have - * to make sure to reset the color *after* that + * ncurses does an implicit wclrtoeol(main_w) when you do waddch(main_w, + * '\n') so we have to make sure to reset the color *after* that */ if (flags & M_SHOWCOLOR) { m = ((*lineInfo)[n].continuation) ? ((*lineInfo)[n].syntax)[0].first : n; @@ -1255,36 +1169,26 @@ display_line (FILE * f, off_t *last_pos, struct line_t **lineInfo, int n, else def_color = ColorDefs[(*lineInfo)[m].type]; - attrset (def_color); -#ifdef HAVE_BKGDSET - bkgdset (def_color | ' '); -#endif + wattrset(main_w, def_color); + wbkgdset(main_w, def_color | ' '); } - - /* ncurses always wraps lines when you get to the right side of the - * screen, but S-Lang seems to only wrap if the next character is *not* - * a newline (grr!). - */ -#ifndef USE_SLANG_CURSES - if (col < COLS) -#endif - addch ('\n'); + waddch(main_w, '\n'); /* * reset the color back to normal. This *must* come after the - * addch('\n'), otherwise the color for this line will not be + * waddch(main_w, '\n'), otherwise the color for this line will not be * filled to the right margin. */ if (flags & M_SHOWCOLOR) { - SETCOLOR (MT_COLOR_NORMAL); - BKGDSET (MT_COLOR_NORMAL); + SETCOLOR(main_w, MT_COLOR_NORMAL); + BKGDSET(main_w, MT_COLOR_NORMAL); } /* build a return code */ if (!(flags & M_SHOW)) flags = 0; - return (flags); + return flags; } static int upNLines (int nlines, struct line_t *info, int cur, int hiding) @@ -1298,31 +1202,6 @@ static int upNLines (int nlines, struct line_t *info, int cur, int hiding) return cur; } -static struct mapping_t PagerHelp[] = { - {N_("Exit"), OP_EXIT}, - {N_("PrevPg"), OP_PREV_PAGE}, - {N_("NextPg"), OP_NEXT_PAGE}, - {NULL, 0} -}; -static struct mapping_t PagerHelpExtra[] = { - {N_("View Attachm."), OP_VIEW_ATTACHMENTS}, - {N_("Del"), OP_DELETE}, - {N_("Reply"), OP_REPLY}, - {N_("Next"), OP_MAIN_NEXT_UNDELETED}, - {NULL, 0} -}; - -#ifdef USE_NNTP -static struct mapping_t PagerNewsHelpExtra[] = { - {N_("Post"), OP_POST}, - {N_("Followup"), OP_FOLLOWUP}, - {N_("Del"), OP_DELETE}, - {N_("Next"), OP_MAIN_NEXT_UNDELETED}, - {NULL, 0} -}; -#endif - - /* This pager is actually not so simple as it once was. It now operates in two modes: one for viewing messages and the other for viewing help. These can be distinguished by whether or not ``hdr'' is NULL. The ``hdr'' arg @@ -1333,8 +1212,6 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) { static char searchbuf[STRING]; char buffer[LONG_STRING]; - char helpstr[STRING * 2]; - char tmphelp[STRING * 2]; int maxLine, lastLine = 0; struct line_t *lineInfo; struct q_class_t *QuoteList = NULL; @@ -1352,32 +1229,26 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) int bodyoffset = 1; /* offset of first line of real text */ int statusoffset = 0; /* offset for the status bar */ - int helpoffset = LINES - 2; /* offset for the help bar. */ int bodylen = LINES - 2 - bodyoffset; /* length of displayable area */ MUTTMENU *pager_index = NULL; /* the Pager Index (PI) */ - int indexoffset = 0; /* offset for the PI */ - int indexlen = PagerIndexLines; /* indexlen not always == PIL */ + int indexlen = PagerIndexLines; /* indexlen not always == PIL */ int indicator = indexlen / 3; /* the indicator line of the PI */ int old_PagerIndexLines; /* some people want to resize it * while inside the pager... */ -#ifdef USE_NNTP - char *followup_to; -#endif - if (!(flags & M_SHOWCOLOR)) flags |= M_SHOWFLAT; if ((fp = fopen (fname, "r")) == NULL) { mutt_perror (fname); - return (-1); + return -1; } if (stat (fname, &sb) != 0) { mutt_perror (fname); m_fclose(&fp); - return (-1); + return -1; } unlink (fname); @@ -1397,32 +1268,13 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) (lineInfo[i].syntax)[0].first = (lineInfo[i].syntax)[0].last = -1; } - mutt_compile_help (helpstr, sizeof(helpstr), MENU_PAGER, PagerHelp); - if (IsHeader (extra)) { - m_strcpy(tmphelp, sizeof(tmphelp), helpstr); - mutt_compile_help (buffer, sizeof(buffer), MENU_PAGER, -#ifdef USE_NNTP - (Context - && (Context->magic == M_NNTP)) ? PagerNewsHelpExtra : -#endif - PagerHelpExtra); - snprintf (helpstr, sizeof (helpstr), "%s %s", tmphelp, buffer); - } - if (!InHelp) { - m_strcpy(tmphelp, sizeof(tmphelp), helpstr); - mutt_make_help (buffer, sizeof(buffer), _("Help"), MENU_PAGER, OP_HELP); - snprintf (helpstr, sizeof(helpstr), "%s %s", tmphelp, buffer); - } - while (ch != -1) { mutt_curs_set (0); imap_keepalive (); if (redraw & REDRAW_FULL) { - SETCOLOR (MT_COLOR_NORMAL); - /* clear() doesn't optimize screen redraws */ - move (0, 0); - clrtobot (); + SETCOLOR(main_w, MT_COLOR_NORMAL); + werase(main_w); if (IsHeader (extra) && Context->vcount + 1 < PagerIndexLines) indexlen = Context->vcount + 1; @@ -1431,32 +1283,14 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) indicator = indexlen / 3; - if (option (OPTSTATUSONTOP)) { - indexoffset = 0; - statusoffset = IsHeader (extra) ? indexlen : 0; - bodyoffset = statusoffset + 1; - helpoffset = LINES - 2; - bodylen = helpoffset - bodyoffset; - if (!option (OPTHELP)) - bodylen++; - } else { - helpoffset = 0; - indexoffset = 1; - statusoffset = LINES - 2; - if (!option (OPTHELP)) - indexoffset = 0; - bodyoffset = indexoffset + (IsHeader (extra) ? indexlen : 0); - bodylen = statusoffset - bodyoffset; - } + statusoffset = IsHeader (extra) ? indexlen : 0; + bodyoffset = statusoffset + 1; + bodylen = LINES - 2 - bodyoffset; - if (option (OPTHELP)) { - SETCOLOR (MT_COLOR_STATUS); - move (helpoffset, SW); - mutt_paddstr (COLS-SW, helpstr); - SETCOLOR (MT_COLOR_NORMAL); - } + SETCOLOR(main_w, MT_COLOR_SIDEBAR); + mvwhline(main_w, LINES - 2, 0, ACS_HLINE, getmaxx(main_w)); + SETCOLOR(main_w, MT_COLOR_NORMAL); -#if defined (USE_SLANG_CURSES) || defined (HAVE_RESIZETERM) if (Resize != NULL) { if ((SearchCompiled = Resize->SearchCompiled)) { REGCOMP @@ -1469,7 +1303,6 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) p_delete(&Resize); } -#endif if (IsHeader (extra) && PagerIndexLines) { if (pager_index == NULL) { @@ -1483,9 +1316,8 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) pager_index->current = extra->hdr->virtual; } - SETCOLOR (MT_COLOR_NORMAL); - pager_index->offset = indexoffset + (option (OPTSTATUSONTOP) ? 1 : 0); - + SETCOLOR(main_w, MT_COLOR_NORMAL); + pager_index->offset = 1; pager_index->pagelen = indexlen - 1; /* some fudge to work out where abouts the indicator should go */ @@ -1520,7 +1352,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) if ((redraw & REDRAW_BODY) || topline != oldtopline) { do { - move (bodyoffset, SW); + wmove(main_w, bodyoffset, 0); curline = oldtopline = topline; lines = 0; force_redraw = 0; @@ -1533,21 +1365,21 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) &SearchRE) > 0) lines++; curline++; - move (lines + bodyoffset, SW); + wmove(main_w, lines + bodyoffset, 0); redraw |= REDRAW_SIDEBAR; } last_offset = lineInfo[curline].offset; } while (force_redraw); - SETCOLOR (MT_COLOR_TILDE); - BKGDSET (MT_COLOR_TILDE); + SETCOLOR(main_w, MT_COLOR_TILDE); + BKGDSET(main_w, MT_COLOR_TILDE); while (lines < bodylen) { - clrtoeol (); + wclrtoeol(main_w); if (option (OPTTILDE)) - addch ('~'); - addch ('\n'); + waddch(main_w, '~'); + waddch(main_w, '\n'); lines++; - move (lines + bodyoffset, SW); + wmove(main_w, lines + bodyoffset, 0); } /* We are going to update the pager status bar, so it isn't * necessary to reset to normal color now. */ @@ -1557,34 +1389,35 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) if (redraw & REDRAW_STATUS) { /* print out the pager status bar */ - SETCOLOR (MT_COLOR_STATUS); - BKGDSET (MT_COLOR_STATUS); - CLEARLINE_WIN (statusoffset); + SETCOLOR(main_w, MT_COLOR_STATUS); + BKGDSET(main_w, MT_COLOR_STATUS); + wmove(main_w, statusoffset, 0); + wclrtoeol(main_w); if (IsHeader (extra)) { - size_t l1 = (COLS - 9) * MB_LEN_MAX; + size_t l1 = (getmaxx(main_w) - 9) * MB_LEN_MAX; size_t l2 = sizeof (buffer); _mutt_make_string (buffer, l1 < l2 ? l1 : l2, NONULL (PagerFmt), Context, extra->hdr, M_FORMAT_MAKEPRINT); } else if (IsMsgAttach (extra)) { - size_t l1 = (COLS - 9) * MB_LEN_MAX; + size_t l1 = (getmaxx(main_w) - 9) * MB_LEN_MAX; size_t l2 = sizeof (buffer); _mutt_make_string (buffer, l1 < l2 ? l1 : l2, NONULL (PagerFmt), Context, extra->bdy->hdr, M_FORMAT_MAKEPRINT); } - move(statusoffset,SW); - mutt_paddstr (COLS - 10 - SW, IsHeader (extra) || - IsMsgAttach (extra) ? buffer : banner); + wmove(main_w, statusoffset, 0); + mutt_paddstr(main_w, getmaxx(main_w) - 10, + IsHeader(extra) || IsMsgAttach(extra) ? buffer : banner); - addstr (" -- ("); + waddstr(main_w, " -- ("); if (last_pos < sb.st_size - 1) - printw ("%d%%)", (int) (100 * last_offset / sb.st_size)); + wprintw(main_w, "%d%%)", (int) (100 * last_offset / sb.st_size)); else - addstr (topline == 0 ? "all)" : "end)"); - BKGDSET (MT_COLOR_NORMAL); - SETCOLOR (MT_COLOR_NORMAL); + waddstr(main_w, topline == 0 ? "all)" : "end)"); + BKGDSET(main_w, MT_COLOR_NORMAL); + SETCOLOR(main_w, MT_COLOR_NORMAL); } if (redraw & REDRAW_SIDEBAR) @@ -1597,27 +1430,17 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) sidebar_draw (); /* print out the pager_index status bar */ menu_status_line (buffer, sizeof (buffer), pager_index, NONULL (Status)); - move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)), SW); - SETCOLOR (MT_COLOR_STATUS); - BKGDSET (MT_COLOR_STATUS); - mutt_paddstr (COLS-SW, buffer); - SETCOLOR (MT_COLOR_NORMAL); - BKGDSET (MT_COLOR_NORMAL); + wmove(main_w, 0, 0); + SETCOLOR(main_w, MT_COLOR_STATUS); + BKGDSET(main_w, MT_COLOR_STATUS); + mutt_paddstr(main_w, getmaxx(main_w), buffer); + SETCOLOR(main_w, MT_COLOR_NORMAL); + BKGDSET(main_w, MT_COLOR_NORMAL); } - /* if we're not using the index, update every time */ - if (index == 0) - sidebar_draw (); + sidebar_draw (); redraw = 0; - - if (option(OPTBRAILLEFRIENDLY)) { - if (brailleLine!=-1) { - move(brailleLine+1, 0); - brailleLine = -1; - } - } else - move (statusoffset, COLS-1); - mutt_refresh (); + mutt_refresh(); if (IsHeader (extra) && OldHdr == extra->hdr && TopLine != topline && lineInfo[curline].offset < sb.st_size-1) { @@ -1639,9 +1462,9 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) mutt_query_exit (); continue; } -#if defined (USE_SLANG_CURSES) || defined (HAVE_RESIZETERM) - else if (SigWinch) { - mutt_resize_screen (); + + if (SigWinch) { + ui_layout_resize(); /* Store current position. */ lines = -1; @@ -1678,13 +1501,10 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) redraw = REDRAW_FULL | REDRAW_SIGWINCH; ch = 0; } - - SigWinch = 0; - clearok (stdscr, TRUE); /*force complete redraw */ continue; } -#endif - else if (ch == -1) { + + if (ch == -1) { ch = 0; continue; } @@ -1995,7 +1815,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) break; case OP_REDRAW: - clearok (stdscr, TRUE); + clearok(main_w, TRUE); redraw = REDRAW_FULL; break; @@ -2216,70 +2036,6 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) redraw = REDRAW_FULL; break; -#ifdef USE_NNTP - case OP_POST: - CHECK_MODE (IsHeader (extra) && !IsAttach (extra)); - CHECK_ATTACH; - if (extra->ctx && extra->ctx->magic == M_NNTP && - !((NNTP_DATA *) extra->ctx->data)->allowed && - query_quadoption (OPT_TOMODERATED, - _ - ("Posting to this group not allowed, may be moderated. Continue?")) - != M_YES) - break; - ci_send_message (SENDNEWS, NULL, NULL, extra->ctx, NULL); - redraw = REDRAW_FULL; - break; - - case OP_FORWARD_TO_GROUP: - CHECK_MODE (IsHeader (extra) || IsMsgAttach (extra)); - CHECK_ATTACH; - if (extra->ctx && extra->ctx->magic == M_NNTP && - !((NNTP_DATA *) extra->ctx->data)->allowed && - query_quadoption (OPT_TOMODERATED, - _ - ("Posting to this group not allowed, may be moderated. Continue?")) - != M_YES) - break; - if (IsMsgAttach (extra)) - mutt_attach_forward (extra->fp, extra->hdr, extra->idx, - extra->idxlen, extra->bdy, SENDNEWS); - else - ci_send_message (SENDNEWS | SENDFORWARD, NULL, NULL, extra->ctx, - extra->hdr); - redraw = REDRAW_FULL; - break; - - case OP_FOLLOWUP: - CHECK_MODE (IsHeader (extra) || IsMsgAttach (extra)); - CHECK_ATTACH; - - if (IsMsgAttach (extra)) - followup_to = extra->bdy->hdr->env->followup_to; - else - followup_to = extra->hdr->env->followup_to; - - if (!followup_to || m_strcasecmp(followup_to, "poster") || - query_quadoption (OPT_FOLLOWUPTOPOSTER, - _("Reply by mail as poster prefers?")) != M_YES) { - if (extra->ctx && extra->ctx->magic == M_NNTP - && !((NNTP_DATA *) extra->ctx->data)->allowed - && query_quadoption (OPT_TOMODERATED, - _ - ("Posting to this group not allowed, may be moderated. Continue?")) - != M_YES) - break; - if (IsMsgAttach (extra)) - mutt_attach_reply (extra->fp, extra->hdr, extra->idx, - extra->idxlen, extra->bdy, SENDNEWS | SENDREPLY); - else - ci_send_message (SENDNEWS | SENDREPLY, NULL, NULL, - extra->ctx, extra->hdr); - redraw = REDRAW_FULL; - break; - } -#endif - case OP_REPLY: CHECK_MODE (IsHeader (extra) || IsMsgAttach (extra)); CHECK_ATTACH; @@ -2446,10 +2202,6 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) } break; - case OP_VERSION: - mutt_version (); - break; - case OP_BUFFY_LIST: if (option (OPTFORCEBUFFYCHECK)) buffy_check (1); @@ -2515,7 +2267,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) p_delete(&lineInfo); if (pager_index) mutt_menuDestroy (&pager_index); - return (rc != -1 ? rc : 0); + return rc != -1 ? rc : 0; } #undef CHECK_ATTACH