summaryrefslogtreecommitdiff
path: root/gtk2_ardour/route_group_menu.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-06-12 14:33:18 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2016-06-12 14:54:01 -0400
commit0852d05643fcedd5eaeb0217c4afa9c95218ef17 (patch)
tree8ca2529b97125eee8b1e72417f536de29de79e6f /gtk2_ardour/route_group_menu.cc
parentb3b246b7243895fd08a01d184c182fa561f2900e (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.cc22
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 *