fix logic for display of transport bar meters
authorPaul Davis <paul@linuxaudiosystems.com>
Fri, 13 Dec 2013 15:52:15 +0000 (10:52 -0500)
committerPaul Davis <paul@linuxaudiosystems.com>
Fri, 13 Dec 2013 15:52:15 +0000 (10:52 -0500)
Always remove from parent (if there is one), then repack if necessary.

gtk2_ardour/ardour_ui_dialogs.cc
gtk2_ardour/ardour_ui_options.cc

index 0dd61778aecd0af5769d4e846d4ae7096a9b52fb..b0ac528b794ace1d5f5b0b9290f85ffbf2443742 100644 (file)
@@ -186,6 +186,11 @@ ARDOUR_UI::set_session (Session *s)
 
        update_format ();
 
+       if (meter_box.get_parent()) {
+               transport_tearoff_hbox.remove (meter_box);
+               transport_tearoff_hbox.remove (editor_meter_peak_display);
+       }
+
        if (editor_meter) {
                meter_box.remove(*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);
                        meter_box.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
index c531f006e2758e8e634f0c7c4589e11c0db655ed..423b685bad119205a4b9a6eeae4e31fdc38d1fa0 100644 (file)
@@ -401,14 +401,19 @@ ARDOUR_UI::parameter_changed (std::string p)
                start_clocking ();
        } 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.get_parent()) {
-                       transport_tearoff_hbox.remove (meter_box);
-                       transport_tearoff_hbox.remove (editor_meter_peak_display);
+
+               if (editor_meter) {
+                       if (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();
+                       } 
                }
        }
 }