stop AddRouteDialog from being modal and from using a recursive run loop
authorPaul Davis <paul@linuxaudiosystems.com>
Sun, 12 Jun 2016 18:53:55 +0000 (14:53 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Sun, 12 Jun 2016 18:54:01 +0000 (14:54 -0400)
gtk2_ardour/add_route_dialog.cc
gtk2_ardour/ardour_ui.cc
gtk2_ardour/ardour_ui.h
gtk2_ardour/route_group_menu.h

index 5619e97b8d8a9988fbaa934deb9f686596b138c7..b01faaf05f5bed9f8fb9032b326005b2991c75d1 100644 (file)
@@ -63,7 +63,6 @@ AddRouteDialog::AddRouteDialog ()
        , instrument_label (_("Instrument:"))
 {
        set_name ("AddRouteDialog");
-       set_modal (true);
        set_skip_taskbar_hint (true);
        set_resizable (false);
        set_position (WIN_POS_MOUSE);
index 91c00065c6d4fe86120fc12ddc767a57d4e1c4a7..a348f7c9f4e7e054f18b3358c6d06afa94e3fd1f 100644 (file)
@@ -4005,7 +4005,9 @@ ARDOUR_UI::start_duplicate_routes ()
 void
 ARDOUR_UI::add_route ()
 {
-       int count;
+       if (!add_route_dialog.get (false)) {
+               add_route_dialog->signal_response().connect (sigc::mem_fun (*this, &ARDOUR_UI::add_route_dialog_finished));
+       }
 
        if (!_session) {
                return;
@@ -4016,7 +4018,14 @@ ARDOUR_UI::add_route ()
                return;
        }
 
-       ResponseType r = (ResponseType) add_route_dialog->run ();
+       add_route_dialog->set_position (WIN_POS_MOUSE);
+       add_route_dialog->present();
+}
+
+void
+ARDOUR_UI::add_route_dialog_finished (int r)
+{
+       int count;
 
        add_route_dialog->hide();
 
index 9e780aedcc0cc8b48f59edc86e351ee690c49299..de2528d86592b9a75558556f026afb2878989c60 100644 (file)
@@ -261,6 +261,7 @@ public:
        void synchronize_sync_source_and_video_pullup ();
 
        void add_route ();
+       void add_route_dialog_finished (int);
 
        void add_routes_part_two ();
        void add_routes_thread ();
index 51f222af2f3e3ee032b55f4be52469bf430b0517..334a3b504e99b6ef7857bbecd4edc9aa7fcfad97 100644 (file)
@@ -40,6 +40,7 @@ public:
        void new_group ();
        void set_group (ARDOUR::RouteGroup *);
        void new_group_dialog_finished (int, RouteGroupDialog*);
+
        Gtk::Menu* _menu;
 
        PBD::PropertyList* _default_properties;