fix logic for display of transport bar meters

Always remove from parent (if there is one), then repack if necessary.
This commit is contained in:
Paul Davis 2013-12-13 10:52:15 -05:00
parent fd1eb73ef2
commit fd1d2d804f
2 changed files with 19 additions and 16 deletions

View file

@ -186,6 +186,11 @@ ARDOUR_UI::set_session (Session *s)
update_format (); update_format ();
if (meter_box.get_parent()) {
transport_tearoff_hbox.remove (meter_box);
transport_tearoff_hbox.remove (editor_meter_peak_display);
}
if (editor_meter) { if (editor_meter) {
meter_box.remove(*editor_meter); meter_box.remove(*editor_meter);
delete editor_meter; delete editor_meter;
@ -222,15 +227,8 @@ ARDOUR_UI::set_session (Session *s)
transport_tearoff_hbox.pack_start (editor_meter_peak_display, false, false); transport_tearoff_hbox.pack_start (editor_meter_peak_display, false, false);
meter_box.show(); meter_box.show();
editor_meter_peak_display.show(); editor_meter_peak_display.show();
} 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);
}
} }
int int

View file

@ -401,14 +401,19 @@ ARDOUR_UI::parameter_changed (std::string p)
start_clocking (); start_clocking ();
} else if (p == "show-editor-meter") { } else if (p == "show-editor-meter") {
bool show = Config->get_show_editor_meter(); bool show = Config->get_show_editor_meter();
if (editor_meter && show) {
transport_tearoff_hbox.pack_start (meter_box, false, false); if (editor_meter) {
transport_tearoff_hbox.pack_start (editor_meter_peak_display, false, false); if (meter_box.get_parent()) {
meter_box.show(); transport_tearoff_hbox.remove (meter_box);
editor_meter_peak_display.show(); transport_tearoff_hbox.remove (editor_meter_peak_display);
} else if (editor_meter && !show && meter_box.get_parent()) { }
transport_tearoff_hbox.remove (meter_box);
transport_tearoff_hbox.remove (editor_meter_peak_display); if (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();
}
} }
} }
} }