static void printwait(const char *msg, int *presel)
{
printmsg(msg);
- *presel = MSGWAIT;
+ if (presel)
+ *presel = MSGWAIT;
}
/* Kill curses and display error before exiting */
#endif
c = presel;
- if (c == 0 || c == '$') {
+ if (c == 0 || c == MSGWAIT) {
c = getch();
DPRINTF_D(c);
- if (presel == '$')
- c = CONTROL('L');
+ if (presel == MSGWAIT) {
+ if (cfg.filtermode)
+ c = FILTER;
+ else
+ c = CONTROL('L');
+ }
}
if (c == -1) {
case SEL_DETAIL:
cfg.showdetail ^= 1;
cfg.showdetail ? (printptr = &printent_long) : (printptr = &printent);
- break;
+ continue;
case SEL_FSIZE:
cfg.sizeorder ^= 1;
cfg.mtimeorder = 0;
g_crc = crc8fast((uchar *)dents, ndents * sizeof(struct entry));
copystartid = cur;
ncp = 0;
- printwait("selection on", &presel);
- goto nochange;
+ mvprintw(xlines - 1, 0, "selection on");
+ getch();
+ continue;
}
if (!ncp) { /* Handle range selection */
dents[r].flags |= FILE_COPIED;
}
- mvprintw(xlines - 1, 0, "%d files selected\n",
- copyendid - copystartid + 1);
+ ncp = copyendid - copystartid + 1;
+ mvprintw(xlines - 1, 0, "%d files selected\n", ncp);
getch();
- continue; /* delayed message shown, now redraw */
}
if (copybufpos) { /* File path(s) written to the buffer */
if (ncp) { /* Some files cherry picked */
mvprintw(xlines - 1, 0, "%d files selected\n", ncp);
getch();
- continue; /* delayed message shown, now redraw */
}
- } else
+ } else {
printwait("selection off", &presel);
- goto nochange;
+ goto nochange;
+ }
+ continue;
case SEL_COPYLIST:
if (copybufpos) {
showcplist();