#include <string.h>
#include <stdlib.h>
+#define SW (option(OPTMBOXPANE)?SidebarWidth:0)
+
extern int Charset_is_utf8; /* FIXME: bad modularisation */
extern size_t UngetCount;
if (option (OPTHELP)) {
SETCOLOR (MT_COLOR_STATUS);
- move (option (OPTSTATUSONTOP) ? LINES - 2 : 0, 0);
- mutt_paddstr (COLS, menu->help);
+ move (option (OPTSTATUSONTOP) ? LINES - 2 : 0, SW);
+ mutt_paddstr (COLS-SW, menu->help);
SETCOLOR (MT_COLOR_NORMAL);
menu->offset = 1;
menu->pagelen = LINES - 3;
menu->pagelen = LINES - 2;
}
+ sidebar_draw_frames();
+
mutt_show_error ();
menu->redraw = REDRAW_INDEX | REDRAW_STATUS;
snprintf (buf, sizeof (buf), M_MODEFMT, menu->title);
SETCOLOR (MT_COLOR_STATUS);
- move (option (OPTSTATUSONTOP) ? 0 : LINES - 2, 0);
- mutt_paddstr (COLS, buf);
+ move (option (OPTSTATUSONTOP) ? 0 : LINES - 2, SW);
+ mutt_paddstr (COLS-SW, buf);
SETCOLOR (MT_COLOR_NORMAL);
menu->redraw &= ~REDRAW_STATUS;
+ sidebar_draw_frames();
}
void menu_redraw_index (MUTTMENU * menu)
char buf[STRING];
int i;
- sidebar_draw (1);
for (i = menu->top; i < menu->top + menu->pagelen; i++) {
if (i < menu->max) {
menu_make_entry (buf, sizeof (buf), menu, i);
if (i == menu->current) {
attrset (menu->color (i));
ADDCOLOR (MT_COLOR_INDICATOR);
+ BKGDSET (MT_COLOR_INDICATOR);
addstr ("->");
attrset (menu->color (i));
addch (' ');
}
else {
attrset (menu->color (i));
- move (i - menu->top + menu->offset, SidebarWidth);
+ move (i - menu->top + menu->offset, SW);
addstr (" ");
}
print_enriched_string (menu->color (i), (unsigned char *) buf, 1);
SETCOLOR (MT_COLOR_NORMAL);
+ BKGDSET (MT_COLOR_NORMAL);
}
else {
attrset (menu->color (i));
}
CLEARLINE_WIN (i - menu->top + menu->offset);
+
+ move (i - menu->top + menu->offset, SW);
print_enriched_string (menu->color (i), (unsigned char *) buf,
i != menu->current);
SETCOLOR (MT_COLOR_NORMAL);
else
CLEARLINE_WIN (i - menu->top + menu->offset);
}
+ sidebar_draw (1);
+/* sidebar_draw_frames(); */
+
menu->redraw = 0;
}
return;
}
- move (menu->oldcurrent + menu->offset - menu->top, SidebarWidth);
+ move (menu->oldcurrent + menu->offset - menu->top, SW);
SETCOLOR (MT_COLOR_NORMAL);
BKGDSET (MT_COLOR_NORMAL);
clrtoeol ();
menu_make_entry (buf, sizeof (buf), menu, menu->oldcurrent);
menu_pad_string (buf, sizeof (buf));
- move (menu->oldcurrent + menu->offset - menu->top, SidebarWidth + 3);
+ move (menu->oldcurrent + menu->offset - menu->top, SW + 3);
print_enriched_string (menu->color (menu->oldcurrent),
(unsigned char *) buf, 1);
SETCOLOR (MT_COLOR_NORMAL);
}
/* now draw it in the new location */
- move (menu->current + menu->offset - menu->top, SidebarWidth);
+ move (menu->current + menu->offset - menu->top, SW);
attrset (menu->color (menu->current));
ADDCOLOR (MT_COLOR_INDICATOR);
addstr ("->");
ADDCOLOR (MT_COLOR_INDICATOR);
BKGDSET (MT_COLOR_INDICATOR);
CLEARLINE_WIN (menu->current - menu->top + menu->offset);
+ move (menu->current + menu->offset - menu->top, SW);
print_enriched_string (menu->color (menu->current), (unsigned char *) buf,
0);
SETCOLOR (MT_COLOR_NORMAL);
{
char buf[STRING];
- move (menu->current + menu->offset - menu->top, SidebarWidth);
+ move (menu->current + menu->offset - menu->top, SW);
menu_make_entry (buf, sizeof (buf), menu, menu->current);
menu_pad_string (buf, sizeof (buf));
menu->top = 0;
set_option (OPTNEEDREDRAW);
}
- }
- else if (menu->current >= menu->top + menu->pagelen - c) { /* indicator below bottom threshold */
- if (option (OPTMENUSCROLL) || (menu->pagelen <= 0))
- menu->top = menu->current - menu->pagelen + c + 1;
- else
- menu->top +=
- (menu->pagelen -
- c) * ((menu->current - menu->top) / (menu->pagelen - c)) - c;
- }
- else if (menu->current < menu->top + c) { /* indicator above top threshold */
- if (option (OPTMENUSCROLL) || (menu->pagelen <= 0))
- menu->top = menu->current - c;
- else
- menu->top -=
- (menu->pagelen -
- c) * ((menu->top + menu->pagelen - 1 -
- menu->current) / (menu->pagelen - c)) - c;
+ } else {
+ if (option (OPTMENUSCROLL) || (menu->pagelen <= 0) || (c < MenuContext)) {
+ if (menu->current < menu->top + c)
+ menu->top = menu->current - c;
+ else if (menu->current >= menu->top + menu->pagelen - c)
+ menu->top = menu->current - menu->pagelen + c + 1;
+ } else {
+ if (menu->current < menu->top + c)
+ menu->top -= (menu->pagelen - c) * ((menu->top + menu->pagelen - 1 - menu->current) / (menu->pagelen - c)) - c;
+ else if ((menu->current >= menu->top + menu->pagelen - c))
+ menu->top += (menu->pagelen - c) * ((menu->current - menu->top) / (menu->pagelen - c)) - c;
+ }
}
if (!option (OPTMENUMOVEOFF)) /* make entries stick to bottom */
menu->oldcurrent = menu->current;
if (option (OPTARROWCURSOR))
- move (menu->current - menu->top + menu->offset, 2);
+ move (menu->current - menu->top + menu->offset, SW + 2);
else if (option (OPTBRAILLEFRIENDLY))
- move (menu->current - menu->top + menu->offset, 0);
+ move (menu->current - menu->top + menu->offset, SW);
else
move (menu->current - menu->top + menu->offset, COLS - 1);