summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/ardour_ui.h1
-rw-r--r--gtk2_ardour/ardour_ui2.cc10
-rw-r--r--gtk2_ardour/ardour_ui_dialogs.cc1
-rw-r--r--gtk2_ardour/ardour_ui_options.cc3
4 files changed, 12 insertions, 3 deletions
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index 5ca28bf373..64423657b0 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -657,6 +657,7 @@ private:
void edit_metadata ();
void import_metadata ();
+ void set_loop_sensitivity ();
void set_transport_sensitivity (bool);
//stuff for ProTools-style numpad
diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc
index a5b1a93e93..c264c2c1c6 100644
--- a/gtk2_ardour/ardour_ui2.cc
+++ b/gtk2_ardour/ardour_ui2.cc
@@ -848,7 +848,15 @@ ARDOUR_UI::error_blink (bool onoff)
}
}
-
+void
+ARDOUR_UI::set_loop_sensitivity ()
+{
+ if (!_session || _session->config.get_external_sync()) {
+ auto_loop_button.set_sensitive (false);
+ } else {
+ auto_loop_button.set_sensitive (_session && _session->locations()->auto_loop_location());
+ }
+}
void
ARDOUR_UI::set_transport_sensitivity (bool yn)
diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc
index 6b206fed05..561fac9c15 100644
--- a/gtk2_ardour/ardour_ui_dialogs.cc
+++ b/gtk2_ardour/ardour_ui_dialogs.cc
@@ -170,6 +170,7 @@ ARDOUR_UI::set_session (Session *s)
_session->locations()->added.connect (_session_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::handle_locations_change, this, _1), gui_context());
_session->locations()->removed.connect (_session_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::handle_locations_change, this, _1), gui_context());
_session->config.ParameterChanged.connect (_session_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::session_parameter_changed, this, _1), gui_context ());
+ _session->auto_loop_location_changed.connect (_session_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::set_loop_sensitivity, this), gui_context ());
/* Clocks are on by default after we are connected to a session, so show that here.
*/
diff --git a/gtk2_ardour/ardour_ui_options.cc b/gtk2_ardour/ardour_ui_options.cc
index 1c475df205..5205354881 100644
--- a/gtk2_ardour/ardour_ui_options.cc
+++ b/gtk2_ardour/ardour_ui_options.cc
@@ -353,7 +353,6 @@ ARDOUR_UI::parameter_changed (std::string p)
if (!_session->config.get_external_sync()) {
sync_button.set_text (S_("SyncSource|Int."));
- auto_loop_button.set_sensitive (true);
ActionManager::get_action ("Transport", "ToggleAutoPlay")->set_sensitive (true);
ActionManager::get_action ("Transport", "ToggleAutoReturn")->set_sensitive (true);
ActionManager::get_action ("Transport", "ToggleFollowEdits")->set_sensitive (true);
@@ -365,12 +364,12 @@ ARDOUR_UI::parameter_changed (std::string p)
// but makes it clear to the user that it's disabled.
_session->request_play_loop (false, false);
}
- auto_loop_button.set_sensitive (false);
/* XXX we need to make sure that auto-play is off as well as insensitive */
ActionManager::get_action ("Transport", "ToggleAutoPlay")->set_sensitive (false);
ActionManager::get_action ("Transport", "ToggleAutoReturn")->set_sensitive (false);
ActionManager::get_action ("Transport", "ToggleFollowEdits")->set_sensitive (false);
}
+ set_loop_sensitivity ();
} else if (p == "follow-edits") {