follow session track-number policy in mixer strip, as is done in the editor
authorPaul Davis <paul@linuxaudiosystems.com>
Tue, 8 Mar 2016 19:56:51 +0000 (14:56 -0500)
committerPaul Davis <paul@linuxaudiosystems.com>
Tue, 31 May 2016 19:30:40 +0000 (15:30 -0400)
gtk2_ardour/mixer_strip.cc
gtk2_ardour/mixer_strip.h

index 7896c4bd0e4429681f9c7b332ffdc8360d21b77a..e5d9231ef830561d535bdfc0afbbb10f2d9e32f7 100644 (file)
@@ -656,6 +656,7 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt)
        name_changed ();
        comment_changed ();
        route_group_changed ();
+       update_track_number_visibility ();
 
        connect_to_pan ();
        panners.setup_pan ();
@@ -2261,11 +2262,9 @@ MixerStrip::parameter_changed (string p)
                   our VisibilityGroup to reflect these changes in our widgets.
                */
                _visibility.set_state (UIConfiguration::instance().get_mixer_strip_visibility ());
-       }
-       else if (p == "track-name-number") {
+       } else if (p == "track-name-number") {
                name_changed ();
-       }
-       else if (p == "use-monitor-bus") {
+       } else if (p == "use-monitor-bus") {
                if (monitor_section_button) {
                        if (mute_button->get_parent()) {
                                mute_button->get_parent()->remove(*mute_button);
@@ -2283,6 +2282,8 @@ MixerStrip::parameter_changed (string p)
                                mute_button->show();
                        }
                }
+       } else if (p == "track-name-number") {
+               update_track_number_visibility();
        }
 }
 
@@ -2579,3 +2580,28 @@ MixerStrip::vca_button_release (GdkEventButton* ev)
 
        return true;
 }
+
+void
+MixerStrip::update_track_number_visibility ()
+{
+       DisplaySuspender ds;
+       bool show_label = _session->config.get_track_name_number();
+
+       if (_route && _route->is_master()) {
+               show_label = false;
+       }
+
+       if (show_label) {
+               number_label.show ();
+               // see ArdourButton::on_size_request(), we should probably use a global size-group here instead.
+               // except the width of the number label is subtracted from the name-hbox, so we
+               // need to explictly calculate it anyway until the name-label & entry become ArdourWidgets.
+               int tnw = (2 + std::max(2u, _session->track_number_decimals())) * number_label.char_pixel_width();
+               if (tnw & 1) --tnw;
+               number_label.set_size_request(tnw, -1);
+               number_label.show ();
+               //name_hbox.set_size_request(TimeAxisView::name_width_px - 2 - tnw, -1); // -2 = cellspacing
+       } else {
+               number_label.hide ();
+       }
+}
index ec08670259d9e2ed3dd0890c3f04e4d9f0b861dc..af1caf3e66a5401f8ce79f575b339fd10c0c87cd 100644 (file)
@@ -324,6 +324,8 @@ class MixerStrip : public RouteUI, public Gtk::EventBox
 
        void vca_menu_toggle (Gtk::CheckMenuItem*, uint32_t n);
        bool vca_button_release (GdkEventButton* ev);
+
+       void update_track_number_visibility ();
 };
 
 #endif /* __ardour_mixer_strip__ */