X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Froute_group_menu.cc;h=5ccafaec398c70467c9313d65c8943ccd4449126;hb=cf52d6e4b40111eb04b244ec054055a4ec15dbe0;hp=0aeb0915f840ac8f6721982953f2b2e3ffcea27a;hpb=a581b356b1b5ca846079639aca7699e533c1e52f;p=ardour.git diff --git a/gtk2_ardour/route_group_menu.cc b/gtk2_ardour/route_group_menu.cc index 0aeb0915f8..5ccafaec39 100644 --- a/gtk2_ardour/route_group_menu.cc +++ b/gtk2_ardour/route_group_menu.cc @@ -19,13 +19,17 @@ #include #include + #include "gtkmm2ext/utils.h" +#include "gtkmm2ext/doi.h" + #include "ardour/session.h" #include "ardour/route_group.h" #include "ardour/route.h" #include "route_group_menu.h" #include "route_group_dialog.h" -#include "i18n.h" + +#include "pbd/i18n.h" using namespace Gtk; using namespace ARDOUR; @@ -51,7 +55,7 @@ void RouteGroupMenu::build (WeakRouteList const & s) { assert (!s.empty ()); - + using namespace Menu_Helpers; _subject = s; @@ -68,7 +72,7 @@ RouteGroupMenu::build (WeakRouteList const & s) _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 @@ -77,7 +81,7 @@ RouteGroupMenu::build (WeakRouteList const & s) _menu = new Menu; MenuList& items = _menu->items (); - + items.push_back (MenuElem (_("New Group..."), sigc::mem_fun (*this, &RouteGroupMenu::new_group))); items.push_back (SeparatorElem ()); @@ -158,16 +162,23 @@ RouteGroupMenu::new_group () } RouteGroup* g = new RouteGroup (*_session, ""); - g->apply_changes (*_default_properties); + RouteGroupDialog* d = new RouteGroupDialog (g, true); - RouteGroupDialog d (g, true); + d->signal_response().connect (sigc::bind (sigc::mem_fun (*this, &RouteGroupMenu::new_group_dialog_finished), d)); + d->present (); +} - if (d.do_run ()) { - delete g; +void +RouteGroupMenu::new_group_dialog_finished (int r, RouteGroupDialog* d) +{ + if (r == RESPONSE_OK) { + _session->add_route_group (d->group()); + set_group (d->group()); } else { - _session->add_route_group (g); - set_group (g); + delete d->group (); } + + delete_when_idle (d); } Gtk::Menu *