From d42f0754084d7c88e49b40ae05eaf70639adcac4 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sun, 12 Jun 2016 14:53:55 -0400 Subject: stop AddRouteDialog from being modal and from using a recursive run loop --- gtk2_ardour/add_route_dialog.cc | 1 - gtk2_ardour/ardour_ui.cc | 13 +++++++++++-- gtk2_ardour/ardour_ui.h | 1 + gtk2_ardour/route_group_menu.h | 1 + 4 files changed, 13 insertions(+), 3 deletions(-) (limited to 'gtk2_ardour') diff --git a/gtk2_ardour/add_route_dialog.cc b/gtk2_ardour/add_route_dialog.cc index 5619e97b8d..b01faaf05f 100644 --- a/gtk2_ardour/add_route_dialog.cc +++ b/gtk2_ardour/add_route_dialog.cc @@ -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); diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 91c00065c6..a348f7c9f4 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -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(); diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 9e780aedcc..de2528d865 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -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 (); diff --git a/gtk2_ardour/route_group_menu.h b/gtk2_ardour/route_group_menu.h index 51f222af2f..334a3b504e 100644 --- a/gtk2_ardour/route_group_menu.h +++ b/gtk2_ardour/route_group_menu.h @@ -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; -- cgit v1.2.3