Follow Edits => Follow Range
authorBen Loftis <ben@harrisonconsoles.com>
Mon, 19 Dec 2016 18:22:39 +0000 (12:22 -0600)
committerBen Loftis <ben@harrisonconsoles.com>
Mon, 19 Dec 2016 19:14:44 +0000 (13:14 -0600)
* "Follow Edits" button had several behaviors that confused users.
* "Follow Range" only has 2 behaviors:
** Click anywhere in Range mode (or Smart mode) to locate the playhead.
** When you select a Range, "Play" will play the selected range.

gtk2_ardour/ardour_ui2.cc
gtk2_ardour/ardour_ui_ed.cc
gtk2_ardour/editor.cc
gtk2_ardour/editor.h
gtk2_ardour/editor_canvas_events.cc
gtk2_ardour/editor_drag.cc
gtk2_ardour/editor_mouse.cc
gtk2_ardour/editor_ops.cc

index 4954dc46aafef71157930f1add3b5f5f930e24f3..0b3d22e7d4bdaf642e072a43bfd1edae86906090 100644 (file)
@@ -85,7 +85,7 @@ ARDOUR_UI::setup_tooltips ()
        set_tip (auto_loop_button, _("Play loop range"));
        set_tip (midi_panic_button, _("MIDI Panic\nSend note off and reset controller messages on all MIDI channels"));
        set_tip (auto_return_button, _("Return to last playback start when stopped"));
-       set_tip (follow_edits_button, _("Playhead follows range selections and edits"));
+       set_tip (follow_edits_button, _("Playhead follows Range tool clicks, and Range selections"));
        set_tip (auto_input_button, _("Be sensible about input monitoring"));
        set_tip (click_button, _("Enable/Disable audio click"));
        set_tip (solo_alert_button, _("When active, something is soloed.\nClick to de-solo everything"));
@@ -342,7 +342,7 @@ ARDOUR_UI::setup_transport ()
 
        /* and widget text */
        auto_return_button.set_text(_("Auto Return"));
-       follow_edits_button.set_text(_("Follow Edits"));
+       follow_edits_button.set_text(_("Follow Range"));
        //auto_input_button.set_text (_("Auto Input"));
        punch_in_button.set_text (_("In"));
        punch_out_button.set_text (_("Out"));
index 737400c7afb93b9a5f269095e7e09e6e0b18c4ce..97b4475aaf1bbc252b4492c0324309e6e823283d 100644 (file)
@@ -524,7 +524,7 @@ ARDOUR_UI::install_actions ()
        act = global_actions.register_toggle_action (transport_actions, X_("ToggleAutoReturn"), _("Auto Return"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_auto_return));
        ActionManager::session_sensitive_actions.push_back (act);
        ActionManager::transport_sensitive_actions.push_back (act);
-       act = global_actions.register_toggle_action (transport_actions, X_("ToggleFollowEdits"), _("Follow Edits"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_follow_edits));
+       act = global_actions.register_toggle_action (transport_actions, X_("ToggleFollowEdits"), _("Follow Range"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_follow_edits));
        ActionManager::session_sensitive_actions.push_back (act);
        ActionManager::transport_sensitive_actions.push_back (act);
 
index 518fdce547eb3838ae2ee2d7668fff7aac763aeb..7526c9677d22fa3d3b5c31f6fb2d52acdda71f4a 100644 (file)
@@ -393,7 +393,6 @@ Editor::Editor ()
        , _all_region_actions_sensitized (false)
        , _ignore_region_action (false)
        , _last_region_menu_was_main (false)
-       , _ignore_follow_edits (false)
        , cd_marker_bar_drag_rect (0)
        , range_bar_drag_rect (0)
        , transport_bar_drag_rect (0)
@@ -834,8 +833,6 @@ Editor::Editor ()
        _last_region_menu_was_main = false;
        _popup_region_menu_item = 0;
 
-       _ignore_follow_edits = false;
-
        _show_marker_lines = false;
 
         /* Button bindings */
index ee963abc42939aee6c9344581d61d03216ec4b3c..7030599c0a7e69fa463bb8d239fe37f2dcd752a8 100644 (file)
@@ -1850,8 +1850,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
        void point_selection_changed ();
        void marker_selection_changed ();
 
-       bool _ignore_follow_edits;
-
        void cancel_selection ();
        void cancel_time_selection ();
 
index 73570339b382e2ef766e69dac73b1997bbd2b837..65a448be48399c00ef4e63d1ce0ede836603cb6f 100644 (file)
@@ -532,7 +532,6 @@ Editor::canvas_fade_in_handle_event (GdkEvent *event, ArdourCanvas::Item* item,
 
        case GDK_BUTTON_RELEASE:
                ret = button_release_handler (item, event, trim ? FadeInTrimHandleItem : FadeInHandleItem);
-               maybe_locate_with_edit_preroll ( rv->region()->position() );
                break;
 
        case GDK_MOTION_NOTIFY:
@@ -616,7 +615,6 @@ Editor::canvas_fade_out_handle_event (GdkEvent *event, ArdourCanvas::Item* item,
 
        case GDK_BUTTON_RELEASE:
                ret = button_release_handler (item, event, trim ? FadeOutTrimHandleItem : FadeOutHandleItem);
-               maybe_locate_with_edit_preroll ( rv->region()->last_frame() - rv->get_fade_out_shape_width() );
                break;
 
        case GDK_MOTION_NOTIFY:
index 24f91bf1c4821480788b42bd624d9c172b0bffef..966cd293f5d78e37f300e308d9a381b8ab45534c 100644 (file)
@@ -1421,8 +1421,6 @@ RegionMoveDrag::finished (GdkEvent* ev, bool movement_occurred)
                        );
 
        }
-
-       _editor->maybe_locate_with_edit_preroll (_editor->get_selection().regions.start());
 }
 
 RouteTimeAxisView*
@@ -3121,18 +3119,6 @@ TrimDrag::finished (GdkEvent* event, bool movement_occurred)
                        }
                }
 
-               if (!_views.empty()) {
-                       if (_operation == StartTrim) {
-                               _editor->maybe_locate_with_edit_preroll(
-                                       _views.begin()->view->region()->position());
-                       }
-                       if (_operation == EndTrim) {
-                               _editor->maybe_locate_with_edit_preroll(
-                                       _views.begin()->view->region()->position() +
-                                       _views.begin()->view->region()->length());
-                       }
-               }
-
                if (!_editor->selection->selected (_primary)) {
                        _primary->thaw_after_trim ();
                } else {
@@ -5323,10 +5309,7 @@ SelectionDrag::finished (GdkEvent* event, bool movement_occurred)
                                s->request_play_range (&_editor->selection->time, true);
                        } else if (!s->config.get_external_sync()) {
                                if (UIConfiguration::instance().get_follow_edits() && !s->transport_rolling()) {
-                                       if (_operation == SelectionEndTrim)
-                                               _editor->maybe_locate_with_edit_preroll( _editor->get_selection().time.end_frame());
-                                       else
-                                               s->request_locate (_editor->get_selection().time.start());
+                                       s->request_locate (_editor->get_selection().time.start());
                                }
                        }
 
index 578595ff2a5fc496f06664141e77edda499fe811..e34c38c43cb61291291a7bff4bcc6aa0637dce88 100644 (file)
@@ -2551,6 +2551,10 @@ Editor::update_join_object_range_location (double y)
 
        if (entered_regionview) {
 
+               //ToDo:  there is currently a bug here(?)
+               //when we are inside a region fade handle, it acts as though we are in range mode because it is in the top half of the region
+               //can it be fixed here?
+
                ArdourCanvas::Duple const item_space = entered_regionview->get_canvas_group()->canvas_to_item (ArdourCanvas::Duple (0, y));
                double const c = item_space.y / entered_regionview->height();
 
index 370f57d848120a3e50dfbd619014f82b57814ca2..00a36dab63d7868136954423ec852a44e49862cc 100644 (file)
@@ -278,7 +278,6 @@ Editor::split_regions_at (framepos_t where, RegionSelection& regions, const int3
        if (working_on_selection) {
                // IFF we were working on selected regions, try to reinstate the other region selections that existed before the freeze/thaw.
 
-               _ignore_follow_edits = true;  // a split will change the region selection in mysterious ways;  it's not practical or wanted to follow this edit
                RegionSelectionAfterSplit rsas = Config->get_region_selection_after_split();
                /* There are three classes of regions that we might want selected after
                   splitting selected regions:
@@ -305,13 +304,10 @@ Editor::split_regions_at (framepos_t where, RegionSelection& regions, const int3
                                }
                        }
                }
-               _ignore_follow_edits = false;
        } else {
-               _ignore_follow_edits = true;
                if( working_on_selection ) {
                        selection->add (latest_regionviews);  //these are the new regions created after the split
                }
-               _ignore_follow_edits = false;
        }
 
        commit_reversible_command ();
@@ -2610,7 +2606,7 @@ Editor::get_preroll ()
 void
 Editor::maybe_locate_with_edit_preroll ( framepos_t location )
 {
-       if ( _session->transport_rolling() || !UIConfiguration::instance().get_follow_edits() || _ignore_follow_edits || _session->config.get_external_sync() )
+       if ( _session->transport_rolling() || !UIConfiguration::instance().get_follow_edits() || _session->config.get_external_sync() )
                return;
 
        location -= get_preroll();
@@ -3683,10 +3679,8 @@ Editor::trim_region (bool front)
 
                        if (front) {
                                (*i)->region()->trim_front (where);
-                               maybe_locate_with_edit_preroll ( where );
                        } else {
                                (*i)->region()->trim_end (where);
-                               maybe_locate_with_edit_preroll ( where );
                        }
 
                        _session->add_command (new StatefulDiffCommand ((*i)->region()));
@@ -6195,9 +6189,11 @@ Editor::set_playhead_cursor ()
                }
        }
 
-       if (UIConfiguration::instance().get_follow_edits() && (!_session || !_session->config.get_external_sync())) {
-               cancel_time_selection();
-       }
+//not sure what this was for;  remove it for now.
+//     if (UIConfiguration::instance().get_follow_edits() && (!_session || !_session->config.get_external_sync())) {
+//             cancel_time_selection();
+//     }
+
 }
 
 void