From 30cd87bcb3b0a1b0a8486e4dff509c0958f63ab5 Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Wed, 8 Dec 2010 08:09:37 +0000 Subject: [PATCH] When zooming, fix the center sample in place Originally committed to SVN as r4910. --- aegisub/src/audio_display.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/aegisub/src/audio_display.cpp b/aegisub/src/audio_display.cpp index 3ee66f7ae..8d9b4dbd0 100644 --- a/aegisub/src/audio_display.cpp +++ b/aegisub/src/audio_display.cpp @@ -678,6 +678,9 @@ void AudioDisplay::SetZoomLevel(int new_zoom_level) if (pixel_samples != new_samples_per_pixel) { + int client_width = GetClientSize().GetWidth(); + int64_t center_sample = int64_t(scroll_left + client_width / 2) * pixel_samples; + pixel_samples = new_samples_per_pixel; audio_renderer->SetSamplesPerPixel(pixel_samples); @@ -686,9 +689,11 @@ void AudioDisplay::SetZoomLevel(int new_zoom_level) else pixel_audio_width = 1; - scrollbar->ChangeLengths(pixel_audio_width, GetClientSize().GetWidth()); + scrollbar->ChangeLengths(pixel_audio_width, client_width); timeline->ChangeZoom(pixel_samples); + ScrollSampleToCenter(center_sample); + Refresh(); } }