From 86f451ecefe94b9407b7d34ba3521324ec2a4615 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 27 Jan 2025 09:50:28 -0700 Subject: [PATCH] in pianoroll, zoom to show full region when appropriate and possible --- gtk2_ardour/pianoroll.cc | 7 +++++++ gtk2_ardour/pianoroll.h | 2 ++ 2 files changed, 9 insertions(+) diff --git a/gtk2_ardour/pianoroll.cc b/gtk2_ardour/pianoroll.cc index 33a3f3c7c5..b3ec79bc9b 100644 --- a/gtk2_ardour/pianoroll.cc +++ b/gtk2_ardour/pianoroll.cc @@ -69,6 +69,7 @@ Pianoroll::Pianoroll (std::string const & name) , view (nullptr) , bbt_metric (*this) , _note_mode (Sustained) + , zoom_in_allocate (false) { mouse_mode = Editing::MouseContent; autoscroll_vertical_allowed = false; @@ -511,6 +512,11 @@ Pianoroll::canvas_allocate (Gtk::Allocation alloc) prh->set (ArdourCanvas::Rect (0, 0, prh->x1(), view->midi_context().height())); _track_canvas_width = _visible_canvas_width - prh->x1(); + + if (zoom_in_allocate) { + zoom_to_show (timecnt_t (timepos_t (max_extents_scale() * max_zoom_extent ().second.samples()))); + zoom_in_allocate = false; + } } timepos_t @@ -2009,6 +2015,7 @@ void Pianoroll::zoom_to_show (Temporal::timecnt_t const & duration) { if (!_visible_canvas_width) { + zoom_in_allocate = true; return; } diff --git a/gtk2_ardour/pianoroll.h b/gtk2_ardour/pianoroll.h index 757f15799e..a2d1524614 100644 --- a/gtk2_ardour/pianoroll.h +++ b/gtk2_ardour/pianoroll.h @@ -283,4 +283,6 @@ class Pianoroll : public CueEditor void point_selection_changed (); bool enter (GdkEventCrossing*); + + bool zoom_in_allocate; };