summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2014-05-28 12:18:30 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2014-05-28 12:18:37 -0400
commit24537477c4c544d0d308f9348396469241918100 (patch)
tree45f0daac6e7c940c3f5ccb236de367dfeacc064b /gtk2_ardour
parentf1f8f89fcb9312065a818233dff4a3f1871fa7fe (diff)
fix up operation of Editor::temporal_zoom_to_frame() which had not been updated since samples_per_pixel was changed to an integer (framecnt_t)
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/editor_ops.cc36
1 files changed, 27 insertions, 9 deletions
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index 8719a33453..e6b4fee43e 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -1777,23 +1777,41 @@ Editor::temporal_zoom_to_frame (bool coarser, framepos_t frame)
if (!_session) {
return;
}
- double range_before = frame - leftmost_frame;
- double new_fpp;
- new_fpp = samples_per_pixel;
+ framecnt_t range_before = frame - leftmost_frame;
+ framecnt_t new_spp;
if (coarser) {
- new_fpp *= 1.61803399;
- range_before *= 1.61803399;
+ if (samples_per_pixel <= 1) {
+ new_spp = 2;
+ } else {
+ new_spp = samples_per_pixel + (samples_per_pixel/2);
+ }
+ range_before += range_before/2;
} else {
- new_fpp = max(1.0,(new_fpp/1.61803399));
- range_before /= 1.61803399;
+ if (samples_per_pixel >= 1) {
+ new_spp = samples_per_pixel - (samples_per_pixel/2);
+ } else {
+ /* could bail out here since we cannot zoom any finer,
+ but leave that to the clamp_samples_per_pixel() and
+ equality test below
+ */
+ new_spp = samples_per_pixel;
+ }
+
+ range_before -= range_before/2;
}
- if (new_fpp == samples_per_pixel) {
+ clamp_samples_per_pixel (new_spp);
+
+ if (new_spp == samples_per_pixel) {
return;
}
+ /* zoom focus is automatically taken as @param frame when this
+ method is used.
+ */
+
framepos_t new_leftmost = frame - (framepos_t)range_before;
if (new_leftmost > frame) {
@@ -1804,7 +1822,7 @@ Editor::temporal_zoom_to_frame (bool coarser, framepos_t frame)
new_leftmost = 0;
}
- reposition_and_zoom (new_leftmost, new_fpp);
+ reposition_and_zoom (new_leftmost, new_spp);
}