From 829d798759aca4505682ed816a7c8feddf5ebd17 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sun, 26 Jan 2025 15:49:41 -0700 Subject: [PATCH] use _track_canvas_width not _visible_canvas_width for zoom math in Pianoroll The latter is the width of the entire canvas including the pianoroll header --- gtk2_ardour/editing_context.cc | 8 ++++---- gtk2_ardour/pianoroll.cc | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/gtk2_ardour/editing_context.cc b/gtk2_ardour/editing_context.cc index ab7a3e3921..998ceb0dbe 100644 --- a/gtk2_ardour/editing_context.cc +++ b/gtk2_ardour/editing_context.cc @@ -2510,7 +2510,7 @@ void EditingContext::reset_zoom (samplecnt_t spp) { std::pair ext = max_zoom_extent(); - samplecnt_t max_extents_pp = (max_extents_scale() * (ext.second.samples() - ext.first.samples())) / _visible_canvas_width; + samplecnt_t max_extents_pp = (ext.second.samples() - ext.first.samples()) / _track_canvas_width; if (spp > max_extents_pp) { spp = max_extents_pp; @@ -2879,7 +2879,7 @@ EditingContext::temporal_zoom_step_scale (bool zoom_out, double scale) //zoom-behavior-tweaks //limit our maximum zoom to the session gui extents value std::pair ext = max_zoom_extent(); - samplecnt_t session_extents_pp = (ext.second.samples() - ext.first.samples()) / _visible_canvas_width; + samplecnt_t session_extents_pp = (ext.second.samples() - ext.first.samples()) / _track_canvas_width; if (nspp > session_extents_pp) { nspp = session_extents_pp; } @@ -3033,7 +3033,7 @@ EditingContext::calc_extra_zoom_edges (samplepos_t &start, samplepos_t &end) const double one_centimeter_in_pixels = pix_per_mm * 10.0; const samplepos_t range = end - start; - const samplecnt_t new_fpp = (samplecnt_t) ceil ((double) range / (double) _visible_canvas_width); + const samplecnt_t new_fpp = (samplecnt_t) ceil ((double) range / (double) _track_canvas_width); const samplepos_t extra_samples = (samplepos_t) floor (one_centimeter_in_pixels * new_fpp); if (start > extra_samples) { @@ -3061,7 +3061,7 @@ EditingContext::temporal_zoom_by_sample (samplepos_t start, samplepos_t end) samplepos_t range = end - start; - const samplecnt_t new_fpp = (samplecnt_t) ceil ((double) range / (double) _visible_canvas_width); + const samplecnt_t new_fpp = (samplecnt_t) ceil ((double) range / (double) _track_canvas_width); samplepos_t new_page = range; samplepos_t middle = (samplepos_t) floor ((double) start + ((double) range / 2.0f)); diff --git a/gtk2_ardour/pianoroll.cc b/gtk2_ardour/pianoroll.cc index 497a8c6164..24ea320fa8 100644 --- a/gtk2_ardour/pianoroll.cc +++ b/gtk2_ardour/pianoroll.cc @@ -573,7 +573,7 @@ Pianoroll::set_samples_per_pixel (samplecnt_t spp) samplecnt_t Pianoroll::current_page_samples() const { - return (samplecnt_t) _visible_canvas_width* samples_per_pixel; + return (samplecnt_t) _track_canvas_width * samples_per_pixel; } bool @@ -2019,6 +2019,7 @@ Pianoroll::zoom_to_show (Temporal::timecnt_t const & duration) /* make it 20% wider than we need */ samplecnt_t samples = (samplecnt_t) floor (max_extents_scale() * duration.samples()); samplecnt_t spp = floor (samples / _visible_canvas_width); + samplecnt_t spp = floor (samples / _track_canvas_width); reset_zoom (spp); }