From 638322f77e9d8277218f88e2af7521a65595d98f Mon Sep 17 00:00:00 2001 From: Kevin Mitchell Date: Sat, 29 Aug 2015 02:13:22 -0700 Subject: x11: drag and drop append with modifier If the drag and drop action is anything other than XdndActionCopy, append the dropped files rather than replacing the existing playlist. With most file managers, this will mean at least pressing shift while dropping. --- video/out/x11_common.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'video/out/x11_common.c') diff --git a/video/out/x11_common.c b/video/out/x11_common.c index a5c9dd84f5..d077957c4e 100644 --- a/video/out/x11_common.c +++ b/video/out/x11_common.c @@ -793,6 +793,8 @@ static void vo_x11_dnd_handle_message(struct vo *vo, XClientMessageEvent *ce) dnd_select_format(x11, args, 3); } } else if (ce->message_type == XA(x11, XdndPosition)) { + x11->dnd_requested_action = ce->data.l[4]; + Window src = ce->data.l[0]; XEvent xev; @@ -836,9 +838,13 @@ static void vo_x11_dnd_handle_selection(struct vo *vo, XSelectionEvent *se) void *prop = x11_get_property(x11, x11->window, XAs(x11, DND_PROPERTY), x11->dnd_requested_format, 8, &nitems); if (prop) { + enum mp_dnd_action action = + x11->dnd_requested_action == XA(x11, XdndActionCopy) ? + DND_REPLACE : DND_APPEND; + // No idea if this is guaranteed to be \0-padded, so use bstr. success = mp_event_drop_mime_data(vo->input_ctx, "text/uri-list", - (bstr){prop, nitems}, DND_REPLACE) > 0; + (bstr){prop, nitems}, action) > 0; XFree(prop); } } -- cgit v1.2.3