From 8510f80faad7a719a97cf14b1a82a1cc2141282b Mon Sep 17 00:00:00 2001 From: David Robillard Date: Fri, 30 Oct 2015 17:02:07 +0000 Subject: Update clients when plugins are unloaded/reloaded git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5808 a436a847-0d15-0410-975c-d299462d15a1 --- src/gui/PluginMenu.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'src/gui/PluginMenu.cpp') diff --git a/src/gui/PluginMenu.cpp b/src/gui/PluginMenu.cpp index 9bc47bff..c997bf19 100644 --- a/src/gui/PluginMenu.cpp +++ b/src/gui/PluginMenu.cpp @@ -24,11 +24,23 @@ namespace GUI { PluginMenu::PluginMenu(Ingen::World& world) : _world(world) , _classless_menu(NULL, NULL) +{ + clear(); +} + +void +PluginMenu::clear() { const LilvWorld* lworld = _world.lilv_world(); const LilvPluginClass* lv2_plugin = lilv_world_get_plugin_class(lworld); const LilvPluginClasses* classes = lilv_world_get_plugin_classes(lworld); + // Empty completely + _classless_menu = MenuRecord(NULL, NULL); + _class_menus.clear(); + items().clear(); + + // Build skeleton LV2Children children; LILV_FOREACH(plugin_classes, i, classes) { const LilvPluginClass* c = lilv_plugin_classes_get(classes, i); @@ -44,7 +56,7 @@ PluginMenu::PluginMenu(Ingen::World& world) items().push_back(Gtk::Menu_Helpers::MenuElem("_Uncategorized")); _classless_menu.item = &(items().back()); - _classless_menu.menu = new Gtk::Menu(); + _classless_menu.menu = Gtk::manage(new Gtk::Menu()); _classless_menu.item->set_submenu(*_classless_menu.menu); _classless_menu.item->hide(); } @@ -109,7 +121,7 @@ PluginMenu::build_plugin_class_menu(Gtk::Menu* menu, menu->items().push_back(menu_elem); Gtk::MenuItem* menu_item = &(menu->items().back()); - Gtk::Menu* submenu = new Gtk::Menu(); + Gtk::Menu* submenu = Gtk::manage(new Gtk::Menu()); menu_item->set_submenu(*submenu); size_t num_child_items = build_plugin_class_menu( -- cgit v1.2.1