diff --git a/aegisub/src/audio_box.cpp b/aegisub/src/audio_box.cpp index 5922a0ea4..5809cb740 100644 --- a/aegisub/src/audio_box.cpp +++ b/aegisub/src/audio_box.cpp @@ -155,8 +155,7 @@ void AudioBox::OnMouseWheel(wxMouseEvent &evt) { return; bool zoom = evt.CmdDown() != OPT_GET("Audio/Wheel Default to Zoom")->GetBool(); - if (!zoom) - { + if (!zoom) { int amount = -evt.GetWheelRotation() * GetClientSize().GetWidth() / (evt.GetWheelDelta() * 3); // If the user did a horizontal scroll the amount should be inverted @@ -171,15 +170,11 @@ void AudioBox::OnMouseWheel(wxMouseEvent &evt) { audioDisplay->ScrollBy(amount); } - else if (evt.GetWheelAxis() == 0) - { + else if (evt.GetWheelAxis() == 0) { mouse_zoom_accum += evt.GetWheelRotation(); int zoom_delta = mouse_zoom_accum / evt.GetWheelDelta(); mouse_zoom_accum %= evt.GetWheelDelta(); - int new_zoom = audioDisplay->GetZoomLevel() + zoom_delta; - audioDisplay->SetZoomLevel(new_zoom); - HorizontalZoom->SetValue(-new_zoom); - OPT_SET("Audio/Zoom/Horizontal")->SetInt(new_zoom); + SetHorizontalZoom(audioDisplay->GetZoomLevel() + zoom_delta); } } @@ -201,10 +196,15 @@ void AudioBox::OnSashDrag(wxSashEvent &event) { } void AudioBox::OnHorizontalZoom(wxScrollEvent &event) { - // Negate the value, we want zoom out to be on bottom and zoom in on top, + // Negate the value since we want zoom out to be on bottom and zoom in on top, // but the control doesn't want negative on bottom and positive on top. - audioDisplay->SetZoomLevel(-event.GetPosition()); - OPT_SET("Audio/Zoom/Horizontal")->SetInt(event.GetPosition()); + SetHorizontalZoom(-event.GetPosition()); +} + +void AudioBox::SetHorizontalZoom(int new_zoom) { + audioDisplay->SetZoomLevel(new_zoom); + HorizontalZoom->SetValue(-new_zoom); + OPT_SET("Audio/Zoom/Horizontal")->SetInt(new_zoom); } void AudioBox::OnVerticalZoom(wxScrollEvent &event) { diff --git a/aegisub/src/audio_box.h b/aegisub/src/audio_box.h index 669a6e746..e7584965c 100644 --- a/aegisub/src/audio_box.h +++ b/aegisub/src/audio_box.h @@ -85,6 +85,7 @@ class AudioBox : public wxSashWindow { // Mouse wheel zoom accumulator int mouse_zoom_accum; + void SetHorizontalZoom(int new_zoom); void OnAudioOpen(); void OnHorizontalZoom(wxScrollEvent &event); void OnMouseWheel(wxMouseEvent &evt);