X-Git-Url: http://git.madism.org/?a=blobdiff_plain;ds=sidebyside;f=pager.c;h=7132f32b3aa01458b29273c4983d6a902cf60947;hb=8b89861e79d1b2e8ddcc54ea4d89957d6d10ebe6;hp=e7601db6f7d636b52f148e1c216f2c6ce18c2040;hpb=f435868132e200bfa71ac155f037cf64bf5414ba;p=apps%2Fmadmutt.git diff --git a/pager.c b/pager.c index e7601db..7132f32 100644 --- a/pager.c +++ b/pager.c @@ -39,7 +39,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; @@ -149,12 +148,12 @@ resolve_color (struct line_t *lineInfo, int n, int cnt, int flags, int search = 0, i, m; if (!cnt) - last_color = -1; /* force wattrset(stdscr) */ + last_color = -1; /* force wattrset(main_w) */ if (lineInfo[n].continuation) { if (!cnt && option (OPTMARKERS)) { - SETCOLOR (MT_COLOR_MARKERS); - waddch (stdscr, '+'); + SETCOLOR(main_w, MT_COLOR_MARKERS); + waddch(main_w, '+'); last_color = ColorDefs[MT_COLOR_MARKERS]; } m = (lineInfo[n].syntax)[0].first; @@ -246,7 +245,7 @@ resolve_color (struct line_t *lineInfo, int n, int cnt, int flags, } if (color != last_color) { - wattrset (stdscr, color); + wattrset(main_w, color); last_color = color; } } @@ -591,9 +590,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 @@ -608,7 +604,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 */ @@ -903,14 +898,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); @@ -938,7 +932,7 @@ static int format_line (struct line_t **lineInfo, int n, unsigned char *buf, break; col += 4; if (pa) - wprintw (stdscr, "\\%03o", buf[ch]); + wprintw(main_w, "\\%03o", buf[ch]); k = 1; continue; } @@ -991,7 +985,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; @@ -1002,7 +996,7 @@ static int format_line (struct line_t **lineInfo, int n, unsigned char *buf, break; if (pa) for (; col < t; col++) - waddch (stdscr, ' '); + waddch(main_w, ' '); else col = t; } @@ -1011,20 +1005,20 @@ static int format_line (struct line_t **lineInfo, int n, unsigned char *buf, break; col += 2; if (pa) - wprintw (stdscr, "^%c", ('@' + wc) & 0x7f); + wprintw(main_w, "^%c", ('@' + wc) & 0x7f); } else if (wc < 0x100) { if (col + 4 > wrap_cols) break; col += 4; if (pa) - wprintw (stdscr, "\\%03o", wc); + wprintw(main_w, "\\%03o", wc); } else { if (col + 1 > wrap_cols) break; ++col; if (pa) - waddch (stdscr, CharsetReplacement); + waddch(main_w, CharsetReplacement); } } *pspace = space; @@ -1230,12 +1224,12 @@ display_line (FILE * f, off_t *last_pos, struct line_t **lineInfo, int n, format_line (lineInfo, n, buf, flags, &a, cnt, &ch, &vch, &col, &special); /* 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 wclrtoeol(stdscr) when you do waddch(stdscr, + * 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) { @@ -1245,19 +1239,19 @@ display_line (FILE * f, off_t *last_pos, struct line_t **lineInfo, int n, else def_color = ColorDefs[(*lineInfo)[m].type]; - wattrset (stdscr, def_color); - wbkgdset (stdscr, def_color | ' '); + wattrset(main_w, def_color); + wbkgdset(main_w, def_color | ' '); } - waddch (stdscr, '\n'); + waddch(main_w, '\n'); /* * reset the color back to normal. This *must* come after the - * waddch(stdscr, '\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 */ @@ -1355,10 +1349,10 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) imap_keepalive (); if (redraw & REDRAW_FULL) { - SETCOLOR (MT_COLOR_NORMAL); - /* wclear(stdscr) doesn't optimize screen redraws */ - wmove (stdscr, 0, 0); - wclrtobot (stdscr); + SETCOLOR(main_w, MT_COLOR_NORMAL); + /* wclear(main_w) doesn't optimize screen redraws */ + wmove(main_w, 0, 0); + wclrtobot(main_w); if (IsHeader (extra) && Context->vcount + 1 < PagerIndexLines) indexlen = Context->vcount + 1; @@ -1373,24 +1367,18 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) 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; } - if (option (OPTHELP)) { - SETCOLOR (MT_COLOR_STATUS); - wmove (stdscr, helpoffset, SW); - mutt_paddstr (COLS-SW, ""); - SETCOLOR (MT_COLOR_NORMAL); - } + SETCOLOR(main_w, MT_COLOR_STATUS); + wmove(main_w, helpoffset, 0); + mutt_paddstr(main_w, getmaxx(main_w), ""); + SETCOLOR(main_w, MT_COLOR_NORMAL); if (Resize != NULL) { if ((SearchCompiled = Resize->SearchCompiled)) { @@ -1417,7 +1405,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) pager_index->current = extra->hdr->virtual; } - SETCOLOR (MT_COLOR_NORMAL); + SETCOLOR(main_w, MT_COLOR_NORMAL); pager_index->offset = indexoffset + (option (OPTSTATUSONTOP) ? 1 : 0); pager_index->pagelen = indexlen - 1; @@ -1454,7 +1442,7 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) if ((redraw & REDRAW_BODY) || topline != oldtopline) { do { - wmove (stdscr, bodyoffset, SW); + wmove(main_w, bodyoffset, 0); curline = oldtopline = topline; lines = 0; force_redraw = 0; @@ -1467,21 +1455,21 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) &SearchRE) > 0) lines++; curline++; - wmove (stdscr, 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) { - wclrtoeol (stdscr); + wclrtoeol(main_w); if (option (OPTTILDE)) - waddch (stdscr, '~'); - waddch (stdscr, '\n'); + waddch(main_w, '~'); + waddch(main_w, '\n'); lines++; - wmove (stdscr, 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. */ @@ -1491,34 +1479,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); } - wmove(stdscr, 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); - waddstr (stdscr, " -- ("); + waddstr(main_w, " -- ("); if (last_pos < sb.st_size - 1) - wprintw (stdscr, "%d%%)", (int) (100 * last_offset / sb.st_size)); + wprintw(main_w, "%d%%)", (int) (100 * last_offset / sb.st_size)); else - waddstr (stdscr, 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) @@ -1531,27 +1520,19 @@ 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)); - wmove (stdscr, 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, indexoffset + (option(OPTSTATUSONTOP) ? 0 : (indexlen - 1)), 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 (); redraw = 0; - - if (option(OPTBRAILLEFRIENDLY)) { - if (brailleLine!=-1) { - wmove(stdscr, brailleLine+1, 0); - brailleLine = -1; - } - } else - wmove (stdscr, statusoffset, COLS-1); - mutt_refresh (); + mutt_refresh(); if (IsHeader (extra) && OldHdr == extra->hdr && TopLine != topline && lineInfo[curline].offset < sb.st_size-1) { @@ -1573,8 +1554,9 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) mutt_query_exit (); continue; } - else if (SigWinch) { - mutt_resize_screen (); + + if (SigWinch) { + ui_layout_resize(); /* Store current position. */ lines = -1; @@ -1611,12 +1593,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; } - else if (ch == -1) { + + if (ch == -1) { ch = 0; continue; } @@ -1927,7 +1907,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;