From 566596e383dd0eaa3c816e454bb1522d733dab9a Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 1 Mar 2022 16:33:39 +0100 Subject: [PATCH] Fix Dnd from clip-picker on macOS On macOS, `context->get_targets ()` may be empty when dragging. In this case the Clip-Picker assumed that a slot is about to be dropped and switched to the local clip library. This in turn cleared selection and it was no lnger possible to drag any clip out of the library. --- gtk2_ardour/trigger_clip_picker.cc | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/gtk2_ardour/trigger_clip_picker.cc b/gtk2_ardour/trigger_clip_picker.cc index 21dec6d670..9c01769597 100644 --- a/gtk2_ardour/trigger_clip_picker.cc +++ b/gtk2_ardour/trigger_clip_picker.cc @@ -566,20 +566,23 @@ TriggerClipPicker::drag_data_get (Glib::RefPtr const&, Selecti } bool -TriggerClipPicker::drag_motion (Glib::RefPtr const& context, int, int y, guint time) +TriggerClipPicker::drag_motion (Glib::RefPtr const& context, int, int, guint time) { for (auto i : context->get_targets ()) { - if (i == "text/uri-list") { - context->drag_status (Gdk::ACTION_LINK, time); + if (i == "x-ardour/region.pbdid") { + /* prepare for export to local clip library */ + if (!_clip_library_dir.empty () && _current_path != _clip_library_dir) { + list_dir (_clip_library_dir); + } + context->drag_status (Gdk::ACTION_COPY, time); return true; } } - if (!_clip_library_dir.empty () && _current_path != _clip_library_dir) { - list_dir (_clip_library_dir); - } - - context->drag_status (Gdk::ACTION_COPY, time); + /* drag from clip-picker (to slots), or + * drag of an external folder to the clip-picker (add to sample_lib_path) + */ + context->drag_status (Gdk::ACTION_LINK, time); return true; }