diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2015-01-17 12:00:34 -0500 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2015-06-29 14:18:13 -0400 |
commit | 745a235b9d930c7c28acb3d4e05d37131bc072dc (patch) | |
tree | 582287fe2561268513a17783be8f0c20b25f4a8c /gtk2_ardour/ardour_ui.cc | |
parent | 682d8ae064303634a7cac747ab96fa1226cddd14 (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.cc | 27 |
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)); } } |