diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-06-12 14:33:18 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-06-12 14:54:01 -0400 |
commit | 0852d05643fcedd5eaeb0217c4afa9c95218ef17 (patch) | |
tree | 8ca2529b97125eee8b1e72417f536de29de79e6f /gtk2_ardour/route_group_menu.cc | |
parent | b3b246b7243895fd08a01d184c182fa561f2900e (diff) |
remove RouteGroupDialog::do_run() and replace its use with code that doesn't rely on a recursive run loop
Diffstat (limited to 'gtk2_ardour/route_group_menu.cc')
-rw-r--r-- | gtk2_ardour/route_group_menu.cc | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/gtk2_ardour/route_group_menu.cc b/gtk2_ardour/route_group_menu.cc index f4c7611ae7..4793588cee 100644 --- a/gtk2_ardour/route_group_menu.cc +++ b/gtk2_ardour/route_group_menu.cc @@ -19,12 +19,16 @@ #include <gtkmm/menu.h> #include <gtkmm/stock.h> + #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" using namespace Gtk; @@ -158,14 +162,22 @@ RouteGroupMenu::new_group () } RouteGroup* g = new RouteGroup (*_session, ""); - RouteGroupDialog d (g, true); + RouteGroupDialog* d = new RouteGroupDialog (g, true); + + d->signal_response().connect (sigc::bind (sigc::mem_fun (*this, &RouteGroupMenu::new_group_dialog_finished), d)); +} - 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 * |