summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/vca_master_strip.cc17
-rw-r--r--gtk2_ardour/vca_master_strip.h1
2 files changed, 17 insertions, 1 deletions
diff --git a/gtk2_ardour/vca_master_strip.cc b/gtk2_ardour/vca_master_strip.cc
index e40dd96ba3..f0e7cfac90 100644
--- a/gtk2_ardour/vca_master_strip.cc
+++ b/gtk2_ardour/vca_master_strip.cc
@@ -168,6 +168,11 @@ VCAMasterStrip::VCAMasterStrip (Session* s, boost::shared_ptr<VCA> v)
VCAMasterStrip::~VCAMasterStrip ()
{
+ if ((_session && !_session->deletion_in_progress()) && Mixer_UI::instance()->showing_vca_slaves_for (_vca)) {
+ /* cancel spill for this VCA */
+ Mixer_UI::instance()->show_vca_slaves (boost::shared_ptr<VCA>());
+ }
+
delete delete_dialog;
delete context_menu;
@@ -476,7 +481,7 @@ VCAMasterStrip::build_context_menu ()
context_menu = new Menu;
MenuList& items = context_menu->items();
items.push_back (MenuElem (_("Rename"), sigc::mem_fun (*this, &VCAMasterStrip::start_name_edit)));
- items.push_back (MenuElem (_("Remove")));
+ items.push_back (MenuElem (_("Remove"), sigc::mem_fun (*this, &VCAMasterStrip::remove)));
}
void
@@ -498,3 +503,13 @@ VCAMasterStrip::spill_change (boost::shared_ptr<VCA> vca)
vertical_button.set_active_state (Gtkmm2ext::ExplicitActive);
}
}
+
+void
+VCAMasterStrip::remove ()
+{
+ if (!_session) {
+ return;
+ }
+
+ _session->vca_manager().remove_vca (_vca);
+}
diff --git a/gtk2_ardour/vca_master_strip.h b/gtk2_ardour/vca_master_strip.h
index 4734061987..a9636dfe69 100644
--- a/gtk2_ardour/vca_master_strip.h
+++ b/gtk2_ardour/vca_master_strip.h
@@ -94,6 +94,7 @@ class VCAMasterStrip : public AxisView, public Gtk::EventBox
void build_context_menu ();
void hide_confirmation (int);
void self_delete ();
+ void remove ();
};