Skip to content
Extraits de code Groupes Projets
Valider cfe28b9a rédigé par Thomas Goyne's avatar Thomas Goyne
Parcourir les fichiers

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.
parent 4ad4a754
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -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) {
......
......@@ -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);
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter