diff options
author | Kevin Mitchell <kevmitch@gmail.com> | 2015-08-29 00:42:04 -0700 |
---|---|---|
committer | Kevin Mitchell <kevmitch@gmail.com> | 2015-08-30 05:28:24 -0700 |
commit | c80b7eed53dfd9f6a0aadc9c11981cba2a59655d (patch) | |
tree | 44972f05104d989af223ff5d782b0d32faf865ee /input | |
parent | f14f6fdb314ce42537d0948d8a24fbe77c06d17c (diff) | |
download | mpv-c80b7eed53dfd9f6a0aadc9c11981cba2a59655d.tar.bz2 mpv-c80b7eed53dfd9f6a0aadc9c11981cba2a59655d.tar.xz |
input: add append argument to file drop event
This puts in place the machinery to merely append dropped file to the playlist
instead of replacing the existing playlist. In this commit, all front-ends
set this to false preserving the existing behaviour.
Diffstat (limited to 'input')
-rw-r--r-- | input/event.c | 12 | ||||
-rw-r--r-- | input/event.h | 10 |
2 files changed, 15 insertions, 7 deletions
diff --git a/input/event.c b/input/event.c index add77f0b0c..d47f17ddaf 100644 --- a/input/event.c +++ b/input/event.c @@ -20,7 +20,8 @@ #include "common/msg.h" #include "sub/find_subfiles.h" -void mp_event_drop_files(struct input_ctx *ictx, int num_files, char **files) +void mp_event_drop_files(struct input_ctx *ictx, int num_files, char **files, + enum mp_dnd_action action) { bool all_sub = true; for (int i = 0; i < num_files; i++) @@ -42,8 +43,9 @@ void mp_event_drop_files(struct input_ctx *ictx, int num_files, char **files) "osd-auto", "loadfile", files[i], - /* Start playing the dropped files right away */ - (i == 0) ? "replace" : "append", + /* Either start playing the dropped files right away + or add them to the end of the current playlist */ + (i == 0 && action == DND_REPLACE) ? "replace" : "append-play", NULL }; mp_input_run_cmd(ictx, cmd); @@ -52,7 +54,7 @@ void mp_event_drop_files(struct input_ctx *ictx, int num_files, char **files) } int mp_event_drop_mime_data(struct input_ctx *ictx, const char *mime_type, - bstr data) + bstr data, enum mp_dnd_action action) { // X11 and Wayland file list format. if (strcmp(mime_type, "text/uri-list") == 0) { @@ -67,7 +69,7 @@ int mp_event_drop_mime_data(struct input_ctx *ictx, const char *mime_type, char *s = bstrto0(tmp, line); MP_TARRAY_APPEND(tmp, files, num_files, s); } - mp_event_drop_files(ictx, num_files, files); + mp_event_drop_files(ictx, num_files, files, action); talloc_free(tmp); return num_files > 0; } else { diff --git a/input/event.h b/input/event.h index a1cb542f8f..e2ce36b329 100644 --- a/input/event.h +++ b/input/event.h @@ -19,10 +19,16 @@ struct input_ctx; +enum mp_dnd_action { + DND_REPLACE, + DND_APPEND, +}; + // Enqueue files for playback after drag and drop -void mp_event_drop_files(struct input_ctx *ictx, int num_files, char **files); +void mp_event_drop_files(struct input_ctx *ictx, int num_files, char **files, + enum mp_dnd_action append); // Drop data in a specific format (identified by the mimetype). // Returns <0 on error, ==0 if data was ok but empty, >0 on success. int mp_event_drop_mime_data(struct input_ctx *ictx, const char *mime_type, - bstr data); + bstr data, enum mp_dnd_action append); |