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)
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);
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 ();
}
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
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);
}
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();
}
void
TimeAxisView::build_size_menu ()
{
- if (_size_menu) {
+ if (_size_menu && _size_menu->gobj ()) {
return;
}
+
+ delete _size_menu;
using namespace Menu_Helpers;
_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)));
}