summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornick_m <mainsbridge@gmail.com>2017-02-01 02:08:04 +1100
committernick_m <mainsbridge@gmail.com>2017-02-04 22:57:36 +1100
commitf336f4e6d1f36cce50f4892a0ece24af8d87c13c (patch)
tree529b36f44dd7fffff154a88b029a4250df995b86
parentf96d6894e8a5e6889c2589ba305d78826b076d3f (diff)
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
-rw-r--r--gtk2_ardour/editor_ops.cc10
-rw-r--r--gtk2_ardour/editor_selection.cc12
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<CheckMenuItem*> (
+ 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<ToggleAction>::cast_dynamic (_region_actions->get_action("toggle-region-lock-style"));
+
+ CheckMenuItem* cm = dynamic_cast<CheckMenuItem*> (
+ 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<ToggleAction>::cast_dynamic (_region_actions->get_action("toggle-region-mute"));