X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_selection.cc;h=b071ed6e1bfe15cbc5ba1d1dfcd098ec955fbbc7;hb=37ee083931c6e57e0d5611ac909294126d92ba05;hp=ca48cd6dd1ad7f1cdc42b26e410de3f5bfd7e623;hpb=ced4378d0914bcfb926267772c45d1d23f3bed38;p=ardour.git diff --git a/gtk2_ardour/editor_selection.cc b/gtk2_ardour/editor_selection.cc index ca48cd6dd1..b071ed6e1b 100644 --- a/gtk2_ardour/editor_selection.cc +++ b/gtk2_ardour/editor_selection.cc @@ -1544,12 +1544,24 @@ Editor::set_selection_from_region () return; } + /* find all the tracks that have selected regions */ + + set tracks; + + for (RegionSelection::const_iterator r = selection->regions.begin(); r != selection->regions.end(); ++r) { + tracks.insert (&(*r)->get_time_axis_view()); + } + + TrackViewList tvl; + tvl.insert (tvl.end(), tracks.begin(), tracks.end()); + + /* select range (this will clear the region selection) */ + selection->set (selection->regions.start(), selection->regions.end_frame()); + + /* and select the tracks */ - //we must now select tracks, because otherwise set_selection_from_region would appear to do nothing - //perhaps too drastic; perhaps the user really only wants the region's track selected - //but I can't think of any use-case for that (why wouldn't you just select the region?) - select_all_tracks(); + selection->set (tvl); if (!Profile->get_sae()) { set_mouse_mode (Editing::MouseRange, false); @@ -1751,10 +1763,10 @@ Editor::select_all_selectables_using_edit (bool after) list touched; if (after) { - start = get_preferred_edit_position(false, true); + start = get_preferred_edit_position(EDIT_IGNORE_NONE, true); end = _session->current_end_frame(); } else { - if ((end = get_preferred_edit_position(false, true)) > 1) { + if ((end = get_preferred_edit_position(EDIT_IGNORE_NONE, true)) > 1) { start = 0; end -= 1; } else {