Use LV2_SUPPORT define instead of HAVE_SLV2.
[ardour.git] / gtk2_ardour / time_axis_view.cc
index 3cf1377c3bb93492aa336e5eae53107c4e02926c..c2774d5e4fbf77def5cf55c900b1e64560ad6db3 100644 (file)
@@ -75,6 +75,7 @@ PBD::Signal1<void,TimeAxisView*> TimeAxisView::CatchDeletion;
 TimeAxisView::TimeAxisView (ARDOUR::Session* sess, PublicEditor& ed, TimeAxisView* rent, Canvas& /*canvas*/)
        : AxisView (sess)
        , controls_table (2, 8)
+       , _controls_padding_table (3, 3)
        , _size_menu (0)
        , _y_position (0)
        , _editor (ed)
@@ -134,7 +135,6 @@ TimeAxisView::TimeAxisView (ARDOUR::Session* sess, PublicEditor& ed, TimeAxisVie
        name_hbox.show ();
 
        controls_table.set_size_request (200);
-       controls_table.set_border_width (2);
        controls_table.set_row_spacings (0);
        controls_table.set_col_spacings (0);
        controls_table.set_homogeneous (true);
@@ -161,7 +161,16 @@ TimeAxisView::TimeAxisView (ARDOUR::Session* sess, PublicEditor& ed, TimeAxisVie
 
        HSeparator* separator = manage (new HSeparator());
 
-       controls_vbox.pack_start (controls_table, false, false);
+       /* Use a rather hacky extra table so that we can control the space above/below and
+        * left/right of the controls_table separately.  This in turn is so that we can
+        * shrink the vertical space when the track is at its minimum height.
+        */
+       _controls_padding_table.set_row_spacings (2);
+       _controls_padding_table.set_col_spacings (0);
+       _controls_padding_table.attach (controls_table, 1, 2, 1, 2);
+       _controls_padding_table.show ();
+       
+       controls_vbox.pack_start (_controls_padding_table, false, false);
        controls_vbox.pack_end (resizer_box, false, false);
        controls_vbox.show ();
 
@@ -428,9 +437,13 @@ TimeAxisView::set_heights (uint32_t h)
 }
 
 void
-TimeAxisView::set_height_enum (Height h)
+TimeAxisView::set_height_enum (Height h, bool apply_to_selection)
 {
-       set_height (preset_height (h));
+       if (apply_to_selection) {
+               _editor.get_selection().tracks.foreach_time_axis (boost::bind (&TimeAxisView::set_height_enum, _1, h, false));
+       } else {
+               set_height (preset_height (h));
+       }
 }
 
 void
@@ -613,11 +626,9 @@ TimeAxisView::conditionally_add_to_selection ()
 void
 TimeAxisView::popup_display_menu (guint32 when)
 {
-       if (display_menu == 0) {
-               build_display_menu ();
-       }
-
        conditionally_add_to_selection ();
+
+       build_display_menu ();
        display_menu->popup (1, when);
 }
 
@@ -1141,7 +1152,7 @@ TimeAxisView::hide_name_entry ()
 void
 TimeAxisView::color_handler ()
 {
-       for (list<GhostRegion*>::iterator i=ghosts.begin(); i != ghosts.end(); i++ ) {
+       for (list<GhostRegion*>::iterator i = ghosts.begin(); i != ghosts.end(); i++) {
                (*i)->set_colors();
        }
 
@@ -1352,9 +1363,11 @@ TimeAxisView::get_child_list ()
 void
 TimeAxisView::build_size_menu ()
 {
-       if (_size_menu) {
+       if (_size_menu && _size_menu->gobj ()) {
                return;
        }
+
+       delete _size_menu;
        
        using namespace Menu_Helpers;
 
@@ -1362,10 +1375,10 @@ TimeAxisView::build_size_menu ()
        _size_menu->set_name ("ArdourContextMenu");
        MenuList& items = _size_menu->items();
        
-       items.push_back (MenuElem (_("Largest"), sigc::bind (sigc::mem_fun (*this, &TimeAxisView::set_height_enum), HeightLargest)));
-       items.push_back (MenuElem (_("Larger"),  sigc::bind (sigc::mem_fun (*this, &TimeAxisView::set_height_enum), HeightLarger)));
-       items.push_back (MenuElem (_("Large"),   sigc::bind (sigc::mem_fun (*this, &TimeAxisView::set_height_enum), HeightLarge)));
-       items.push_back (MenuElem (_("Normal"),  sigc::bind (sigc::mem_fun (*this, &TimeAxisView::set_height_enum), HeightNormal)));
-       items.push_back (MenuElem (_("Smaller"), sigc::bind (sigc::mem_fun (*this, &TimeAxisView::set_height_enum), HeightSmaller)));
-       items.push_back (MenuElem (_("Small"),   sigc::bind (sigc::mem_fun (*this, &TimeAxisView::set_height_enum), HeightSmall)));
+       items.push_back (MenuElem (_("Largest"), sigc::bind (sigc::mem_fun (*this, &TimeAxisView::set_height_enum), HeightLargest, true)));
+       items.push_back (MenuElem (_("Larger"),  sigc::bind (sigc::mem_fun (*this, &TimeAxisView::set_height_enum), HeightLarger, true)));
+       items.push_back (MenuElem (_("Large"),   sigc::bind (sigc::mem_fun (*this, &TimeAxisView::set_height_enum), HeightLarge, true)));
+       items.push_back (MenuElem (_("Normal"),  sigc::bind (sigc::mem_fun (*this, &TimeAxisView::set_height_enum), HeightNormal, true)));
+       items.push_back (MenuElem (_("Smaller"), sigc::bind (sigc::mem_fun (*this, &TimeAxisView::set_height_enum), HeightSmaller, true)));
+       items.push_back (MenuElem (_("Small"),   sigc::bind (sigc::mem_fun (*this, &TimeAxisView::set_height_enum), HeightSmall, true)));
 }