diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index 8639b92f7c..4f96486ddc 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -996,6 +996,14 @@ RCOptionEditor::RCOptionEditor () mem_fun (*_rc_config, &RCConfiguration::set_secondary_clock_delta_edit_cursor) )); + add_option (_("Transport"), + new BoolOption ( + "disable-disarm-during-roll", + _("Disable record disarm when transport is rolling"), + mem_fun (*_rc_config, &RCConfiguration::get_disable_disarm_during_roll), + mem_fun (*_rc_config, &RCConfiguration::set_disable_disarm_during_roll) + )); + /* EDITOR */ add_option (_("Editor"), diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc index 7c0d908e6d..7926c9c468 100644 --- a/gtk2_ardour/route_ui.cc +++ b/gtk2_ardour/route_ui.cc @@ -128,6 +128,7 @@ RouteUI::init () UI::instance()->set_tip (show_sends_button, _("make mixer strips show sends to this bus"), ""); _session.SoloChanged.connect (mem_fun(*this, &RouteUI::solo_changed_so_update_mute)); + _session.TransportStateChange.connect (mem_fun (*this, &RouteUI::check_rec_enable_sensitivity)); } void @@ -482,6 +483,7 @@ RouteUI::rec_enable_press(GdkEventButton* ev) _session.record_disenable_all (); } else { _session.record_enable_all (); + check_rec_enable_sensitivity (); } cmd->mark(); @@ -499,6 +501,7 @@ RouteUI::rec_enable_press(GdkEventButton* ev) } else { reversibly_apply_track_boolean ("rec-enable change", &Track::set_record_enable, !track()->record_enabled(), this); + check_rec_enable_sensitivity (); } } @@ -1357,3 +1360,17 @@ RouteUI::save_as_template () _route->save_as_template (path.to_string(), name); } + +void +RouteUI::check_rec_enable_sensitivity () +{ + if (Config->get_disable_disarm_during_roll () == false) { + return; + } + + if (_session.transport_rolling() && rec_enable_button->get_active()) { + rec_enable_button->set_sensitive (false); + } else { + rec_enable_button->set_sensitive (true); + } +} diff --git a/gtk2_ardour/route_ui.h b/gtk2_ardour/route_ui.h index fc6ef87f57..42a373ae7b 100644 --- a/gtk2_ardour/route_ui.h +++ b/gtk2_ardour/route_ui.h @@ -183,6 +183,8 @@ class RouteUI : public virtual AxisView void save_as_template (); protected: + void check_rec_enable_sensitivity (); + std::vector connections; std::string s_name; std::string m_name; diff --git a/libs/ardour/ardour/rc_configuration_vars.h b/libs/ardour/ardour/rc_configuration_vars.h index d74778b67f..7387e5d001 100644 --- a/libs/ardour/ardour/rc_configuration_vars.h +++ b/libs/ardour/ardour/rc_configuration_vars.h @@ -112,6 +112,7 @@ CONFIG_VARIABLE (bool, primary_clock_delta_edit_cursor, "primary-clock-delta-edi CONFIG_VARIABLE (bool, secondary_clock_delta_edit_cursor, "secondary-clock-delta-edit-cursor", false) CONFIG_VARIABLE (bool, show_track_meters, "show-track-meters", true) CONFIG_VARIABLE (bool, locate_while_waiting_for_sync, "locate-while-waiting-for-sync", false) +CONFIG_VARIABLE (bool, disable_disarm_during_roll, "disable-disarm-during-roll", false) /* metering */