From d7206b7830c7d55d7a53ee13f0e3f7fd5e165857 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 3 Dec 2013 19:45:34 -0500 Subject: [PATCH] fix gtk child packing errors related to the transport bar meter box/peak display --- gtk2_ardour/ardour_ui_dialogs.cc | 17 +++++++++-------- gtk2_ardour/ardour_ui_options.cc | 7 ++++--- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index 0dd61778ae..fda86fe4ad 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -68,7 +68,6 @@ ARDOUR_UI::set_session (Session *s) { SessionHandlePtr::set_session (s); - if (!_session) { WM::Manager::instance().set_session (s); /* Session option editor cannot exist across change-of-session */ @@ -193,9 +192,15 @@ ARDOUR_UI::set_session (Session *s) editor_meter_peak_display.hide(); } - if (_session - && _session->master_out() - && _session->master_out()->n_outputs().n(DataType::AUDIO) > 0) { + if (meter_box.get_parent()) { + transport_tearoff_hbox.remove (meter_box); + transport_tearoff_hbox.remove (editor_meter_peak_display); + } + + if (_session && + _session->master_out() && + _session->master_out()->n_outputs().n(DataType::AUDIO) > 0) { + editor_meter = new LevelMeterHBox(_session); editor_meter->set_meter (_session->master_out()->shared_peak_meter().get()); editor_meter->clear_meters(); @@ -226,11 +231,7 @@ ARDOUR_UI::set_session (Session *s) transport_tearoff_hbox.remove (meter_box); transport_tearoff_hbox.remove (editor_meter_peak_display); } - } else if (meter_box.get_parent()) { - transport_tearoff_hbox.remove (meter_box); - transport_tearoff_hbox.remove (editor_meter_peak_display); } - } int diff --git a/gtk2_ardour/ardour_ui_options.cc b/gtk2_ardour/ardour_ui_options.cc index c531f006e2..f211e42956 100644 --- a/gtk2_ardour/ardour_ui_options.cc +++ b/gtk2_ardour/ardour_ui_options.cc @@ -401,14 +401,15 @@ ARDOUR_UI::parameter_changed (std::string p) start_clocking (); } else if (p == "show-editor-meter") { bool show = Config->get_show_editor_meter(); + + transport_tearoff_hbox.remove (meter_box); + transport_tearoff_hbox.remove (editor_meter_peak_display); + if (editor_meter && show) { transport_tearoff_hbox.pack_start (meter_box, false, false); transport_tearoff_hbox.pack_start (editor_meter_peak_display, false, false); meter_box.show(); editor_meter_peak_display.show(); - } else if (editor_meter && !show && meter_box.get_parent()) { - transport_tearoff_hbox.remove (meter_box); - transport_tearoff_hbox.remove (editor_meter_peak_display); } } } -- 2.30.2