more inconsistent menu item fiddling.
authornick_m <mainsbridge@gmail.com>
Wed, 1 Feb 2017 12:50:42 +0000 (23:50 +1100)
committernick_m <mainsbridge@gmail.com>
Sat, 4 Feb 2017 11:57:36 +0000 (22:57 +1100)
gtk2_ardour/editor_ops.cc

index 20992d881a52167a329cad81d473fc1dedde4fa8..251233a433b8f9f8ac5c40cb506c78e0d92fba1a 100644 (file)
@@ -5743,22 +5743,17 @@ Editor::toggle_region_lock_style ()
                return;
        }
 
-       bool have_position_lock_style_audio = false;
-       bool have_position_lock_style_music = false;
-       for (list<RegionView*>::const_iterator i = rs.begin(); i != rs.end(); ++i) {
-               if ((*i)->region()->position_lock_style() == MusicTime) {
-                       have_position_lock_style_music = true;
-               } else {
-                       have_position_lock_style_audio = true;
-               }
-       }
-       bool const inconsistent = have_position_lock_style_audio && have_position_lock_style_music;
+       Glib::RefPtr<ToggleAction> a = Glib::RefPtr<ToggleAction>::cast_dynamic (_region_actions->get_action("toggle-region-lock-style"));
+       vector<Widget*> proxies = a->get_proxies();
+       CheckMenuItem* cmi = dynamic_cast<CheckMenuItem*> (proxies.front());
+
+       assert (cmi);
 
        begin_reversible_command (_("toggle 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 && !inconsistent) ? MusicTime : AudioTime;
+               PositionLockStyle const ns = ((*i)->region()->position_lock_style() == AudioTime && !cmi->get_inconsistent()) ? MusicTime : AudioTime;
                (*i)->region()->set_position_lock_style (ns);
                _session->add_command (new StatefulDiffCommand ((*i)->region()));
        }