From 6ac76734f53b28e3e0bf08c58eb463b16f719d6a Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 7 Jun 2017 12:14:44 -0400 Subject: cut buffer must not mess around with libardour selection Fixes range mode selection/cut/copy that would previously clear track selection --- gtk2_ardour/editor.cc | 4 ++-- gtk2_ardour/selection.cc | 7 ++++++- gtk2_ardour/selection.h | 3 ++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index b16bce9847..2ba470853a 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -390,8 +390,8 @@ Editor::Editor () , _visible_track_count (-1) , toolbar_selection_clock_table (2,3) , automation_mode_button (_("mode")) - , selection (new Selection (this)) - , cut_buffer (new Selection (this)) + , selection (new Selection (this, true)) + , cut_buffer (new Selection (this, false)) , _selection_memento (new SelectionMemento()) , _all_region_actions_sensitized (false) , _ignore_region_action (false) diff --git a/gtk2_ardour/selection.cc b/gtk2_ardour/selection.cc index 54dc7a6644..7639d47dbc 100644 --- a/gtk2_ardour/selection.cc +++ b/gtk2_ardour/selection.cc @@ -57,10 +57,11 @@ struct AudioRangeComparator { } }; -Selection::Selection (const PublicEditor* e) +Selection::Selection (const PublicEditor* e, bool mls) : tracks (e) , editor (e) , next_time_id (0) + , manage_libardour_selection (mls) { clear (); @@ -1544,6 +1545,10 @@ Selection::set (const TrackViewList& track_list) void Selection::clear_tracks (bool) { + if (!manage_libardour_selection) { + return; + } + Session* s = editor->session(); if (s) { CoreSelection& selection (s->selection()); diff --git a/gtk2_ardour/selection.h b/gtk2_ardour/selection.h index 7e8ba19d7b..307a148c85 100644 --- a/gtk2_ardour/selection.h +++ b/gtk2_ardour/selection.h @@ -90,7 +90,7 @@ class Selection : public sigc::trackable, public PBD::ScopedConnectionList /** only used when this class is used as a cut buffer */ MidiNoteSelection midi_notes; - Selection (PublicEditor const * e); + Selection (PublicEditor const * e, bool manage_libardour_selection); // Selection& operator= (const Selection& other); @@ -230,6 +230,7 @@ class Selection : public sigc::trackable, public PBD::ScopedConnectionList private: PublicEditor const * editor; uint32_t next_time_id; + bool manage_libardour_selection; TrackViewList add_grouped_tracks (TrackViewList const & t); }; -- cgit v1.2.3