From 0852d05643fcedd5eaeb0217c4afa9c95218ef17 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sun, 12 Jun 2016 14:33:18 -0400 Subject: remove RouteGroupDialog::do_run() and replace its use with code that doesn't rely on a recursive run loop --- gtk2_ardour/add_route_dialog.cc | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) (limited to 'gtk2_ardour/add_route_dialog.cc') diff --git a/gtk2_ardour/add_route_dialog.cc b/gtk2_ardour/add_route_dialog.cc index aecff1c845..5619e97b8d 100644 --- a/gtk2_ardour/add_route_dialog.cc +++ b/gtk2_ardour/add_route_dialog.cc @@ -30,6 +30,7 @@ #include "pbd/convert.h" #include "gtkmm2ext/utils.h" +#include "gtkmm2ext/doi.h" #include "ardour/plugin_manager.h" #include "ardour/profile.h" @@ -585,19 +586,34 @@ AddRouteDialog::group_changed () { if (_session && route_group_combo.get_active_text () == _("New Group...")) { RouteGroup* g = new RouteGroup (*_session, ""); - RouteGroupDialog d (g, true); - - if (d.do_run ()) { - delete g; - route_group_combo.set_active (2); - } else { - if (_session) { - _session->add_route_group (g); - } - add_route_group (g); - route_group_combo.set_active (3); + RouteGroupDialog* d = new RouteGroupDialog (g, true); + + d->signal_response().connect (sigc::bind (sigc::mem_fun (*this, &AddRouteDialog::new_group_dialog_finished), d)); + d->present(); + } +} + +void +AddRouteDialog::new_group_dialog_finished (int r, RouteGroupDialog* d) +{ + if (r == RESPONSE_OK) { + + if (!d->name_check()) { + return; + } + + if (_session) { + _session->add_route_group (d->group()); } + + add_route_group (d->group()); + route_group_combo.set_active (3); + } else { + delete d->group (); + route_group_combo.set_active (2); } + + delete_when_idle (d); } AddRouteDialog::InsertAt -- cgit v1.2.3