From 806f62ffe6fb20849af8192c78a15edb453f765e Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 10 Jan 2022 23:53:07 +0100 Subject: [PATCH] Allow import via DnD to Source list (not region list) --- gtk2_ardour/editor_regions.cc | 38 ----------------------------------- gtk2_ardour/editor_regions.h | 4 ---- gtk2_ardour/editor_sources.cc | 24 ++++++++++++++++++++-- 3 files changed, 22 insertions(+), 44 deletions(-) diff --git a/gtk2_ardour/editor_regions.cc b/gtk2_ardour/editor_regions.cc index dc979bc0c3..16637ffc58 100644 --- a/gtk2_ardour/editor_regions.cc +++ b/gtk2_ardour/editor_regions.cc @@ -277,15 +277,6 @@ EditorRegions::EditorRegions (Editor* e) /* setup DnD handling */ - list region_list_target_table; - - region_list_target_table.push_back (TargetEntry ("text/uri-list")); - region_list_target_table.push_back (TargetEntry ("text/plain")); - region_list_target_table.push_back (TargetEntry ("application/x-rootwin-drop")); - - _display.add_drop_targets (region_list_target_table); - _display.signal_drag_data_received ().connect (sigc::mem_fun (*this, &EditorRegions::drag_data_received)); - _scroller.add (_display); _scroller.set_policy (POLICY_AUTOMATIC, POLICY_AUTOMATIC); @@ -1014,35 +1005,6 @@ EditorRegions::selection_mapover (sigc::slot > s } } -void -EditorRegions::drag_data_received (const RefPtr& context, - int x, int y, - const SelectionData& data, - guint info, guint dtime) -{ - vector paths; - - if (data.get_target () == "GTK_TREE_MODEL_ROW") { - /* something is being dragged over the region list */ - _editor->_drags->abort (); - _display.on_drag_data_received (context, x, y, data, info, dtime); - return; - } - - if (_session && convert_drop_to_paths (paths, data)) { - timepos_t pos; - bool copy = ((context->get_actions () & (Gdk::ACTION_COPY | Gdk::ACTION_LINK | Gdk::ACTION_MOVE)) == Gdk::ACTION_COPY); - - if (UIConfiguration::instance ().get_only_copy_imported_files () || copy) { - _editor->do_import (paths, Editing::ImportDistinctFiles, Editing::ImportAsRegion, - SrcBest, SMFTrackName, SMFTempoIgnore, pos); - } else { - _editor->do_embed (paths, Editing::ImportDistinctFiles, ImportAsRegion, pos); - } - context->drag_finish (true, false, dtime); - } -} - bool EditorRegions::selection_filter (const RefPtr& model, const TreeModel::Path& path, bool already_selected) { diff --git a/gtk2_ardour/editor_regions.h b/gtk2_ardour/editor_regions.h index a2475f70fd..f65a907e33 100644 --- a/gtk2_ardour/editor_regions.h +++ b/gtk2_ardour/editor_regions.h @@ -182,10 +182,6 @@ private: void clock_format_changed (); - void drag_data_received ( - Glib::RefPtr const &, gint, gint, Gtk::SelectionData const &, guint, guint - ); - Glib::RefPtr remove_unused_regions_action () const; Gtk::Menu* _menu; diff --git a/gtk2_ardour/editor_sources.cc b/gtk2_ardour/editor_sources.cc index f7ac261934..7499edeeda 100644 --- a/gtk2_ardour/editor_sources.cc +++ b/gtk2_ardour/editor_sources.cc @@ -924,9 +924,29 @@ void EditorSources::drag_data_received (const RefPtr& context, int x, int y, const SelectionData& data, - guint info, guint time) + guint info, guint dtime) { - /* ToDo: allow dropping files/loops into the source list? */ + vector paths; + + if (data.get_target () == "GTK_TREE_MODEL_ROW") { + /* something is being dragged over the source list */ + _editor->_drags->abort (); + _display.on_drag_data_received (context, x, y, data, info, dtime); + return; + } + + if (_session && convert_drop_to_paths (paths, data)) { + timepos_t pos; + bool copy = ((context->get_actions () & (Gdk::ACTION_COPY | Gdk::ACTION_LINK | Gdk::ACTION_MOVE)) == Gdk::ACTION_COPY); + + if (UIConfiguration::instance ().get_only_copy_imported_files () || copy) { + _editor->do_import (paths, Editing::ImportDistinctFiles, Editing::ImportAsRegion, + SrcBest, SMFTrackName, SMFTempoIgnore, pos); + } else { + _editor->do_embed (paths, Editing::ImportDistinctFiles, ImportAsRegion, pos); + } + context->drag_finish (true, false, dtime); + } } /** @return Region that has been dragged out of the list, or 0 */