Set the horizontal zoom option consistently

Always store the actual zoom level, rather than sometimes the zoom level
and sometimes the slider position.

Updates #1597.
This commit is contained in:
Thomas Goyne 2013-06-05 18:54:39 -07:00
parent 4ad4a754a3
commit cfe28b9ad6
2 changed files with 12 additions and 11 deletions

View File

@ -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) {

View File

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