commit 47e9f26dc7f2262feabce3a38a7b7b83b9122170 from: Marcel Rodrigues date: Sun Nov 09 16:46:07 2014 UTC Per-tab flags. commit - ada8fba9d4d06258c33e28a6f9eb254048f87b30 commit + 47e9f26dc7f2262feabce3a38a7b7b83b9122170 blob - ce7145530fb3e775a2ca5f6da5be8f247c2c345e blob + e1280ca38e76f9b12933786fe6f09a2b7cc1d116 --- rover.c +++ rover.c @@ -40,7 +40,7 @@ struct rover_t { int nfiles; int scroll[10]; int fsel[10]; - uint8_t flags; + uint8_t flags[10]; row_t *rows; WINDOW *window; char cwd[10][FILENAME_MAX]; @@ -50,6 +50,7 @@ struct rover_t { #define FSIZE(I) rover.rows[I].size #define SCROLL rover.scroll[rover.tab] #define FSEL rover.fsel[rover.tab] +#define FLAGS rover.flags[rover.tab] #define CWD rover.cwd[rover.tab] static int @@ -190,9 +191,9 @@ update_browser() wcolor_set(rover.window, DEFAULT, NULL); } wrefresh(rover.window); - STATUS[0] = rover.flags & SHOW_FILES ? 'F' : ' '; - STATUS[1] = rover.flags & SHOW_DIRS ? 'D' : ' '; - STATUS[2] = rover.flags & SHOW_HIDDEN ? 'H' : ' '; + STATUS[0] = FLAGS & SHOW_FILES ? 'F' : ' '; + STATUS[1] = FLAGS & SHOW_DIRS ? 'D' : ' '; + STATUS[2] = FLAGS & SHOW_HIDDEN ? 'H' : ' '; if (!rover.nfiles) strcpy(ROW, "0/0"); else @@ -222,7 +223,7 @@ cd(int reset) attr_off(A_BOLD, NULL); if (rover.nfiles) free_rows(&rover.rows, rover.nfiles); - rover.nfiles = ls(CWD, &rover.rows, rover.flags); + rover.nfiles = ls(CWD, &rover.rows, FLAGS); (void) wclear(rover.window); wcolor_set(rover.window, RVC_BORDER, NULL); wborder(rover.window, 0, 0, 0, 0, 0, 0, 0, 0); @@ -284,7 +285,10 @@ main() init_term(); /* Avoid invalid free() calls in cd() by zeroing the tally. */ rover.nfiles = 0; - rover.flags = SHOW_FILES | SHOW_DIRS; + for (i = 0; i < 10; i++) { + rover.fsel[i] = rover.scroll[i] = 0; + rover.flags[i] = SHOW_FILES | SHOW_DIRS; + } strcpy(rover.cwd[0], getenv("HOME")); if (rover.cwd[0][strlen(rover.cwd[0]) - 1] != '/') strcat(rover.cwd[0], "/"); @@ -369,8 +373,8 @@ main() first = dirname[0]; dirname[0] = '\0'; cd(1); - if ((rover.flags & SHOW_DIRS) && - ((rover.flags & SHOW_HIDDEN) || (first != '.')) + if ((FLAGS & SHOW_DIRS) && + ((FLAGS & SHOW_HIDDEN) || (first != '.')) ) { dirname[0] = first; dirname[strlen(dirname)] = '/'; @@ -471,15 +475,15 @@ main() update_browser(); } else if (!strcmp(key, RVK_TG_FILES)) { - rover.flags ^= SHOW_FILES; + FLAGS ^= SHOW_FILES; cd(1); } else if (!strcmp(key, RVK_TG_DIRS)) { - rover.flags ^= SHOW_DIRS; + FLAGS ^= SHOW_DIRS; cd(1); } else if (!strcmp(key, RVK_TG_HIDDEN)) { - rover.flags ^= SHOW_HIDDEN; + FLAGS ^= SHOW_HIDDEN; cd(1); } }