From 6ed65a4a3b14d204a24ab63fa907f8e9adce01dc Mon Sep 17 00:00:00 2001 From: David Robillard Date: Tue, 10 Jun 2008 17:41:26 +0000 Subject: Fix 'disconnect' operation for all objects (inc. patch ports). Fixes ticket #147. git-svn-id: http://svn.drobilla.net/lad/ingen@1265 a436a847-0d15-0410-975c-d299462d15a1 --- src/libs/gui/PortMenu.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src/libs/gui/PortMenu.cpp') diff --git a/src/libs/gui/PortMenu.cpp b/src/libs/gui/PortMenu.cpp index 8bb002c9..45b216b6 100644 --- a/src/libs/gui/PortMenu.cpp +++ b/src/libs/gui/PortMenu.cpp @@ -30,14 +30,16 @@ namespace GUI { PortMenu::PortMenu(BaseObjectType* cobject, const Glib::RefPtr& xml) : ObjectMenu(cobject, xml) + , _patch_port(NULL) { } void -PortMenu::init(SharedPtr port) +PortMenu::init(SharedPtr port, bool patch_port) { ObjectMenu::init(port); + _patch_port = patch_port; if ( ! PtrCast(port->parent()) ) { _polyphonic_menuitem->set_sensitive(false); @@ -48,6 +50,19 @@ PortMenu::init(SharedPtr port) _enable_signal = true; } + +void +PortMenu::on_menu_disconnect() +{ + if (_patch_port) { + App::instance().engine()->disconnect_all( + _object->parent()->path(), _object->path()); + } else { + App::instance().engine()->disconnect_all( + _object->parent()->path().parent(), _object->path()); + } +} + } // namespace GUI } // namespace Ingen -- cgit v1.2.1