if (_view) {
_view->set_automation_state (state);
+
+ /* AutomationStreamViews don't signal when their automation state changes, so handle
+ our updates `manually'.
+ */
+ automation_state_changed ();
}
}
/* update button label */
- if (!_line) {
- state = Off;
- } else {
+ if (_line) {
state = _control->alist()->automation_state ();
+ } else if (_view) {
+ state = _view->automation_state ();
+ } else {
+ state = Off;
}
switch (state & (Off|Play|Touch|Write)) {
if (_line) {
_line->set_interpolation(style);
}
+
+ if (_view) {
+ _view->set_interpolation (style);
+ }
}
void
if (_line) {
_line->set_interpolation(style);
}
+ if (_view) {
+ _view->set_interpolation (style);
+ }
}
void
AutomationTimeAxisView::clear_clicked ()
{
- _session->begin_reversible_command (_("clear automation"));
if (_line) {
+ _session->begin_reversible_command (_("clear automation"));
_line->clear ();
}
- _session->commit_reversible_command ();
}
void
AutomationTimeAxisView::set_height (uint32_t h)
{
- bool changed = (height != (uint32_t) h) || first_call_to_set_height;
- bool changed_between_small_and_normal = (
- (height < hNormal && h >= hNormal)
- || (height >= hNormal || h < hNormal) );
+ bool const changed = (height != (uint32_t) h) || first_call_to_set_height;
+ uint32_t const normal = preset_height (HeightNormal);
+ bool const changed_between_small_and_normal = ( (height < normal && h >= normal) || (height >= normal || h < normal) );
TimeAxisView* state_parent = get_parent_with_state ();
assert(state_parent);
first_call_to_set_height = false;
- if (h >= hNormal) {
+ if (h >= preset_height (HeightNormal)) {
controls_table.remove (name_hbox);
if (plugname) {
auto_button.show();
hide_button.show_all();
- } else if (h >= hSmall) {
+ } else if (h >= preset_height (HeightSmall)) {
controls_table.remove (name_hbox);
if (plugname) {
if (plugname_packed) {
auto_button.hide();
hide_button.hide();
}
- } else if (h >= hNormal){
+ } else if (h >= preset_height (HeightNormal)) {
cerr << "track grown, but neither changed_between_small_and_normal nor first_call_to_set_height set!" << endl;
}
return changed;
}
+
+/** @return true if this view has any automation data to display */
+bool
+AutomationTimeAxisView::has_automation () const
+{
+ return ( (_line && _line->npoints() > 0) || (_view && _view->has_automation()) );
+}