From 0db79b80234a3f6a63f7ffd908cd62022690fd20 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 24 Jul 2024 23:21:12 +0200 Subject: [PATCH] Close RouteGroup dialog when route is deleted This fixes a crash when trying to interact with the RouteGroup dialog after deleting the group --- gtk2_ardour/route_group_dialog.cc | 3 +++ gtk2_ardour/route_group_dialog.h | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/gtk2_ardour/route_group_dialog.cc b/gtk2_ardour/route_group_dialog.cc index 437ba71df5..83b9c0211e 100644 --- a/gtk2_ardour/route_group_dialog.cc +++ b/gtk2_ardour/route_group_dialog.cc @@ -30,6 +30,7 @@ #include "gtkmm2ext/colors.h" +#include "gui_thread.h" #include "route_group_dialog.h" #include "group_tabs.h" @@ -177,6 +178,8 @@ RouteGroupDialog::RouteGroupDialog (RouteGroup* g, bool creating_new) add_button (Stock::CANCEL, RESPONSE_CANCEL); add_button (Stock::NEW, RESPONSE_OK); set_default_response (RESPONSE_OK); + } else { + _group->Destroyed.connect (_group_connection, invalidator (*this), boost::bind (&Dialog::response, this, RESPONSE_CANCEL), gui_context()); } show_all_children (); diff --git a/gtk2_ardour/route_group_dialog.h b/gtk2_ardour/route_group_dialog.h index a6c564f051..baa4ae84fd 100644 --- a/gtk2_ardour/route_group_dialog.h +++ b/gtk2_ardour/route_group_dialog.h @@ -29,6 +29,10 @@ #include "ardour_dialog.h" #include "stripable_colorpicker.h" +namespace ARDOUR { + class RouteGroup; +} + class RouteGroupDialog : public ArdourDialog { public: @@ -59,7 +63,8 @@ private: void gain_toggled (); void update (); bool unique_name (std::string const name) const; + + PBD::ScopedConnection _group_connection; }; - #endif