Tweak behavior of Play-With-Preroll action
authorBen Loftis <ben@harrisonconsoles.com>
Mon, 19 Dec 2016 18:50:51 +0000 (12:50 -0600)
committerBen Loftis <ben@harrisonconsoles.com>
Mon, 19 Dec 2016 19:14:44 +0000 (13:14 -0600)
gtk2_ardour/ardour_ui_ed.cc
gtk2_ardour/editor_ops.cc

index 97b4475aaf1bbc252b4492c0324309e6e823283d..d9275e089283792281e598621dcbbcb1259bbf7d 100644 (file)
@@ -391,7 +391,7 @@ ARDOUR_UI::install_actions ()
        act = global_actions.register_action (transport_actions, X_("PlaySelection"), _("Play Selection"), sigc::mem_fun(*this, &ARDOUR_UI::transport_play_selection));
        ActionManager::session_sensitive_actions.push_back (act);
        ActionManager::transport_sensitive_actions.push_back (act);
-       act = global_actions.register_action (transport_actions, X_("PlayPreroll"), _("Play Selection w/Preroll"), sigc::mem_fun(*this, &ARDOUR_UI::transport_play_preroll));
+       act = global_actions.register_action (transport_actions, X_("PlayPreroll"), _("Play w/Preroll"), sigc::mem_fun(*this, &ARDOUR_UI::transport_play_preroll));
        ActionManager::session_sensitive_actions.push_back (act);
        ActionManager::transport_sensitive_actions.push_back (act);
 
index 00a36dab63d7868136954423ec852a44e49862cc..2ca31f2aaf8ecb7a0c7c5c756e18b51f92dffb07 100644 (file)
@@ -2626,13 +2626,12 @@ Editor::maybe_locate_with_edit_preroll ( framepos_t location )
 void
 Editor::play_with_preroll ()
 {
-       {
-               framepos_t preroll = get_preroll();
-
-               framepos_t start, end;
-               if (!get_selection_extents ( start, end))
-                       return;
+       framepos_t preroll = get_preroll();
+       framepos_t start, end;
+       if ( UIConfiguration::instance().get_follow_edits() && get_selection_extents ( start, end) ) {
 
+               framepos_t ret = start;
+               
                if (start > preroll)
                        start = start - preroll;
 
@@ -2643,6 +2642,16 @@ Editor::play_with_preroll ()
                lar.push_back (ar);
 
                _session->request_play_range (&lar, true);
+               _session->set_requested_return_frame( ret );  //force auto-return to return to range start, without the preroll
+       } else {
+               framepos_t ph = playhead_cursor->current_frame ();
+               framepos_t start;
+               if (ph > preroll)
+                       start = ph - preroll; 
+               else
+                       start = 0;
+               _session->request_locate ( start, true);
+               _session->set_requested_return_frame( ph );  //force auto-return to return to playhead location, without the preroll
        }
 }