From 4aedc6f882b2b519a4e9e7942fe8a29416ff894d Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 13 Jun 2025 17:19:30 -0600 Subject: [PATCH] make sure Pianoroll background gets the data range set when a region is set --- gtk2_ardour/pianoroll.cc | 2 ++ gtk2_ardour/pianoroll_background.cc | 11 +++++++++++ gtk2_ardour/pianoroll_background.h | 1 + 3 files changed, 14 insertions(+) diff --git a/gtk2_ardour/pianoroll.cc b/gtk2_ardour/pianoroll.cc index c4b5a50b2e..1a29ff8d2f 100644 --- a/gtk2_ardour/pianoroll.cc +++ b/gtk2_ardour/pianoroll.cc @@ -2651,6 +2651,8 @@ Pianoroll::set_region (std::shared_ptr r) zoom_to_show (timecnt_t (timepos_t (max_extents_scale() * max_zoom_extent ().second.samples()))); } + bg->display_region (*view); + _update_connection = Timers::rapid_connect (sigc::mem_fun (*this, &Pianoroll::maybe_update)); } diff --git a/gtk2_ardour/pianoroll_background.cc b/gtk2_ardour/pianoroll_background.cc index f6e5d33f3a..7f6bf5553a 100644 --- a/gtk2_ardour/pianoroll_background.cc +++ b/gtk2_ardour/pianoroll_background.cc @@ -20,6 +20,9 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include "ardour/smf_source.h" +#include "ardour/midi_region.h" + #include "pianoroll.h" #include "pianoroll_background.h" #include "midi_view.h" @@ -101,3 +104,11 @@ PianorollMidiBackground::apply_note_range_to_children () view->apply_note_range (lowest_note(), highest_note()); } } + +void +PianorollMidiBackground::display_region (MidiView& mv) +{ + std::shared_ptr smf (std::dynamic_pointer_cast (mv.midi_region()->source())); + assert (smf); + (void) update_data_note_range (smf->model()->lowest_note(), smf->model()->highest_note()); +} diff --git a/gtk2_ardour/pianoroll_background.h b/gtk2_ardour/pianoroll_background.h index 53be8a8fbb..8eab64e525 100644 --- a/gtk2_ardour/pianoroll_background.h +++ b/gtk2_ardour/pianoroll_background.h @@ -49,6 +49,7 @@ class PianorollMidiBackground : public MidiViewBackground void set_size (int w, int h); void set_view (MidiView*); + void display_region (MidiView&); ARDOUR::InstrumentInfo* instrument_info() const;