From 12e3fb454145be52ddc82871bedf19b5c32d1c39 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 20 Jul 2010 17:56:02 +0000 Subject: [PATCH] Fix a few dialogues which don't reset their session pointer correctly on a new session. Fixes #3342. git-svn-id: svn://localhost/ardour2/branches/3.0@7451 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/ardour_ui_dialogs.cc | 9 +++++++++ gtk2_ardour/editor.cc | 6 ++++++ gtk2_ardour/global_port_matrix.cc | 6 ++++++ gtk2_ardour/global_port_matrix.h | 2 ++ 4 files changed, 23 insertions(+) diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index 096f8ac730..c187a5df56 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -40,6 +40,7 @@ #include "keyeditor.h" #include "gui_thread.h" #include "midi_tracer.h" +#include "add_route_dialog.h" #include "i18n.h" @@ -66,6 +67,14 @@ ARDOUR_UI::set_session (Session *s) route_params->set_session (s); } + if (add_route_dialog) { + add_route_dialog->set_session (s); + } + + if (session_option_editor) { + session_option_editor->set_session (s); + } + primary_clock.set_session (s); secondary_clock.set_session (s); big_clock.set_session (s); diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 76bcd39ee2..42b1a99fc5 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -1076,6 +1076,12 @@ Editor::set_session (Session *t) sfbrowser->set_session (_session); } + for (ARDOUR::DataType::iterator i = ARDOUR::DataType::begin(); i != ARDOUR::DataType::end(); ++i) { + if (_global_port_matrix[*i]) { + _global_port_matrix[*i]->set_session (_session); + } + } + compute_fixed_ruler_scale (); /* there are never any selected regions at startup */ diff --git a/gtk2_ardour/global_port_matrix.cc b/gtk2_ardour/global_port_matrix.cc index 49e2673263..98760c863e 100644 --- a/gtk2_ardour/global_port_matrix.cc +++ b/gtk2_ardour/global_port_matrix.cc @@ -166,6 +166,12 @@ GlobalPortMatrixWindow::on_show () resize_window_to_proportion_of_monitor (this, pm_max.first, pm_max.second); } +void +GlobalPortMatrixWindow::set_session (ARDOUR::Session* s) +{ + _port_matrix.set_session (s); +} + string GlobalPortMatrix::disassociation_verb () const { diff --git a/gtk2_ardour/global_port_matrix.h b/gtk2_ardour/global_port_matrix.h index 0ce77f74c3..734c2ff609 100644 --- a/gtk2_ardour/global_port_matrix.h +++ b/gtk2_ardour/global_port_matrix.h @@ -56,6 +56,8 @@ class GlobalPortMatrixWindow : public Gtk::Window public: GlobalPortMatrixWindow (ARDOUR::Session *, ARDOUR::DataType); + void set_session (ARDOUR::Session *); + private: void on_show ();