X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_selection.cc;h=8cdf3940dc8de7fe17267d338d43ba1dc98435e7;hb=c5047ec431e88cadd9aed2399cfcb142450b3524;hp=175ec6812ad6c71d1bfa5b2b700a54c6c02aaf15;hpb=c438ba2b6e92ff27baada01778fb9e098699333b;p=ardour.git diff --git a/gtk2_ardour/editor_selection.cc b/gtk2_ardour/editor_selection.cc index 175ec6812a..8cdf3940dc 100644 --- a/gtk2_ardour/editor_selection.cc +++ b/gtk2_ardour/editor_selection.cc @@ -43,7 +43,7 @@ #include "midi_region_view.h" #include "sfdb_ui.h" -#include "i18n.h" +#include "pbd/i18n.h" using namespace std; using namespace ARDOUR; @@ -621,7 +621,7 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op) if (press) { if (selection->selected (clicked_routeview)) { - get_equivalent_regions (clicked_regionview, all_equivalent_regions, ARDOUR::Properties::select.property_id); + get_equivalent_regions (clicked_regionview, all_equivalent_regions, ARDOUR::Properties::group_select.property_id); } else { all_equivalent_regions.push_back (clicked_regionview); } @@ -639,7 +639,7 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op) case Selection::Set: if (!selection->selected (clicked_regionview)) { - get_equivalent_regions (clicked_regionview, all_equivalent_regions, ARDOUR::Properties::select.property_id); + get_equivalent_regions (clicked_regionview, all_equivalent_regions, ARDOUR::Properties::group_select.property_id); selection->set (all_equivalent_regions); commit = true; } else { @@ -649,7 +649,7 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op) else { if (selection->regions.size() > 1) { /* collapse region selection down to just this one region (and its equivalents) */ - get_equivalent_regions(clicked_regionview, all_equivalent_regions, ARDOUR::Properties::select.property_id); + get_equivalent_regions(clicked_regionview, all_equivalent_regions, ARDOUR::Properties::group_select.property_id); selection->set(all_equivalent_regions); commit = true; } @@ -791,7 +791,7 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op) RouteTimeAxisView* closest = 0; int distance = INT_MAX; - int key = rtv->route()->presentation_info().global_order (); + int key = rtv->route()->presentation_info().order (); for (RegionSelection::iterator x = selection->regions.begin(); x != selection->regions.end(); ++x) { @@ -806,7 +806,7 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op) if (result.second) { /* newly added to already_in_selection */ - int d = artv->route()->presentation_info().global_order (); + int d = artv->route()->presentation_info().order (); d -= key; @@ -822,7 +822,7 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op) /* now add all tracks between that one and this one */ - int okey = closest->route()->presentation_info().global_order (); + int okey = closest->route()->presentation_info().order (); if (okey > key) { swap (okey, key); @@ -832,7 +832,7 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op) RouteTimeAxisView* artv = dynamic_cast(*x); if (artv && artv != rtv) { - int k = artv->route()->presentation_info().global_order (); + int k = artv->route()->presentation_info().order (); if (k >= okey && k <= key) { @@ -879,7 +879,12 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op) if (!regions.empty()) { selection->add (regions); commit = true; + } else if (selection->regions.empty() && !selection->selected (clicked_regionview)) { + /* ensure that at least the clicked regionview is selected. */ + selection->set (clicked_regionview); + commit = true; } + } out: @@ -957,7 +962,11 @@ Editor::track_selection_changed () case 0: break; default: - set_selected_mixer_strip (*(selection->tracks.front())); + /* last element in selection list is the most recently + * selected, because we always append to that list. + */ + set_selected_mixer_strip (*(selection->tracks.back())); + ensure_time_axis_view_is_visible (*(selection->tracks.back()), false); break; } @@ -1088,7 +1097,6 @@ Editor::sensitize_all_region_actions (bool s) void Editor::sensitize_the_right_region_actions () { - RegionSelection rs = get_regions_from_selection_and_entered (); sensitize_all_region_actions (!rs.empty ()); @@ -1247,7 +1255,6 @@ Editor::sensitize_the_right_region_actions () _region_actions->get_action("set-region-sync-position")->set_sensitive (false); _region_actions->get_action("trim-front")->set_sensitive (false); _region_actions->get_action("trim-back")->set_sensitive (false); - _region_actions->get_action("split-region")->set_sensitive (false); _region_actions->get_action("place-transient")->set_sensitive (false); } @@ -1373,15 +1380,15 @@ Editor::region_selection_changed () _regions->block_change_connection (false); editor_regions_selection_changed_connection.block(false); - if (!_all_region_actions_sensitized) { - /* This selection change might have changed what region actions - are allowed, so sensitize them all in case a key is pressed. - */ - sensitize_all_region_actions (true); - } - - if (_session && !_session->transport_rolling() && !selection->regions.empty()) { - maybe_locate_with_edit_preroll (selection->regions.start()); + if (selection->regions.empty()) { + sensitize_all_region_actions (false); + } else { + if (!_all_region_actions_sensitized) { + /* This selection change might have changed what region actions + are allowed, so sensitize them all in case a key is pressed. + */ + sensitize_all_region_actions (true); + } } /* propagate into backend */ @@ -1566,7 +1573,7 @@ Editor::select_all_within (framepos_t start, framepos_t end, double top, double if (preserve_if_selected && op != Selection::Toggle) { list::iterator i = found.begin(); - while (i != found.end() && (*i)->get_selected()) { + while (i != found.end() && (*i)->selected()) { ++i; }