aboutsummaryrefslogtreecommitdiff
path: root/src/imv.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/imv.c')
-rw-r--r--src/imv.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/imv.c b/src/imv.c
index 9dbc7d5..991de70 100644
--- a/src/imv.c
+++ b/src/imv.c
@@ -1536,9 +1536,20 @@ static void command_close(struct list *args, const char *argstr, void *data)
(void)args;
(void)argstr;
struct imv *imv = data;
- char* path = strdup(imv_navigator_selection(imv->navigator));
- imv_navigator_remove(imv->navigator, path);
- free(path);
+ size_t index = imv_navigator_index(imv->navigator);
+
+ if (args->len == 2) {
+ const char *arg = args->items[1];
+ if (!strcmp("all", arg)) {
+ imv_navigator_remove_all(imv->navigator);
+ imv->slideshow.elapsed = 0;
+ return;
+ }
+
+ index = (size_t)strtol(arg, NULL, 10) - 1;
+ }
+
+ imv_navigator_remove_at(imv->navigator, index);
imv->slideshow.elapsed = 0;
}