X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_selection.cc;h=7c36384e3050e8f601164bb19b124b079c0e39af;hb=a606a83d2ec43d9fbf9b65969afb3b3c46c546fa;hp=6cd022cce185f53f9d8b73e88bdf7f52fe3a3a8e;hpb=8aa9508c82f32efcf9c7c00e2c9e76268d4dddce;p=ardour.git diff --git a/gtk2_ardour/editor_selection.cc b/gtk2_ardour/editor_selection.cc index 6cd022cce1..7c36384e30 100644 --- a/gtk2_ardour/editor_selection.cc +++ b/gtk2_ardour/editor_selection.cc @@ -25,6 +25,7 @@ #include #include #include +#include #include "editor.h" #include "actions.h" @@ -761,11 +762,17 @@ Editor::track_selection_changed () (*i)->set_selected (false); } } + + ActionManager::set_sensitive (ActionManager::track_selection_sensitive_actions, !selection->tracks.empty()); } void Editor::time_selection_changed () { + if (Profile->get_sae()) { + return; + } + for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) { (*i)->hide_selection (); } @@ -788,6 +795,30 @@ Editor::time_selection_changed () } +void +Editor::sensitize_the_right_region_actions (bool have_selected_regions) +{ + for (vector >::iterator x = ActionManager::region_selection_sensitive_actions.begin(); + x != ActionManager::region_selection_sensitive_actions.end(); ++x) { + + string accel_path = (*x)->get_accel_path (); + AccelKey key; + + /* if there is an accelerator, it should always be sensitive + to allow for keyboard ops on entered regions. + */ + + bool known = ActionManager::lookup_entry (accel_path, key); + + if (known && ((key.get_key() != GDK_VoidSymbol) && (key.get_key() != 0))) { + (*x)->set_sensitive (true); + } else { + (*x)->set_sensitive (have_selected_regions); + } + } +} + + void Editor::region_selection_changed () { @@ -795,6 +826,8 @@ Editor::region_selection_changed () (*i)->set_selected_regionviews (selection->regions); } + sensitize_the_right_region_actions (!selection->regions.empty()); + zoomed_to_region = false; } @@ -961,7 +994,9 @@ Editor::set_selection_from_region () } selection->set (0, selection->regions.start(), selection->regions.end_frame()); - set_mouse_mode (Editing::MouseRange, false); + if (!Profile->get_sae()) { + set_mouse_mode (Editing::MouseRange, false); + } } void @@ -994,7 +1029,9 @@ Editor::set_selection_from_range (Location& loc) selection->set (0, loc.start(), loc.end()); commit_reversible_command (); - set_mouse_mode (Editing::MouseRange, false); + if (!Profile->get_sae()) { + set_mouse_mode (Editing::MouseRange, false); + } } void @@ -1307,6 +1344,12 @@ Editor::get_edit_op_range (nframes64_t& start, nframes64_t& end) const swap (start, end); } + /* turn range into one delimited by start...end, + not start...end-1 + */ + + end++; + return true; }