Properly propagate TAV TimeSelection

This commit is contained in:
Robin Gareus 2017-07-21 15:49:28 +02:00
parent 8400ebd175
commit 3d50563620
5 changed files with 26 additions and 0 deletions

View File

@ -889,6 +889,19 @@ AutomationTimeAxisView::add_line (boost::shared_ptr<AutomationLine> line)
line->add_visibility (AutomationLine::Line);
}
bool
AutomationTimeAxisView::propagate_time_selection () const
{
/* MIDI automation is part of the MIDI region. It is always
* implicily selected with the parent, regardless of TAV selection
*/
if (_parameter.type() >= MidiCCAutomation &&
_parameter.type() <= MidiChannelPressureAutomation) {
return true;
}
return false;
}
void
AutomationTimeAxisView::entered()
{

View File

@ -189,6 +189,8 @@ protected:
bool ignore_state_request;
bool ignore_mode_request;
bool propagate_time_selection () const;
void automation_state_changed ();
void set_interpolation (ARDOUR::AutomationList::InterpolationStyle);

View File

@ -1324,6 +1324,10 @@ MidiTimeAxisView::create_automation_child (const Evoral::Parameter& param, bool
}
add_automation_child (param, track, show);
if (selected ()) {
reshow_selection (_editor.get_selection().time);
}
break;
case PanWidthAutomation:

View File

@ -822,6 +822,9 @@ TimeAxisView::show_selection (TimeSelection& ts)
for (Children::iterator i = children.begin(); i != children.end(); ++i) {
if (!(*i)->selected () && !(*i)->propagate_time_selection ()) {
continue;
}
(*i)->show_selection (ts);
}
@ -879,6 +882,9 @@ TimeAxisView::reshow_selection (TimeSelection& ts)
show_selection (ts);
for (Children::iterator i = children.begin(); i != children.end(); ++i) {
if (!(*i)->selected () && !(*i)->propagate_time_selection ()) {
continue;
}
(*i)->show_selection (ts);
}
}

View File

@ -289,6 +289,7 @@ class TimeAxisView : public virtual AxisView
Children children;
bool is_child (TimeAxisView*);
virtual bool propagate_time_selection () const { return false; }
virtual void remove_child (boost::shared_ptr<TimeAxisView>);
void add_child (boost::shared_ptr<TimeAxisView>);