summaryrefslogtreecommitdiff
path: root/gtk2_ardour/mixer_strip.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/mixer_strip.cc')
-rw-r--r--gtk2_ardour/mixer_strip.cc16
1 files changed, 13 insertions, 3 deletions
diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc
index 3598f19e9b..c8faaa41f9 100644
--- a/gtk2_ardour/mixer_strip.cc
+++ b/gtk2_ardour/mixer_strip.cc
@@ -2494,6 +2494,14 @@ MixerStrip::vca_menu_toggle (CheckMenuItem* menuitem, uint32_t n)
return;
}
+ if (!_selected) {
+ /* if this strip is not selected, add it before carrying out
+ changes to assignment. the user probably didn't notice
+ that they were clicking on an unselected track.
+ */
+ _mixer.select_strip (*this);
+ }
+
if (!menuitem->get_active()) {
cerr << "Unassign from " << n << endl;
_mixer.do_vca_unassign (vca);
@@ -2509,8 +2517,8 @@ MixerStrip::vca_assign (boost::shared_ptr<VCA> vca)
if (!vca || !_route) {
return;
}
-
- vca->add (_route);
+ cerr << "Adding " << _route->name() << " to " << vca->number() << endl;
+ _route->gain_control()->add_master (vca);
}
void
@@ -2522,9 +2530,11 @@ MixerStrip::vca_unassign (boost::shared_ptr<VCA> vca)
if (!vca) {
/* null VCA means drop all VCA assignments */
+ cerr << "clear vcas for " << _route->name() << endl;
_route->gain_control()->clear_masters ();
} else {
- vca->remove (_route);
+ cerr << "Removing " << _route->name() << " from " << vca->number() << endl;
+ _route->gain_control()->remove_master (vca);
}
}