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
This commit is contained in:
Paul Davis
2025-01-26 15:49:41 -07:00
parent eff21bb3e9
commit 829d798759
2 changed files with 6 additions and 5 deletions

View File

@@ -2510,7 +2510,7 @@ void
EditingContext::reset_zoom (samplecnt_t spp)
{
std::pair<timepos_t, timepos_t> 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<timepos_t, timepos_t> 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));

View File

@@ -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);
}