fix track-header vertical scrolling
[ardour.git] / gtk2_ardour / route_time_axis.cc
index 9a166d2c0d550a07996ffa8f73977496eaa6e6ff..0e384b6d97e38cc4749f12bf6d94d17267eeaa0b 100644 (file)
@@ -108,10 +108,11 @@ RouteTimeAxisView::RouteTimeAxisView (PublicEditor& ed, Session* sess, ArdourCan
        , gm (sess, true, 75, 14)
        , _ignore_set_layer_display (false)
 {
-       number_label.set_name("route button");
+       number_label.set_name("tracknumber label");
        number_label.set_elements((ArdourButton::Element)(ArdourButton::Edge|ArdourButton::Body|ArdourButton::Text|ArdourButton::Inactive));
        number_label.set_alignment(.5, .5);
        number_label.set_fallthrough_to_parent (true);
+       track_number_v_size_group->add_widget(number_label);
 
        sess->config.ParameterChanged.connect (*this, invalidator (*this), boost::bind (&RouteTimeAxisView::parameter_changed, this, _1), gui_context());
 }
@@ -167,18 +168,6 @@ RouteTimeAxisView::set_route (boost::shared_ptr<Route> rt)
 
        if (is_track()) {
 
-               /* use icon */
-               
-               switch (track()->mode()) {
-               case ARDOUR::Normal:
-               case ARDOUR::NonLayered:
-                       rec_enable_button->set_elements ((ArdourButton::Element)(ArdourButton::Edge|ArdourButton::Body|ArdourButton::RecButton));
-                       break;
-               case ARDOUR::Destructive:
-                       rec_enable_button->set_elements ((ArdourButton::Element)(ArdourButton::Edge|ArdourButton::Body|ArdourButton::RecButton|ArdourButton::RecTapeMode));
-                       break;
-               }
-
                if (ARDOUR::Profile->get_mixbus()) {
                        controls_table.attach (*rec_enable_button, 0, 1, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0);
                } else {
@@ -229,6 +218,7 @@ RouteTimeAxisView::set_route (boost::shared_ptr<Route> rt)
                controls_table.attach (*mute_button, 3, 4, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 0, 0);
        }
        controls_button_size_group->add_widget(*mute_button);
+       track_number_v_size_group->add_widget(*mute_button);
 
        if (!_route->is_master()) {
                if (ARDOUR::Profile->get_mixbus()) {
@@ -263,6 +253,13 @@ RouteTimeAxisView::set_route (boost::shared_ptr<Route> rt)
        ARDOUR_UI::instance()->set_tip(*mute_button,_("Mute"));
        ARDOUR_UI::instance()->set_tip(route_group_button, _("Route Group"));
 
+       mute_button->set_tweaks(ArdourButton::Square);
+       solo_button->set_tweaks(ArdourButton::Square);
+       rec_enable_button->set_tweaks(ArdourButton::Square);
+       playlist_button.set_tweaks(ArdourButton::Square);
+       automation_button.set_tweaks(ArdourButton::Square);
+       route_group_button.set_tweaks(ArdourButton::Square);
+
        if (is_midi_track()) {
                ARDOUR_UI::instance()->set_tip(automation_button, _("MIDI Controllers and Automation"));
        } else {
@@ -322,8 +319,6 @@ RouteTimeAxisView::set_route (boost::shared_ptr<Route> rt)
 
        route_group_menu = new RouteGroupMenu (_session, plist);
 
-       gm.get_gain_slider().signal_scroll_event().connect(sigc::mem_fun(*this, &RouteTimeAxisView::controls_ebox_scroll), false);
-
        gm.get_level_meter().signal_scroll_event().connect (sigc::mem_fun (*this, &RouteTimeAxisView::controls_ebox_scroll), false);
 }
 
@@ -427,13 +422,17 @@ RouteTimeAxisView::update_track_number_visibility ()
                } else {
                        controls_table.attach (number_label, 0, 1, 0, 1, Gtk::SHRINK, Gtk::SHRINK, 1, 0);
                }
-               const int tnw = 9 + std::max(2u, _session->track_number_decimals()) * number_label.char_pixel_width();
+               // 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, 0); // -2 = cellspacing
+               name_hbox.set_size_request(TimeAxisView::name_width_px - 2 - tnw, -1); // -2 = cellspacing
        } else {
                number_label.hide ();
-               name_hbox.set_size_request(TimeAxisView::name_width_px, 0);
+               name_hbox.set_size_request(TimeAxisView::name_width_px, -1);
        }
 }
 
@@ -853,20 +852,6 @@ RouteTimeAxisView::set_track_mode (TrackMode mode, bool apply_to_selection)
                }
 
                track()->set_mode (mode);
-
-               rec_enable_button->remove ();
-
-               switch (mode) {
-               case ARDOUR::NonLayered:
-               case ARDOUR::Normal:
-                       rec_enable_button->set_elements ((ArdourButton::Element)(ArdourButton::Edge|ArdourButton::Body|ArdourButton::RecButton));
-                       break;
-               case ARDOUR::Destructive:
-                       rec_enable_button->set_elements ((ArdourButton::Element)(ArdourButton::Edge|ArdourButton::Body|ArdourButton::RecButton|ArdourButton::RecTapeMode));
-                       break;
-               }
-
-               rec_enable_button->show_all ();
        }
 }