diff --git a/gtk2_ardour/ardour_dialog.cc b/gtk2_ardour/ardour_dialog.cc index 1c9da0112f..68f388682a 100644 --- a/gtk2_ardour/ardour_dialog.cc +++ b/gtk2_ardour/ardour_dialog.cc @@ -45,6 +45,7 @@ ArdourDialog::ArdourDialog (string title, bool modal, bool use_seperator) ArdourDialog::ArdourDialog (Gtk::Window& parent, string title, bool modal, bool use_seperator) : Dialog (title, parent, modal, use_seperator) + , proxy (0) , _splash_pushed (false) { init (); @@ -56,6 +57,7 @@ ArdourDialog::~ArdourDialog () pop_splash (); Keyboard::the_keyboard().focus_out_window (0, this); WM::Manager::instance().remove (proxy); + proxy->explicit_delete (); } void diff --git a/gtk2_ardour/window_manager.cc b/gtk2_ardour/window_manager.cc index 1d63751c5e..cdb83fba8b 100644 --- a/gtk2_ardour/window_manager.cc +++ b/gtk2_ardour/window_manager.cc @@ -255,11 +255,6 @@ ProxyTemporary::ProxyTemporary (const string& name, Gtk::Window* win) _window = win; } -ProxyTemporary::~ProxyTemporary () -{ -} - - ARDOUR::SessionHandlePtr* ProxyTemporary::session_handle() { diff --git a/gtk2_ardour/window_manager.h b/gtk2_ardour/window_manager.h index a5a9714cc8..93d71add92 100644 --- a/gtk2_ardour/window_manager.h +++ b/gtk2_ardour/window_manager.h @@ -97,7 +97,6 @@ class ProxyTemporary: public ProxyBase { public: ProxyTemporary (const std::string& name, Gtk::Window* win); - ~ProxyTemporary(); Gtk::Window* get (bool create = false) { (void) create; @@ -109,6 +108,8 @@ public: } ARDOUR::SessionHandlePtr* session_handle (); + + void explicit_delete () { _window = 0 ; delete this; } }; template