- items().push_back (MenuElem (_("New group..."), mem_fun (*this, &RouteGroupMenu::new_group)));
- items().push_back (SeparatorElem ());
+ /* FInd all the route groups that our subjects are members of */
+ std::set<RouteGroup*> groups;
+ for (WeakRouteList::const_iterator i = _subject.begin (); i != _subject.end(); ++i) {
+ boost::shared_ptr<Route> r = i->lock ();
+ if (r) {
+ groups.insert (r->route_group ());
+ }
+ }
+
+ _inhibit_group_selected = true;
+
+ delete _menu;
+
+ /* Note: don't use manage() here, otherwise if our _menu object is attached as a submenu
+ and its parent is then destroyed, our _menu object will be deleted and we'll have no
+ way of knowing about it. Without manage(), when the above happens our _menu's gobject
+ will be destroyed and its value set to 0, so we know.
+ */
+ _menu = new Menu;
+
+ MenuList& items = _menu->items ();
+
+ items.push_back (MenuElem (_("New Group..."), sigc::mem_fun (*this, &RouteGroupMenu::new_group)));
+ items.push_back (SeparatorElem ());