13
0

Allow to select playlists from other MIDI tracks #6692

This commit is contained in:
Robin Gareus 2020-08-25 23:13:22 +02:00
parent 34159e4594
commit ec6237d703
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04

View File

@ -24,6 +24,8 @@
#include "ardour/audio_track.h" #include "ardour/audio_track.h"
#include "ardour/audioplaylist.h" #include "ardour/audioplaylist.h"
#include "ardour/midi_playlist.h"
#include "ardour/playlist.h" #include "ardour/playlist.h"
#include "ardour/session_playlist.h" #include "ardour/session_playlist.h"
@ -209,20 +211,25 @@ PlaylistSelector::show_for (RouteUI* ruix)
void void
PlaylistSelector::add_playlist_to_map (boost::shared_ptr<Playlist> pl) PlaylistSelector::add_playlist_to_map (boost::shared_ptr<Playlist> pl)
{ {
boost::shared_ptr<AudioPlaylist> apl;
if (pl->frozen()) { if (pl->frozen()) {
return; return;
} }
if ((apl = boost::dynamic_pointer_cast<AudioPlaylist> (pl)) == 0) { if (rui->is_midi_track ()) {
return; if (boost::dynamic_pointer_cast<MidiPlaylist> (pl) == 0) {
return;
}
} else {
assert (rui->is_audio_track ());
if (boost::dynamic_pointer_cast<AudioPlaylist> (pl) == 0) {
return;
}
} }
TrackPlaylistMap::iterator x; TrackPlaylistMap::iterator x;
if ((x = trpl_map.find (apl->get_orig_track_id())) == trpl_map.end()) { if ((x = trpl_map.find (pl->get_orig_track_id ())) == trpl_map.end()) {
x = trpl_map.insert (trpl_map.end(), make_pair (apl->get_orig_track_id(), new list<boost::shared_ptr<Playlist> >)); x = trpl_map.insert (trpl_map.end(), make_pair (pl->get_orig_track_id(), new list<boost::shared_ptr<Playlist> >));
} }
x->second->push_back (pl); x->second->push_back (pl);
@ -238,7 +245,7 @@ PlaylistSelector::close_button_click ()
void void
PlaylistSelector::selection_changed () PlaylistSelector::selection_changed ()
{ {
boost::shared_ptr<Playlist> playlist; boost::shared_ptr<Playlist> pl;
TreeModel::iterator iter = tree.get_selection()->get_selected(); TreeModel::iterator iter = tree.get_selection()->get_selected();
@ -247,25 +254,17 @@ PlaylistSelector::selection_changed ()
return; return;
} }
if ((playlist = ((*iter)[columns.playlist])) != 0) { if ((pl = ((*iter)[columns.playlist])) != 0) {
boost::shared_ptr<AudioTrack> at; if (rui->is_audio_track () && boost::dynamic_pointer_cast<AudioPlaylist> (pl) == 0) {
boost::shared_ptr<AudioPlaylist> apl; return;
}
if ((at = rui->audio_track()) == 0) { if (rui->is_midi_track () && boost::dynamic_pointer_cast<MidiPlaylist> (pl) == 0) {
/* eh? */
return; return;
} }
if ((apl = boost::dynamic_pointer_cast<AudioPlaylist> (playlist)) == 0) { rui->track ()->use_playlist (rui->is_audio_track () ? DataType::AUDIO : DataType::MIDI, pl);
/* eh? */
return;
}
at->use_playlist (DataType::AUDIO, apl);
hide (); hide ();
} }
} }