diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-03-29 14:09:03 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-03-29 14:09:03 -0400 |
commit | 197e75ab80a863585d83b515de8762407dfc70e1 (patch) | |
tree | 408f303270eb2d76351344f4662f9545d27128bd /gtk2_ardour/editor_canvas.cc | |
parent | 9fce80d2bc05a690bd439bb5cffad81f2cff4c50 (diff) |
allow Drag-n-Drop onto the empty canvas (again); always import MIDI files since we consider them writable and so embedding isn't a safe option
Diffstat (limited to 'gtk2_ardour/editor_canvas.cc')
-rw-r--r-- | gtk2_ardour/editor_canvas.cc | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc index e66ca1ef22..8be0e61a7b 100644 --- a/gtk2_ardour/editor_canvas.cc +++ b/gtk2_ardour/editor_canvas.cc @@ -29,6 +29,7 @@ #include "ardour/profile.h" #include "ardour/rc_configuration.h" +#include "ardour/smf_source.h" #include "ardour_ui.h" #include "editor.h" @@ -422,6 +423,23 @@ void Editor::drop_paths_part_two (const vector<string>& paths, framepos_t frame, double ypos, bool copy) { RouteTimeAxisView* tv; + + /* MIDI files must always be imported, because we consider them + * writable. So split paths into two vectors, and follow the import + * path on the MIDI part. + */ + + vector<string> midi_paths; + vector<string> audio_paths; + + for (vector<string>::const_iterator i = paths.begin(); i != paths.end(); ++i) { + if (SMFSource::safe_midi_file_extension (*i)) { + midi_paths.push_back (*i); + } else { + audio_paths.push_back (*i); + } + } + std::pair<TimeAxisView*, int> const tvp = trackview_by_y_position (ypos); if (tvp.first == 0) { @@ -430,10 +448,12 @@ Editor::drop_paths_part_two (const vector<string>& paths, framepos_t frame, doub frame = 0; + do_import (midi_paths, Editing::ImportDistinctFiles, ImportAsTrack, SrcBest, frame); + if (Profile->get_sae() || Config->get_only_copy_imported_files() || copy) { - do_import (paths, Editing::ImportDistinctFiles, Editing::ImportAsTrack, SrcBest, frame); + do_import (audio_paths, Editing::ImportDistinctFiles, Editing::ImportAsTrack, SrcBest, frame); } else { - do_embed (paths, Editing::ImportDistinctFiles, ImportAsTrack, frame); + do_embed (audio_paths, Editing::ImportDistinctFiles, ImportAsTrack, frame); } } else if ((tv = dynamic_cast<RouteTimeAxisView*> (tvp.first)) != 0) { @@ -444,10 +464,12 @@ Editor::drop_paths_part_two (const vector<string>& paths, framepos_t frame, doub /* select the track, then embed/import */ selection->set (tv); + do_import (midi_paths, Editing::ImportSerializeFiles, ImportToTrack, SrcBest, frame); + if (Profile->get_sae() || Config->get_only_copy_imported_files() || copy) { - do_import (paths, Editing::ImportSerializeFiles, Editing::ImportToTrack, SrcBest, frame); + do_import (audio_paths, Editing::ImportSerializeFiles, Editing::ImportToTrack, SrcBest, frame); } else { - do_embed (paths, Editing::ImportSerializeFiles, ImportToTrack, frame); + do_embed (audio_paths, Editing::ImportSerializeFiles, ImportToTrack, frame); } } } |