diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 0dd162ca20..eaf682b9b8 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -1944,8 +1944,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD */ RegionView* entered_regionview; - - void ensure_entered_track_selected (bool op_acts_on_objects = false); bool clear_entered_track; bool left_track_canvas (GdkEventCrossing*); bool entered_track_canvas (GdkEventCrossing*); diff --git a/gtk2_ardour/editor_keys.cc b/gtk2_ardour/editor_keys.cc index d887697d63..93eba4b79f 100644 --- a/gtk2_ardour/editor_keys.cc +++ b/gtk2_ardour/editor_keys.cc @@ -87,6 +87,5 @@ Editor::keyboard_selection_begin () void Editor::keyboard_paste () { - ensure_entered_track_selected (true); paste (1); } diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index ec6a6463b7..d3ce0492c5 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -4171,12 +4171,15 @@ Editor::paste_internal (framepos_t position, float times) /* get everything in the correct order */ - if (!selection->tracks.empty()) { - /* there are some selected tracks, so paste to them */ + if (_edit_point == Editing::EditAtMouse && entered_track) { + /* With the mouse edit point, paste onto the track under the mouse */ + ts.push_back (entered_track); + } else if (!selection->tracks.empty()) { + /* Otherwise, if there are some selected tracks, paste to them */ ts = selection->tracks.filter_to_unique_playlists (); sort_track_selection (ts); } else if (_last_cut_copy_source_track) { - /* otherwise paste to the track that the cut/copy came from; + /* Otherwise paste to the track that the cut/copy came from; see discussion in mantis #3333. */ ts.push_back (_last_cut_copy_source_track); @@ -5388,24 +5391,6 @@ Editor::split_region () split_regions_at (where, rs); } -void -Editor::ensure_entered_track_selected (bool op_really_wants_one_track_if_none_are_selected) -{ - if (entered_track && mouse_mode == MouseObject) { - if (!selection->tracks.empty()) { - if (!selection->selected (entered_track)) { - selection->add (entered_track); - } - } else { - /* there is no selection, but this operation requires/prefers selected objects */ - - if (op_really_wants_one_track_if_none_are_selected) { - selection->set (entered_track); - } - } - } -} - struct EditorOrderRouteSorter { bool operator() (boost::shared_ptr a, boost::shared_ptr b) { /* use of ">" forces the correct sort order */