mutt_set_menu_redraw_full (MENU_MAIN);
if (p->flags & R_PAGER)
mutt_set_menu_redraw_full (MENU_PAGER);
+ if (p->flags & R_PAGER_FLOW)
+ {
+ mutt_set_menu_redraw_full (MENU_PAGER);
+ mutt_set_menu_redraw (MENU_PAGER, REDRAW_FLOW);
+ }
if (p->flags & R_RESORT_SUB)
set_option (OPTSORTSUBTHREADS);
if (p->flags & R_RESORT)
mutt_set_menu_redraw_full (MENU_MAIN);
if (MuttVars[idx].flags & R_PAGER)
mutt_set_menu_redraw_full (MENU_PAGER);
+ if (MuttVars[idx].flags & R_PAGER_FLOW)
+ {
+ mutt_set_menu_redraw_full (MENU_PAGER);
+ mutt_set_menu_redraw (MENU_PAGER, REDRAW_FLOW);
+ }
if (MuttVars[idx].flags & R_RESORT_SUB)
set_option (OPTSORTSUBTHREADS);
if (MuttVars[idx].flags & R_RESORT)
#define R_NONE 0
#define R_INDEX (1<<0) /* redraw the index menu (MENU_MAIN) */
#define R_PAGER (1<<1) /* redraw the pager menu */
-#define R_RESORT (1<<2) /* resort the mailbox */
-#define R_RESORT_SUB (1<<3) /* resort subthreads */
-#define R_RESORT_INIT (1<<4) /* resort from scratch */
-#define R_TREE (1<<5) /* redraw the thread tree */
-#define R_REFLOW (1<<6) /* reflow window layout and full redraw */
-#define R_SIDEBAR (1<<7) /* redraw the sidebar */
-#define R_MENU (1<<8) /* redraw all menus */
+#define R_PAGER_FLOW (1<<2) /* reflow lineInfo and redraw the pager menu */
+#define R_RESORT (1<<3) /* resort the mailbox */
+#define R_RESORT_SUB (1<<4) /* resort subthreads */
+#define R_RESORT_INIT (1<<5) /* resort from scratch */
+#define R_TREE (1<<6) /* redraw the thread tree */
+#define R_REFLOW (1<<7) /* reflow window layout and full redraw */
+#define R_SIDEBAR (1<<8) /* redraw the sidebar */
+#define R_MENU (1<<9) /* redraw all menus */
#define R_BOTH (R_INDEX | R_PAGER)
#define R_RESORT_BOTH (R_RESORT | R_RESORT_SUB)
*/
#endif /* HAVE_GDBM || HAVE_DB4 */
#endif /* USE_HCACHE */
- { "header_color_partial", DT_BOOL, R_PAGER|R_REFLOW, OPTHEADERCOLORPARTIAL, 0 },
+ { "header_color_partial", DT_BOOL, R_PAGER_FLOW, OPTHEADERCOLORPARTIAL, 0 },
/*
** .pp
** When \fIset\fP, color header regexps behave like color body regexps:
** will show up with an ``O'' next to them in the index menu,
** indicating that they are old.
*/
- { "markers", DT_BOOL, R_PAGER, OPTMARKERS, 1 },
+ { "markers", DT_BOOL, R_PAGER_FLOW, OPTMARKERS, 1 },
/*
** .pp
** Controls the display of wrapped lines in the internal pager. If set, a
** messages from the current folder. The default is to pause one second, so
** a value of zero for this option suppresses the pause.
*/
- { "smart_wrap", DT_BOOL, R_PAGER, OPTWRAP, 1 },
+ { "smart_wrap", DT_BOOL, R_PAGER_FLOW, OPTWRAP, 1 },
/*
** .pp
** Controls the display of lines longer than the screen width in the
current_menu->redraw = REDRAW_FULL;
}
+void mutt_set_menu_redraw (int menu_type, int redraw)
+{
+ if (CurrentMenu == menu_type)
+ mutt_set_current_menu_redraw (redraw);
+}
+
void mutt_set_menu_redraw_full (int menu_type)
{
if (CurrentMenu == menu_type)
void mutt_pop_current_menu (MUTTMENU *);
void mutt_set_current_menu_redraw (int);
void mutt_set_current_menu_redraw_full ();
+void mutt_set_menu_redraw (int, int);
void mutt_set_menu_redraw_full (int);
void mutt_current_menu_redraw (void);
int mutt_menuLoop (MUTTMENU *);
char buffer[LONG_STRING];
char helpstr[SHORT_STRING*2];
char tmphelp[SHORT_STRING*2];
- int i, j, ch = 0, rc = -1;
+ int i, ch = 0, rc = -1;
int err, first = 1;
int r = -1, wrapped = 0, searchctx = 0;
- int old_smart_wrap, old_markers;
MUTTMENU *pager_menu = NULL;
int old_PagerIndexLines; /* some people want to resize it
break;
case OP_ENTER_COMMAND:
- old_smart_wrap = option (OPTWRAP);
- old_markers = option (OPTMARKERS);
old_PagerIndexLines = PagerIndexLines;
mutt_enter_command ();
mutt_menuDestroy (&rd.index);
rd.index = NULL;
}
-
- if (option (OPTWRAP) != old_smart_wrap ||
- option (OPTMARKERS) != old_markers)
- {
- if (flags & MUTT_PAGER_RETWINCH)
- {
- ch = -1;
- rc = OP_REFORMAT_WINCH;
- continue;
- }
-
- /* count the real lines above */
- j = 0;
- for (i = 0; i <= rd.topline; i++)
- {
- if (!rd.lineInfo[i].continuation)
- j++;
- }
-
- /* we need to restart the whole thing */
- for (i = 0; i < rd.maxLine; i++)
- {
- rd.lineInfo[i].offset = 0;
- rd.lineInfo[i].type = -1;
- rd.lineInfo[i].continuation = 0;
- rd.lineInfo[i].chunks = 0;
- rd.lineInfo[i].search_cnt = -1;
- rd.lineInfo[i].quote = NULL;
-
- safe_realloc (&(rd.lineInfo[i].syntax), sizeof (struct syntax_t));
- if (rd.SearchCompiled && rd.lineInfo[i].search)
- FREE (&(rd.lineInfo[i].search));
- }
-
- if (rd.SearchCompiled)
- {
- regfree (&rd.SearchRE);
- rd.SearchCompiled = 0;
- }
- rd.SearchFlag = 0;
- /* try to keep the old position */
- rd.topline = 0;
- rd.lastLine = 0;
- while (j > 0 && display_line (rd.fp, &rd.last_pos, &rd.lineInfo, rd.topline,
- &rd.lastLine, &rd.maxLine,
- (rd.has_types ? MUTT_TYPES : 0) | (flags & MUTT_PAGER_NOWRAP),
- &rd.QuoteList, &rd.q_level, &rd.force_redraw,
- &rd.SearchRE, rd.pager_window) == 0)
- {
- if (! rd.lineInfo[rd.topline].continuation)
- j--;
- if (j > 0)
- rd.topline++;
- }
-
- ch = 0;
- }
+ if ((pager_menu->redraw & REDRAW_FLOW) &&
+ (flags & MUTT_PAGER_RETWINCH))
+ {
+ ch = -1;
+ rc = OP_REFORMAT_WINCH;
+ continue;
+ }
+ ch = 0;
break;
case OP_FLAG_MESSAGE: