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
This commit is contained in:
nick_m 2017-02-01 02:08:04 +11:00
parent f96d6894e8
commit f336f4e6d1
2 changed files with 20 additions and 2 deletions

View File

@ -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()));
}

View File

@ -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"));