diff --git a/commands.c b/commands.c index 830c6af..9ff411b 100644 --- a/commands.c +++ b/commands.c @@ -50,6 +50,7 @@ extern win_t win; extern fileinfo_t *files; extern int filecnt, fileidx; extern int alternate; +extern int markcnt; extern int prefix; extern bool extprefix; @@ -62,7 +63,7 @@ bool cg_quit(arg_t a) { unsigned int i; - if (options->to_stdout) { + if (options->to_stdout && markcnt > 0) { for (i = 0; i < filecnt; i++) { if (files[i].marked) printf("%s\n", files[i].name); @@ -195,6 +196,7 @@ bool cg_scroll_screen(arg_t a) bool cg_toggle_image_mark(arg_t a) { files[fileidx].marked = !files[fileidx].marked; + markcnt += files[fileidx].marked ? 1 : -1; if (mode == MODE_THUMB) tns_mark(&tns, fileidx, files[fileidx].marked); return true; @@ -202,10 +204,12 @@ bool cg_toggle_image_mark(arg_t a) bool cg_reverse_marks(arg_t a) { - int i, cnt = mode == MODE_IMAGE ? filecnt : tns.cnt; + int i; - for (i = 0; i < cnt; i++) + for (i = 0; i < filecnt; i++) { files[i].marked = !files[i].marked; + markcnt += files[i].marked ? 1 : -1; + } if (mode == MODE_THUMB) tns.dirty = true; return true; diff --git a/main.c b/main.c index 48eca54..10d15ab 100644 --- a/main.c +++ b/main.c @@ -73,6 +73,7 @@ win_t win; fileinfo_t *files; int filecnt, fileidx; int alternate; +int markcnt; int prefix; bool extprefix; @@ -168,6 +169,8 @@ void remove_file(int n, bool manual) cleanup(); exit(manual ? EXIT_SUCCESS : EXIT_FAILURE); } + if (files[n].marked) + markcnt--; if (files[n].path != files[n].name) free((void*) files[n].path); @@ -627,6 +630,7 @@ void on_buttonpress(XButtonEvent *bev) case Button3: if ((sel = tns_translate(&tns, bev->x, bev->y)) >= 0) { files[sel].marked = !files[sel].marked; + markcnt += files[sel].marked ? 1 : -1; tns_mark(&tns, sel, files[sel].marked); redraw(); }