diff --git a/gtk2_ardour/playlist_selector.cc b/gtk2_ardour/playlist_selector.cc index d0b13d127e..2a4de7212f 100644 --- a/gtk2_ardour/playlist_selector.cc +++ b/gtk2_ardour/playlist_selector.cc @@ -26,7 +26,6 @@ #include "ardour/audioplaylist.h" #include "ardour/midi_playlist.h" -#include "ardour/playlist.h" #include "ardour/session_playlist.h" #include @@ -65,8 +64,10 @@ PlaylistSelector::PlaylistSelector () get_vbox()->pack_start (scroller); - Button* b = add_button (_("Close"), RESPONSE_CANCEL); - b->signal_clicked().connect (sigc::mem_fun(*this, &PlaylistSelector::close_button_click)); + Button* close_btn = add_button (_("Close"), RESPONSE_CANCEL); + Button* ok_btn = add_button (_("OK"), RESPONSE_OK); + close_btn->signal_clicked().connect (sigc::mem_fun(*this, &PlaylistSelector::close_button_click)); + ok_btn->signal_clicked().connect (sigc::mem_fun(*this, &PlaylistSelector::ok_button_click)); } @@ -119,6 +120,10 @@ PlaylistSelector::show_for (RouteUI* ruix) boost::shared_ptr proxy = others[columns.playlist]; proxy.reset (); + if (this_track->playlist()) { + current_playlist = this_track->playlist(); + } + for (TrackPlaylistMap::iterator x = trpl_map.begin(); x != trpl_map.end(); ++x) { boost::shared_ptr tr = boost::dynamic_pointer_cast (_session->route_by_id (x->first)); @@ -238,10 +243,26 @@ PlaylistSelector::add_playlist_to_map (boost::shared_ptr pl) void PlaylistSelector::close_button_click () { + if (rui && current_playlist) { + rui->track ()->use_playlist (rui->is_audio_track () ? DataType::AUDIO : DataType::MIDI, current_playlist); + } rui = 0; hide (); } +void +PlaylistSelector::ok_button_click() +{ + rui = 0; + hide(); +} + +bool PlaylistSelector::on_delete_event (GdkEventAny*) +{ + close_button_click(); + return false; +} + void PlaylistSelector::selection_changed () { @@ -264,7 +285,5 @@ PlaylistSelector::selection_changed () } rui->track ()->use_playlist (rui->is_audio_track () ? DataType::AUDIO : DataType::MIDI, pl); - - hide (); } } diff --git a/gtk2_ardour/playlist_selector.h b/gtk2_ardour/playlist_selector.h index eb33a6d19c..baec2d002e 100644 --- a/gtk2_ardour/playlist_selector.h +++ b/gtk2_ardour/playlist_selector.h @@ -30,6 +30,7 @@ #include #include "ardour_dialog.h" +#include "ardour/playlist.h" #include "ardour/session_handle.h" namespace ARDOUR { @@ -63,7 +64,9 @@ private: void add_playlist_to_map (boost::shared_ptr); void clear_map (); void close_button_click (); + void ok_button_click (); void selection_changed (); + bool on_delete_event (GdkEventAny*); struct ModelColumns : public Gtk::TreeModel::ColumnRecord { @@ -78,6 +81,8 @@ private: ModelColumns columns; Glib::RefPtr model; Gtk::TreeView tree; + + boost::shared_ptr current_playlist; }; #endif // __ardour_playlist_selector_h__