summaryrefslogtreecommitdiffstats
path: root/src/libs/gui/PortMenu.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2008-06-10 17:41:26 +0000
committerDavid Robillard <d@drobilla.net>2008-06-10 17:41:26 +0000
commit6ed65a4a3b14d204a24ab63fa907f8e9adce01dc (patch)
tree52ec9bafe242c976b70f8422f1a33f9e78d9ab16 /src/libs/gui/PortMenu.cpp
parent43dc73756cf97b4e4bc2ebdec59f3cb15f99750b (diff)
downloadingen-6ed65a4a3b14d204a24ab63fa907f8e9adce01dc.tar.gz
ingen-6ed65a4a3b14d204a24ab63fa907f8e9adce01dc.tar.bz2
ingen-6ed65a4a3b14d204a24ab63fa907f8e9adce01dc.zip
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
Diffstat (limited to 'src/libs/gui/PortMenu.cpp')
-rw-r--r--src/libs/gui/PortMenu.cpp17
1 files changed, 16 insertions, 1 deletions
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<Gnome::Glade::Xml>& xml)
: ObjectMenu(cobject, xml)
+ , _patch_port(NULL)
{
}
void
-PortMenu::init(SharedPtr<PortModel> port)
+PortMenu::init(SharedPtr<PortModel> port, bool patch_port)
{
ObjectMenu::init(port);
+ _patch_port = patch_port;
if ( ! PtrCast<PatchModel>(port->parent()) ) {
_polyphonic_menuitem->set_sensitive(false);
@@ -48,6 +50,19 @@ PortMenu::init(SharedPtr<PortModel> 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