From f336f4e6d1f36cce50f4892a0ece24af8d87c13c Mon Sep 17 00:00:00 2001 From: nick_m Date: Wed, 1 Feb 2017 02:08:04 +1100 Subject: [PATCH] allow "Glue to Bars & Beats" in region menu to be in an inconsistent state. - toggling an inconsistent lock style sets all selected regions to AudioTime --- gtk2_ardour/editor_ops.cc | 10 +++++++++- gtk2_ardour/editor_selection.cc | 12 +++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 288d12219f..376dd3f086 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -5743,11 +5743,19 @@ Editor::toggle_region_lock_style () return; } + bool inconsistent = false; + CheckMenuItem* cm = dynamic_cast ( + ActionManager::get_widget (X_("/Main/RegionMenu/RegionMenuPosition/toggle-region-lock-style"))); + + if (cm && cm->get_inconsistent()) { + inconsistent = true; + } + begin_reversible_command (_("region lock style")); for (RegionSelection::iterator i = rs.begin(); i != rs.end(); ++i) { (*i)->region()->clear_changes (); - PositionLockStyle const ns = (*i)->region()->position_lock_style() == AudioTime ? MusicTime : AudioTime; + PositionLockStyle const ns = ((*i)->region()->position_lock_style() == AudioTime && !inconsistent) ? MusicTime : AudioTime; (*i)->region()->set_position_lock_style (ns); _session->add_command (new StatefulDiffCommand ((*i)->region())); } diff --git a/gtk2_ardour/editor_selection.cc b/gtk2_ardour/editor_selection.cc index 8cdf3940dc..56cedd5fa0 100644 --- a/gtk2_ardour/editor_selection.cc +++ b/gtk2_ardour/editor_selection.cc @@ -1301,10 +1301,20 @@ Editor::sensitize_the_right_region_actions () } a = Glib::RefPtr::cast_dynamic (_region_actions->get_action("toggle-region-lock-style")); + + CheckMenuItem* cm = dynamic_cast ( + ActionManager::get_widget (X_("/Main/RegionMenu/RegionMenuPosition/toggle-region-lock-style"))); + + if (cm) { + cm->set_inconsistent (false); + } + a->set_active (have_position_lock_style_music && !have_position_lock_style_audio); if (have_position_lock_style_music && have_position_lock_style_audio) { - // a->set_inconsistent (); + if (cm) { + cm->set_inconsistent (true); + } } a = Glib::RefPtr::cast_dynamic (_region_actions->get_action("toggle-region-mute")); -- 2.30.2