fix another #warning from the pianorule refactoring

There is one single place in AutomationLine code where we need to callback
to its AutomationTimeAxisView, if it is part of one, regarding automation
state. This permits that to happen
This commit is contained in:
Paul Davis 2025-03-16 15:43:11 -06:00
parent 6af9d08f69
commit dd3683bc06
5 changed files with 36 additions and 18 deletions

View file

@ -112,6 +112,7 @@ AutomationLine::AutomationLine (const string& name,
, _desc (desc) , _desc (desc)
, _control_points_inherit_color (true) , _control_points_inherit_color (true)
, _sensitive (true) , _sensitive (true)
, atv (nullptr)
{ {
group = new ArdourCanvas::Container (&parent, ArdourCanvas::Duple(0, 1.5)); group = new ArdourCanvas::Container (&parent, ArdourCanvas::Duple(0, 1.5));
CANVAS_DEBUG_NAME (group, "automation line group"); CANVAS_DEBUG_NAME (group, "automation line group");
@ -1628,8 +1629,9 @@ AutomationLine::add (std::shared_ptr<AutomationControl> control, GdkEvent* event
if (alist->editor_add (when, y, with_guard_points)) { if (alist->editor_add (when, y, with_guard_points)) {
if (control->automation_state () == ARDOUR::Off) { if (control->automation_state () == ARDOUR::Off) {
#warning paul make this work again .. call back to ATV or similar if (atv) {
// set_automation_state (ARDOUR::Play); atv->set_automation_state (ARDOUR::Play);
}
} }
if (UIConfiguration::instance().get_automation_edit_cancels_auto_hide () && control == session->recently_touched_controllable ()) { if (UIConfiguration::instance().get_automation_edit_cancels_auto_hide () && control == session->recently_touched_controllable ()) {
@ -1647,3 +1649,9 @@ AutomationLine::add (std::shared_ptr<AutomationControl> control, GdkEvent* event
session->set_dirty (); session->set_dirty ();
} }
} }
void
AutomationLine::set_atv (AutomationTimeAxisView& a)
{
atv = &a;
}

View file

@ -78,6 +78,9 @@ public:
virtual ~AutomationLine (); virtual ~AutomationLine ();
void set_atv (AutomationTimeAxisView&);
virtual Temporal::timepos_t get_origin () const; virtual Temporal::timepos_t get_origin () const;
ArdourCanvas::Rectangle* drag_base() const { return _drag_base; } ArdourCanvas::Rectangle* drag_base() const { return _drag_base; }
@ -271,6 +274,7 @@ private:
const ARDOUR::ParameterDescriptor _desc; const ARDOUR::ParameterDescriptor _desc;
bool _control_points_inherit_color; bool _control_points_inherit_color;
bool _sensitive; bool _sensitive;
AutomationTimeAxisView* atv;
friend class AudioRegionGainLine; friend class AudioRegionGainLine;
friend class RegionFxLine; friend class RegionFxLine;

View file

@ -34,15 +34,21 @@ using namespace ARDOUR;
/** @param converter A TimeConverter whose origin_b is the start time of the AutomationList in session samples. /** @param converter A TimeConverter whose origin_b is the start time of the AutomationList in session samples.
* This will not be deleted by EditorAutomationLine. * This will not be deleted by EditorAutomationLine.
*/ */
EditorAutomationLine::EditorAutomationLine (const string& name, EditorAutomationLine::EditorAutomationLine (const string& name,
TimeAxisView& tv, TimeAxisView& tv,
ArdourCanvas::Item& parent, ArdourCanvas::Item& parent,
std::shared_ptr<AutomationList> al, std::shared_ptr<AutomationList> al,
const ParameterDescriptor& desc) const ParameterDescriptor& desc)
: AutomationLine (name, tv.editor(), parent, nullptr, al, desc) : AutomationLine (name, tv.editor(), parent, nullptr, al, desc)
, trackview (tv) , trackview (tv)
{ {
line->set_data ("trackview", &trackview); line->set_data ("trackview", &trackview);
AutomationTimeAxisView* atv = dynamic_cast<AutomationTimeAxisView*> (&tv);
if (atv) {
set_atv (*atv);
}
} }
EditorAutomationLine::~EditorAutomationLine () EditorAutomationLine::~EditorAutomationLine ()

View file

@ -63,11 +63,11 @@ class PublicEditor;
class EditorAutomationLine : public AutomationLine class EditorAutomationLine : public AutomationLine
{ {
public: public:
EditorAutomationLine (const std::string& name, EditorAutomationLine (const std::string& name,
TimeAxisView& tv, TimeAxisView& tv,
ArdourCanvas::Item& parent, ArdourCanvas::Item& parent,
std::shared_ptr<ARDOUR::AutomationList> al, std::shared_ptr<ARDOUR::AutomationList> al,
const ARDOUR::ParameterDescriptor& desc); const ARDOUR::ParameterDescriptor& desc);
virtual ~EditorAutomationLine (); virtual ~EditorAutomationLine ();

View file

@ -32,12 +32,12 @@
using namespace std; using namespace std;
MidiAutomationLine::MidiAutomationLine ( MidiAutomationLine::MidiAutomationLine (
const std::string& name, const std::string& name,
TimeAxisView& tav, TimeAxisView& tav,
ArdourCanvas::Item& parent, ArdourCanvas::Item& parent,
std::shared_ptr<ARDOUR::AutomationList> list, std::shared_ptr<ARDOUR::AutomationList> list,
std::shared_ptr<ARDOUR::MidiRegion> region, std::shared_ptr<ARDOUR::MidiRegion> region,
Evoral::Parameter parameter) Evoral::Parameter parameter)
: EditorAutomationLine (name, tav, parent, list, parameter) : EditorAutomationLine (name, tav, parent, list, parameter)
, _region (region) , _region (region)
, _parameter (parameter) , _parameter (parameter)