allow "Glue to Bars & Beats" in region menu to be in an inconsistent state.
authornick_m <mainsbridge@gmail.com>
Tue, 31 Jan 2017 15:08:04 +0000 (02:08 +1100)
committernick_m <mainsbridge@gmail.com>
Sat, 4 Feb 2017 11:57:36 +0000 (22:57 +1100)
- toggling an inconsistent lock style sets all selected regions
  to AudioTime

gtk2_ardour/editor_ops.cc
gtk2_ardour/editor_selection.cc

index 288d12219f16de729524ef65c62fa08f92c30ddd..376dd3f08684a5d7349521faa7b4d1b7af5144f9 100644 (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()));
        }
index 8cdf3940dc8de7fe17267d338d43ba1dc98435e7..56cedd5fa09c10b6afe990974605d1ffb3f85f30 100644 (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"));