X-Git-Url: http://git.madism.org/?a=blobdiff_plain;ds=sidebyside;f=sidebar.c;h=cf940c366a22e68ec3d59ed42a5398e032b02156;hb=89c7472ecb566c4cbe9c0022515feeda02fabf79;hp=42a3546bc59c29880e03ccafc8d3d2310d247a06;hpb=50adaa99ec40c06e557a13394b6f7e62bcc5b9fa;p=apps%2Fmadmutt.git diff --git a/sidebar.c b/sidebar.c index 42a3546..cf940c3 100644 --- a/sidebar.c +++ b/sidebar.c @@ -33,10 +33,7 @@ static short initialized = 0; static short prev_show_value; /* computes first entry to be shown */ -void calc_boundaries (int menu) -{ - int lines = 0; - +static void calc_boundaries (void) { if (list_empty(Incoming)) return; if (CurBuffy < 0 || CurBuffy >= Incoming->length) @@ -44,8 +41,6 @@ void calc_boundaries (int menu) if (TopBuffy < 0 || TopBuffy >= Incoming->length) TopBuffy = 0; - lines = LINES - 2 - (option (OPTSTATUSONTOP)); - known_lines = lines; if (option (OPTSIDEBARNEWMAILONLY)) { int i = CurBuffy; TopBuffy = CurBuffy - 1; @@ -55,7 +50,7 @@ void calc_boundaries (int menu) i--; } } else - TopBuffy = CurBuffy - (CurBuffy % lines); + TopBuffy = CurBuffy - (CurBuffy % known_lines); if (TopBuffy < 0) TopBuffy = 0; } @@ -258,8 +253,10 @@ const char* sidebar_get_current (void) { /* internally sets item to buf */ void sidebar_set_current (const char* buf) { int i = buffy_lookup (buf); - if (i >= 0) + if (i >= 0) { CurBuffy = i; + calc_boundaries(); + } } /* fix counters for a context @@ -282,12 +279,22 @@ void sidebar_set_buffystats (CONTEXT* Context) { */ int sidebar_draw (int menu) { - - int lines = option (OPTHELP) ? 1 : 0, draw_devider = 1, i = 0; + int first_line = option (OPTSTATUSONTOP) ? 1 : option (OPTHELP) ? 1 : 0; + int last_line = LINES-1; + int draw_devider = 1, i = 0; + int line; BUFFY *tmp; short delim_len = str_len (SidebarDelim); char blank[SHORT_STRING]; + if (option (OPTSTATUSONTOP)) { + last_line -= option (OPTHELP) ? 1 : 0; + } else { + last_line -= 1-(menu==MENU_PAGER); + } + + known_lines=last_line-first_line; + /* initialize first time */ if (!initialized) { prev_show_value = option (OPTMBOXPANE); @@ -296,6 +303,9 @@ int sidebar_draw (int menu) initialized = 1; } + if (TopBuffy==0 || CurBuffy==0) + calc_boundaries(); + /* save or restore the value SidebarWidth */ if (prev_show_value != option (OPTMBOXPANE)) { if (!prev_show_value && option (OPTMBOXPANE)) { @@ -319,10 +329,8 @@ int sidebar_draw (int menu) if (draw_devider == 1){ /* draw the divider */ SETCOLOR (MT_COLOR_SIDEBAR); - for (lines = 1; - lines < LINES - 1 - (menu != MENU_PAGER || option (OPTSTATUSONTOP)); - lines++) { - move (lines, SidebarWidth - delim_len); + for (line = first_line; line < last_line; line++) { + move (line, SidebarWidth - delim_len); if (option (OPTASCIICHARS)) addstr (NONULL (SidebarDelim)); else if (!option (OPTASCIICHARS) && !str_cmp (SidebarDelim, "|")) @@ -337,12 +345,9 @@ int sidebar_draw (int menu) if (list_empty(Incoming)) return 0; - lines = option (OPTHELP) ? 1 : 0; /* go back to the top */ - calc_boundaries (menu); /* actually print items */ - for (i = TopBuffy; i < Incoming->length && lines < LINES - 1 - - (menu != MENU_PAGER || option (OPTSTATUSONTOP)); i++) { + for (i = TopBuffy, line=first_line; i < Incoming->length && line < last_line; i++) { tmp = (BUFFY*) Incoming->data[i]; if (i == CurBuffy) @@ -354,15 +359,15 @@ int sidebar_draw (int menu) else SETCOLOR (MT_COLOR_NORMAL); - move (lines, 0); - lines += make_sidebar_entry (tmp->path, i, SidebarWidth-delim_len); + move (line, 0); + line += make_sidebar_entry (tmp->path, i, SidebarWidth-delim_len); } /* fill with blanks to bottom */ memset (&blank, ' ', sizeof (blank)); SETCOLOR (MT_COLOR_NORMAL); - for (; lines < LINES - 1 - (menu != MENU_PAGER || option (OPTSTATUSONTOP)); lines++) { - move (lines, 0); + for (; line < last_line; line++) { + move (line, 0); addnstr (blank, SidebarWidth-delim_len); } return 0; @@ -455,6 +460,6 @@ void sidebar_scroll (int op, int menu) { default: return; } - calc_boundaries (menu); + calc_boundaries (); sidebar_draw (menu); }