aboutsummaryrefslogtreecommitdiff
path: root/src/imv.c
diff options
context:
space:
mode:
authorHarry Jeffery <harry@exec64.co.uk>2019-08-16 19:08:54 +0100
committerHarry Jeffery <harry@exec64.co.uk>2019-08-16 19:08:54 +0100
commitc6ce270ee1e54fc7ae9c4029923bccedbcac5ad2 (patch)
tree4a5158d82b0a566edab9d94ad49a2b3885fa1a0a /src/imv.c
parent505340f9fdd7e8d8356c25035b254c8f9ee367a6 (diff)
downloadimv-c6ce270ee1e54fc7ae9c4029923bccedbcac5ad2.tar.gz
imv: Add index/all argument to close command
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;
}