X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=pager.c;h=941ae3fe1d7d0850222e718aa21cf7285253e7d3;hp=ecb430d0c069e4c70cacc8f71c7896c101575a9e;hb=6f41c52076e60ae7f2b6337b7dc9ea3fa23400e2;hpb=ba5e3af4ea19e1d20c80941c077039871ec84258 diff --git a/pager.c b/pager.c index ecb430d..941ae3f 100644 --- a/pager.c +++ b/pager.c @@ -16,6 +16,7 @@ #endif #include "mutt.h" +#include "enter.h" #include "mutt_curses.h" #include "keymap.h" #include "mutt_menu.h" @@ -23,6 +24,7 @@ #include "sort.h" #include "pager.h" #include "attach.h" +#include "recvattach.h" #include "mbyte.h" #include "sidebar.h" #include "buffy.h" @@ -62,6 +64,10 @@ static const char *Mailbox_is_read_only = N_("Mailbox is read-only."); static const char *Function_not_permitted_in_attach_message_mode = N_("Function not permitted in attach-message mode."); +/* hack to return to position when returning from index to same message */ +static int TopLine = 0; +static HEADER *OldHdr = NULL; + #define CHECK_MODE(x) if (!(x)) \ { \ mutt_flushinp (); \ @@ -1691,6 +1697,18 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) move (statusoffset, COLS - 1); mutt_refresh (); + + if (IsHeader (extra) && OldHdr == extra->hdr && TopLine != topline + && lineInfo[curline].offset < sb.st_size-1) { + if (TopLine - topline > lines) + topline += lines; + else + topline = TopLine; + continue; + } + else + OldHdr = NULL; + ch = km_dokey (MENU_PAGER); if (ch != -1) mutt_clear_error (); @@ -2528,6 +2546,8 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) break; case OP_BUFFY_LIST: + if (option (OPTFORCEBUFFYCHECK)) + buffy_check (1); buffy_list (); redraw |= REDRAW_SIDEBAR; break; @@ -2587,8 +2607,15 @@ mutt_pager (const char *banner, const char *fname, int flags, pager_t * extra) } fclose (fp); - if (IsHeader (extra)) + if (IsHeader (extra)) { Context->msgnotreadyet = -1; + if (rc == -1) + OldHdr = NULL; + else { + TopLine = topline; + OldHdr = extra->hdr; + } + } cleanup_quote (&QuoteList);