pianoroll: correctly hide (etc.) automation when switching regions

This commit is contained in:
Paul Davis
2026-01-07 09:16:35 -07:00
parent 8b7c897c21
commit 51256ad7c6
2 changed files with 23 additions and 0 deletions

View File

@@ -465,6 +465,20 @@ PianorollMidiView::have_visible_automation () const
return false;
}
void
PianorollMidiView::hide_all_automation ()
{
unset_active_automation ();
for (auto & [parameter,ads] : automation_map) {
ads.hide ();
}
automation_map.clear ();
delete velocity_display;
velocity_display = nullptr;
}
void
PianorollMidiView::toggle_visibility (Evoral::Parameter const & param)
{
@@ -936,3 +950,10 @@ PianorollMidiView::cut_copy_clear_one (AutomationLine& line, ::Selection& select
}
}
}
void
PianorollMidiView::set_region (std::shared_ptr<MidiRegion> mr)
{
MidiView::set_region (mr);
hide_all_automation ();
}

View File

@@ -50,6 +50,7 @@ class PianorollMidiView : public MidiView
~PianorollMidiView();
void set_region (std::shared_ptr<ARDOUR::MidiRegion>);
void set_samples_per_pixel (double);
void set_height (double);
@@ -61,6 +62,7 @@ class PianorollMidiView : public MidiView
void ghost_sync_selection (NoteBase*);
void toggle_visibility (Evoral::Parameter const & param);
void hide_all_automation ();
void swap_automation_channel (int);
void set_active_automation (Evoral::Parameter const &);
bool is_active_automation (Evoral::Parameter const &) const;