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/add_route_dialog.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/add_route_dialog.cc')
-rw-r--r-- | gtk2_ardour/add_route_dialog.cc | 38 |
1 files changed, 27 insertions, 11 deletions
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 |