From 130cfd2e08f694b3a87bba543a6237c31f776e1d Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 2 May 2025 09:40:38 -0600 Subject: [PATCH] catch hscroll in pianoroll appropriately Some thought might be put into thinking about why/whether EditingContext ought to do this instead, since Editor does almost the same thing, but without using the horizontal_adjustment owned by EditingContext --- gtk2_ardour/pianoroll.cc | 10 ++++++++++ gtk2_ardour/pianoroll.h | 1 + 2 files changed, 11 insertions(+) diff --git a/gtk2_ardour/pianoroll.cc b/gtk2_ardour/pianoroll.cc index bbb70210d6..9f5d91c832 100644 --- a/gtk2_ardour/pianoroll.cc +++ b/gtk2_ardour/pianoroll.cc @@ -265,9 +265,19 @@ Pianoroll::add_multi_controller_item (Gtk::Menu_Helpers::MenuList&, } +void +Pianoroll::scrolled () +{ + pending_visual_change.add (VisualChange::TimeOrigin); + pending_visual_change.time_origin = horizontal_adjustment.get_value() * samples_per_pixel; + ensure_visual_change_idle_handler (); +} + void Pianoroll::build_lower_toolbar () { + horizontal_adjustment.signal_value_changed().connect (sigc::mem_fun (*this, &Pianoroll::scrolled)); + ArdourButton::Element elements = ArdourButton::Element (ArdourButton::Text|ArdourButton::Indicator|ArdourButton::Edge|ArdourButton::Body); _canvas_hscrollbar = manage (new Gtk::HScrollbar (horizontal_adjustment)); diff --git a/gtk2_ardour/pianoroll.h b/gtk2_ardour/pianoroll.h index 82ea8df40f..4762f1db53 100644 --- a/gtk2_ardour/pianoroll.h +++ b/gtk2_ardour/pianoroll.h @@ -346,4 +346,5 @@ class Pianoroll : public CueEditor bool bbt_ruler_event (GdkEvent*); void ruler_locate (GdkEventButton*); + void scrolled (); };