summaryrefslogtreecommitdiff
path: root/gtk2_ardour/ardour_ui.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-01-17 12:00:34 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2015-06-29 14:18:13 -0400
commit745a235b9d930c7c28acb3d4e05d37131bc072dc (patch)
tree582287fe2561268513a17783be8f0c20b25f4a8c /gtk2_ardour/ardour_ui.cc
parent682d8ae064303634a7cac747ab96fa1226cddd14 (diff)
properly track, update, maintain and set auto return state
Conflicts: gtk2_ardour/ardour_ui_options.cc
Diffstat (limited to 'gtk2_ardour/ardour_ui.cc')
-rw-r--r--gtk2_ardour/ardour_ui.cc27
1 files changed, 24 insertions, 3 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index f3483769d8..49424c78b6 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -4875,10 +4875,31 @@ void
ARDOUR_UI::toggle_auto_return_state (AutoReturnTarget t)
{
AutoReturnTarget art = Config->get_auto_return_target_list ();
- if (art & t) {
- Config->set_auto_return_target_list (AutoReturnTarget (art & ~t));
- } else {
+ CheckMenuItem* check_menu_item = 0;
+
+ switch (t) {
+ case LastLocate:
+ check_menu_item = auto_return_last_locate;
+ break;
+ case Loop:
+ check_menu_item = auto_return_loop;
+ break;
+ case RangeSelectionStart:
+ check_menu_item = auto_return_range_selection;
+ break;
+ case RegionSelectionStart:
+ check_menu_item = auto_return_region_selection;
+ break;
+ }
+
+ if (!check_menu_item) {
+ return;
+ }
+
+ if (check_menu_item->get_active()) {
Config->set_auto_return_target_list (AutoReturnTarget (art | t));
+ } else {
+ Config->set_auto_return_target_list (AutoReturnTarget (art & ~t));
}
}