diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index 2ad4cd3c92..0dd61778ae 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -193,7 +193,9 @@ ARDOUR_UI::set_session (Session *s) editor_meter_peak_display.hide(); } - if (_session && _session->master_out()) { + 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(); @@ -216,12 +218,17 @@ ARDOUR_UI::set_session (Session *s) editor_meter_peak_display.signal_button_release_event().connect (sigc::mem_fun(*this, &ARDOUR_UI::editor_meter_peak_button_release), false); if (Config->get_show_editor_meter()) { + 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 { - meter_box.hide(); - editor_meter_peak_display.hide(); + } else if (meter_box.get_parent()) { + 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); } } diff --git a/gtk2_ardour/ardour_ui_options.cc b/gtk2_ardour/ardour_ui_options.cc index 0e28900450..c531f006e2 100644 --- a/gtk2_ardour/ardour_ui_options.cc +++ b/gtk2_ardour/ardour_ui_options.cc @@ -402,11 +402,13 @@ ARDOUR_UI::parameter_changed (std::string p) } else if (p == "show-editor-meter") { bool show = Config->get_show_editor_meter(); 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.hide(); - editor_meter_peak_display.hide(); + } else if (editor_meter && !show && meter_box.get_parent()) { + transport_tearoff_hbox.remove (meter_box); + transport_tearoff_hbox.remove (editor_meter_peak_display); } } }