From ec6237d703afe7e4d4326f631c7938637357bd84 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 25 Aug 2020 23:13:22 +0200 Subject: [PATCH] Allow to select playlists from other MIDI tracks #6692 --- gtk2_ardour/playlist_selector.cc | 41 ++++++++++++++++---------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/gtk2_ardour/playlist_selector.cc b/gtk2_ardour/playlist_selector.cc index 7108011c39..d0b13d127e 100644 --- a/gtk2_ardour/playlist_selector.cc +++ b/gtk2_ardour/playlist_selector.cc @@ -24,6 +24,8 @@ #include "ardour/audio_track.h" #include "ardour/audioplaylist.h" +#include "ardour/midi_playlist.h" + #include "ardour/playlist.h" #include "ardour/session_playlist.h" @@ -209,20 +211,25 @@ PlaylistSelector::show_for (RouteUI* ruix) void PlaylistSelector::add_playlist_to_map (boost::shared_ptr pl) { - boost::shared_ptr apl; - if (pl->frozen()) { return; } - if ((apl = boost::dynamic_pointer_cast (pl)) == 0) { - return; + if (rui->is_midi_track ()) { + if (boost::dynamic_pointer_cast (pl) == 0) { + return; + } + } else { + assert (rui->is_audio_track ()); + if (boost::dynamic_pointer_cast (pl) == 0) { + return; + } } TrackPlaylistMap::iterator x; - if ((x = trpl_map.find (apl->get_orig_track_id())) == trpl_map.end()) { - x = trpl_map.insert (trpl_map.end(), make_pair (apl->get_orig_track_id(), new list >)); + if ((x = trpl_map.find (pl->get_orig_track_id ())) == trpl_map.end()) { + x = trpl_map.insert (trpl_map.end(), make_pair (pl->get_orig_track_id(), new list >)); } x->second->push_back (pl); @@ -238,7 +245,7 @@ PlaylistSelector::close_button_click () void PlaylistSelector::selection_changed () { - boost::shared_ptr playlist; + boost::shared_ptr pl; TreeModel::iterator iter = tree.get_selection()->get_selected(); @@ -247,25 +254,17 @@ PlaylistSelector::selection_changed () return; } - if ((playlist = ((*iter)[columns.playlist])) != 0) { + if ((pl = ((*iter)[columns.playlist])) != 0) { - boost::shared_ptr at; - boost::shared_ptr apl; - - if ((at = rui->audio_track()) == 0) { - /* eh? */ + if (rui->is_audio_track () && boost::dynamic_pointer_cast (pl) == 0) { + return; + } + if (rui->is_midi_track () && boost::dynamic_pointer_cast (pl) == 0) { return; } - if ((apl = boost::dynamic_pointer_cast (playlist)) == 0) { - /* eh? */ - return; - } - - at->use_playlist (DataType::AUDIO, apl); + rui->track ()->use_playlist (rui->is_audio_track () ? DataType::AUDIO : DataType::MIDI, pl); hide (); } - } -